From 7475c9ba20f6da5e41c3470232ff6bb5c1d1a01e Mon Sep 17 00:00:00 2001 From: Cinder Date: Sun, 2 Jan 2022 09:51:14 -0600 Subject: [PATCH] Add LslTools project --- .../LibreMetaverse.LslTools.csproj | 42 + LibreMetaverse.LslTools/ObjectList.cs | 122 + LibreMetaverse.LslTools/Tools/AddToFunc.cs | 30 + LibreMetaverse.LslTools/Tools/Arc.cs | 56 + LibreMetaverse.LslTools/Tools/ArcEx.cs | 53 + LibreMetaverse.LslTools/Tools/Builder.cs | 30 + .../Tools/CSToolsException.cs | 89 + .../Tools/CSToolsFatalException.cs | 66 + .../Tools/CSToolsStopException.cs | 71 + LibreMetaverse.LslTools/Tools/CSymbol.cs | 228 + LibreMetaverse.LslTools/Tools/CatTest.cs | 45 + LibreMetaverse.LslTools/Tools/ChTest.cs | 30 + LibreMetaverse.LslTools/Tools/Charset.cs | 106 + LibreMetaverse.LslTools/Tools/CommentList.cs | 42 + LibreMetaverse.LslTools/Tools/CsReader.cs | 251 + LibreMetaverse.LslTools/Tools/Dfa.cs | 305 + LibreMetaverse.LslTools/Tools/EOF.cs | 62 + LibreMetaverse.LslTools/Tools/ErrorHandler.cs | 56 + LibreMetaverse.LslTools/Tools/Func.cs | 30 + LibreMetaverse.LslTools/Tools/GenBase.cs | 245 + LibreMetaverse.LslTools/Tools/LNode.cs | 44 + LibreMetaverse.LslTools/Tools/Lexer.cs | 328 + LibreMetaverse.LslTools/Tools/LineList.cs | 53 + LibreMetaverse.LslTools/Tools/LineManager.cs | 65 + LibreMetaverse.LslTools/Tools/Literal.cs | 105 + LibreMetaverse.LslTools/Tools/NList.cs | 69 + LibreMetaverse.LslTools/Tools/Nfa.cs | 46 + LibreMetaverse.LslTools/Tools/NfaNode.cs | 70 + LibreMetaverse.LslTools/Tools/Null.cs | 45 + .../Tools/ParseStackEntry.cs | 47 + LibreMetaverse.LslTools/Tools/ParseState.cs | 274 + LibreMetaverse.LslTools/Tools/Parser.cs | 238 + LibreMetaverse.LslTools/Tools/ParserAction.cs | 87 + LibreMetaverse.LslTools/Tools/ParserEntry.cs | 67 + .../Tools/ParserOldAction.cs | 77 + LibreMetaverse.LslTools/Tools/ParserReduce.cs | 113 + LibreMetaverse.LslTools/Tools/ParserShift.cs | 84 + .../Tools/ParserSimpleAction.cs | 65 + LibreMetaverse.LslTools/Tools/ParsingInfo.cs | 65 + LibreMetaverse.LslTools/Tools/Path.cs | 83 + LibreMetaverse.LslTools/Tools/Precedence.cs | 116 + LibreMetaverse.LslTools/Tools/ProdItem.cs | 111 + LibreMetaverse.LslTools/Tools/ProdItemList.cs | 69 + LibreMetaverse.LslTools/Tools/Production.cs | 119 + LibreMetaverse.LslTools/Tools/ReAlt.cs | 76 + LibreMetaverse.LslTools/Tools/ReCat.cs | 94 + LibreMetaverse.LslTools/Tools/ReCategory.cs | 57 + LibreMetaverse.LslTools/Tools/ReOpt.cs | 58 + LibreMetaverse.LslTools/Tools/RePlus.cs | 67 + LibreMetaverse.LslTools/Tools/ReRange.cs | 135 + LibreMetaverse.LslTools/Tools/ReStar.cs | 69 + LibreMetaverse.LslTools/Tools/ReStr.cs | 83 + LibreMetaverse.LslTools/Tools/ReUStr.cs | 81 + LibreMetaverse.LslTools/Tools/Regex.cs | 330 + LibreMetaverse.LslTools/Tools/Relation.cs | 32 + LibreMetaverse.LslTools/Tools/ResWds.cs | 104 + LibreMetaverse.LslTools/Tools/SCreator.cs | 30 + LibreMetaverse.LslTools/Tools/SYMBOL.cs | 158 + LibreMetaverse.LslTools/Tools/Serialiser.cs | 367 + LibreMetaverse.LslTools/Tools/Sfactory.cs | 69 + .../Tools/SourceLineInfo.cs | 92 + LibreMetaverse.LslTools/Tools/SymbolSet.cs | 139 + LibreMetaverse.LslTools/Tools/SymbolType.cs | 72 + LibreMetaverse.LslTools/Tools/SymbolsGen.cs | 76 + LibreMetaverse.LslTools/Tools/TCreator.cs | 30 + LibreMetaverse.LslTools/Tools/TOKEN.cs | 108 + LibreMetaverse.LslTools/Tools/Tfactory.cs | 65 + LibreMetaverse.LslTools/Tools/TokClassDef.cs | 69 + LibreMetaverse.LslTools/Tools/TokensGen.cs | 54 + LibreMetaverse.LslTools/Tools/Transition.cs | 207 + LibreMetaverse.LslTools/Tools/UArc.cs | 52 + LibreMetaverse.LslTools/Tools/YyLexer.cs | 291 + LibreMetaverse.LslTools/Tools/YyParser.cs | 139 + LibreMetaverse.LslTools/Tools/error.cs | 59 + .../Tools/recoveredError.cs | 59 + LibreMetaverse.LslTools/YYClass/ANY.cs | 42 + LibreMetaverse.LslTools/YYClass/BASE.cs | 42 + LibreMetaverse.LslTools/YYClass/BaseCall.cs | 42 + LibreMetaverse.LslTools/YYClass/BaseCall_1.cs | 38 + LibreMetaverse.LslTools/YYClass/BaseCall_2.cs | 38 + .../YYClass/BaseCall_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/BaseCall_3.cs | 38 + LibreMetaverse.LslTools/YYClass/BaseCall_4.cs | 38 + .../YYClass/BaseCall_4_1.cs | 39 + LibreMetaverse.LslTools/YYClass/BaseCall_5.cs | 38 + LibreMetaverse.LslTools/YYClass/BaseCall_6.cs | 38 + .../YYClass/BaseCall_6_1.cs | 39 + LibreMetaverse.LslTools/YYClass/COLON.cs | 42 + LibreMetaverse.LslTools/YYClass/Call.cs | 42 + LibreMetaverse.LslTools/YYClass/Call_1.cs | 37 + LibreMetaverse.LslTools/YYClass/Call_2.cs | 38 + LibreMetaverse.LslTools/YYClass/Call_2_1.cs | 44 + LibreMetaverse.LslTools/YYClass/ClassBody.cs | 42 + .../YYClass/ClassBody_1.cs | 38 + .../YYClass/ClassBody_2.cs | 38 + .../YYClass/ClassBody_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Cons.cs | 42 + LibreMetaverse.LslTools/YYClass/Cons_1.cs | 38 + LibreMetaverse.LslTools/YYClass/Cons_2.cs | 38 + LibreMetaverse.LslTools/YYClass/Cons_2_1.cs | 63 + LibreMetaverse.LslTools/YYClass/GStuff.cs | 42 + LibreMetaverse.LslTools/YYClass/GStuff_1.cs | 38 + LibreMetaverse.LslTools/YYClass/GStuff_2.cs | 37 + LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/GStuff_3.cs | 38 + LibreMetaverse.LslTools/YYClass/GStuff_4.cs | 38 + LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs | 39 + LibreMetaverse.LslTools/YYClass/GStuff_5.cs | 38 + LibreMetaverse.LslTools/YYClass/GStuff_6.cs | 38 + LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs | 39 + LibreMetaverse.LslTools/YYClass/ID.cs | 42 + LibreMetaverse.LslTools/YYClass/Item.cs | 42 + LibreMetaverse.LslTools/YYClass/Item_1.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_10.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_10_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_11.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_12.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_12_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_13.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_14.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_14_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_15.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_16.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_16_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_17.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_18.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_18_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_19.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_2.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_20.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_20_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_21.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_22.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_22_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_23.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_24.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_24_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_3.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_4.cs | 37 + LibreMetaverse.LslTools/YYClass/Item_4_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_5.cs | 37 + LibreMetaverse.LslTools/YYClass/Item_6.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_6_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_7.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_8.cs | 38 + LibreMetaverse.LslTools/YYClass/Item_8_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Item_9.cs | 38 + LibreMetaverse.LslTools/YYClass/LBRACE.cs | 42 + LibreMetaverse.LslTools/YYClass/LBRACK.cs | 42 + LibreMetaverse.LslTools/YYClass/LPAREN.cs | 42 + LibreMetaverse.LslTools/YYClass/NEW.cs | 42 + LibreMetaverse.LslTools/YYClass/Name.cs | 42 + LibreMetaverse.LslTools/YYClass/Name_1.cs | 38 + LibreMetaverse.LslTools/YYClass/Name_2.cs | 38 + LibreMetaverse.LslTools/YYClass/Name_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Name_3.cs | 38 + LibreMetaverse.LslTools/YYClass/Name_4.cs | 38 + LibreMetaverse.LslTools/YYClass/Name_4_1.cs | 39 + LibreMetaverse.LslTools/YYClass/RBRACE.cs | 42 + LibreMetaverse.LslTools/YYClass/RBRACK.cs | 41 + LibreMetaverse.LslTools/YYClass/RPAREN.cs | 41 + LibreMetaverse.LslTools/YYClass/SEMICOLON.cs | 42 + LibreMetaverse.LslTools/YYClass/Stuff.cs | 42 + LibreMetaverse.LslTools/YYClass/Stuff_1.cs | 38 + LibreMetaverse.LslTools/YYClass/Stuff_2.cs | 38 + LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs | 39 + LibreMetaverse.LslTools/YYClass/Stuff_3.cs | 38 + LibreMetaverse.LslTools/YYClass/Stuff_4.cs | 38 + LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs | 39 + LibreMetaverse.LslTools/YYClass/THIS.cs | 42 + LibreMetaverse.LslTools/YYClass/cs0syntax.cs | 54 + LibreMetaverse.LslTools/YYClass/cs0tokens.cs | 50 + .../YYClass/yycs0syntax.cs | 6958 ++++++++++++ .../YYClass/yycs0tokens.cs | 9495 +++++++++++++++++ LibreMetaverse.sln | 14 + 176 files changed, 28072 insertions(+) create mode 100644 LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj create mode 100644 LibreMetaverse.LslTools/ObjectList.cs create mode 100644 LibreMetaverse.LslTools/Tools/AddToFunc.cs create mode 100644 LibreMetaverse.LslTools/Tools/Arc.cs create mode 100644 LibreMetaverse.LslTools/Tools/ArcEx.cs create mode 100644 LibreMetaverse.LslTools/Tools/Builder.cs create mode 100644 LibreMetaverse.LslTools/Tools/CSToolsException.cs create mode 100644 LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs create mode 100644 LibreMetaverse.LslTools/Tools/CSToolsStopException.cs create mode 100644 LibreMetaverse.LslTools/Tools/CSymbol.cs create mode 100644 LibreMetaverse.LslTools/Tools/CatTest.cs create mode 100644 LibreMetaverse.LslTools/Tools/ChTest.cs create mode 100644 LibreMetaverse.LslTools/Tools/Charset.cs create mode 100644 LibreMetaverse.LslTools/Tools/CommentList.cs create mode 100644 LibreMetaverse.LslTools/Tools/CsReader.cs create mode 100644 LibreMetaverse.LslTools/Tools/Dfa.cs create mode 100644 LibreMetaverse.LslTools/Tools/EOF.cs create mode 100644 LibreMetaverse.LslTools/Tools/ErrorHandler.cs create mode 100644 LibreMetaverse.LslTools/Tools/Func.cs create mode 100644 LibreMetaverse.LslTools/Tools/GenBase.cs create mode 100644 LibreMetaverse.LslTools/Tools/LNode.cs create mode 100644 LibreMetaverse.LslTools/Tools/Lexer.cs create mode 100644 LibreMetaverse.LslTools/Tools/LineList.cs create mode 100644 LibreMetaverse.LslTools/Tools/LineManager.cs create mode 100644 LibreMetaverse.LslTools/Tools/Literal.cs create mode 100644 LibreMetaverse.LslTools/Tools/NList.cs create mode 100644 LibreMetaverse.LslTools/Tools/Nfa.cs create mode 100644 LibreMetaverse.LslTools/Tools/NfaNode.cs create mode 100644 LibreMetaverse.LslTools/Tools/Null.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParseStackEntry.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParseState.cs create mode 100644 LibreMetaverse.LslTools/Tools/Parser.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserAction.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserEntry.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserOldAction.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserReduce.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserShift.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs create mode 100644 LibreMetaverse.LslTools/Tools/ParsingInfo.cs create mode 100644 LibreMetaverse.LslTools/Tools/Path.cs create mode 100644 LibreMetaverse.LslTools/Tools/Precedence.cs create mode 100644 LibreMetaverse.LslTools/Tools/ProdItem.cs create mode 100644 LibreMetaverse.LslTools/Tools/ProdItemList.cs create mode 100644 LibreMetaverse.LslTools/Tools/Production.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReAlt.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReCat.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReCategory.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReOpt.cs create mode 100644 LibreMetaverse.LslTools/Tools/RePlus.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReRange.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReStar.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReStr.cs create mode 100644 LibreMetaverse.LslTools/Tools/ReUStr.cs create mode 100644 LibreMetaverse.LslTools/Tools/Regex.cs create mode 100644 LibreMetaverse.LslTools/Tools/Relation.cs create mode 100644 LibreMetaverse.LslTools/Tools/ResWds.cs create mode 100644 LibreMetaverse.LslTools/Tools/SCreator.cs create mode 100644 LibreMetaverse.LslTools/Tools/SYMBOL.cs create mode 100644 LibreMetaverse.LslTools/Tools/Serialiser.cs create mode 100644 LibreMetaverse.LslTools/Tools/Sfactory.cs create mode 100644 LibreMetaverse.LslTools/Tools/SourceLineInfo.cs create mode 100644 LibreMetaverse.LslTools/Tools/SymbolSet.cs create mode 100644 LibreMetaverse.LslTools/Tools/SymbolType.cs create mode 100644 LibreMetaverse.LslTools/Tools/SymbolsGen.cs create mode 100644 LibreMetaverse.LslTools/Tools/TCreator.cs create mode 100644 LibreMetaverse.LslTools/Tools/TOKEN.cs create mode 100644 LibreMetaverse.LslTools/Tools/Tfactory.cs create mode 100644 LibreMetaverse.LslTools/Tools/TokClassDef.cs create mode 100644 LibreMetaverse.LslTools/Tools/TokensGen.cs create mode 100644 LibreMetaverse.LslTools/Tools/Transition.cs create mode 100644 LibreMetaverse.LslTools/Tools/UArc.cs create mode 100644 LibreMetaverse.LslTools/Tools/YyLexer.cs create mode 100644 LibreMetaverse.LslTools/Tools/YyParser.cs create mode 100644 LibreMetaverse.LslTools/Tools/error.cs create mode 100644 LibreMetaverse.LslTools/Tools/recoveredError.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ANY.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BASE.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_3.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_4.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_5.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_6.cs create mode 100644 LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/COLON.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Call.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Call_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Call_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Call_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ClassBody.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ClassBody_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ClassBody_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Cons.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Cons_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Cons_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Cons_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_3.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_4.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_5.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_6.cs create mode 100644 LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/ID.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_10.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_10_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_11.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_12.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_12_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_13.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_14.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_14_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_15.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_16.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_16_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_17.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_18.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_18_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_19.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_20.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_20_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_21.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_22.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_22_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_23.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_24.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_24_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_3.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_4.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_4_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_5.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_6.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_6_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_7.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_8.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_8_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Item_9.cs create mode 100644 LibreMetaverse.LslTools/YYClass/LBRACE.cs create mode 100644 LibreMetaverse.LslTools/YYClass/LBRACK.cs create mode 100644 LibreMetaverse.LslTools/YYClass/LPAREN.cs create mode 100644 LibreMetaverse.LslTools/YYClass/NEW.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_3.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_4.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Name_4_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/RBRACE.cs create mode 100644 LibreMetaverse.LslTools/YYClass/RBRACK.cs create mode 100644 LibreMetaverse.LslTools/YYClass/RPAREN.cs create mode 100644 LibreMetaverse.LslTools/YYClass/SEMICOLON.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_2.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_3.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_4.cs create mode 100644 LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs create mode 100644 LibreMetaverse.LslTools/YYClass/THIS.cs create mode 100644 LibreMetaverse.LslTools/YYClass/cs0syntax.cs create mode 100644 LibreMetaverse.LslTools/YYClass/cs0tokens.cs create mode 100644 LibreMetaverse.LslTools/YYClass/yycs0syntax.cs create mode 100644 LibreMetaverse.LslTools/YYClass/yycs0tokens.cs diff --git a/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj b/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj new file mode 100644 index 00000000..9f432d04 --- /dev/null +++ b/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj @@ -0,0 +1,42 @@ + + + netstandard2.0;netstandard2.1;net5.0 + LibreMetaverse.LslTools + LibreMetaverse.LslTools + Lexer for LSL scrripting language. + Tools + true + true + snupkg + 0419,1574,1591 + x64;x86 + + + TRACE;DEBUG + False + + + TRACE;DEBUG + + + TRACE;DEBUG + + + true + pdbonly + TRACE + True + + + true + pdbonly + TRACE + True + + + true + pdbonly + TRACE + True + + diff --git a/LibreMetaverse.LslTools/ObjectList.cs b/LibreMetaverse.LslTools/ObjectList.cs new file mode 100644 index 00000000..c55fe2d4 --- /dev/null +++ b/LibreMetaverse.LslTools/ObjectList.cs @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse +{ + + public class ObjectList + { + private ObjectList.Link head; + private ObjectList.Link last; + private int count; + + private void Add0(ObjectList.Link a) + { + if (this.head == null) + this.head = this.last = a; + else + this.last = this.last.next = a; + } + + private object Get0(ObjectList.Link a, int x) + { + if (a == null || x < 0) + return (object)null; + if (x == 0) + return a.it; + return this.Get0(a.next, x - 1); + } + + public void Add(object o) + { + this.Add0(new ObjectList.Link(o, (ObjectList.Link)null)); + ++this.count; + } + + public void Push(object o) + { + this.head = new ObjectList.Link(o, this.head); + ++this.count; + } + + public object Pop() + { + object it = this.head.it; + this.head = this.head.next; + --this.count; + return it; + } + + public object Top => this.head.it; + + public int Count => this.count; + + public object this[int ix] => this.Get0(this.head, ix); + + public IEnumerator GetEnumerator() + { + return (IEnumerator)new ObjectList.OListEnumerator(this); + } + + private class Link + { + internal object it; + internal ObjectList.Link next; + + internal Link(object o, ObjectList.Link x) + { + this.it = o; + this.next = x; + } + } + + public class OListEnumerator : IEnumerator + { + private ObjectList list; + private ObjectList.Link cur; + + public OListEnumerator(ObjectList o) + { + this.list = o; + } + + public object Current => this.cur.it; + + public bool MoveNext() + { + this.cur = this.cur != null ? this.cur.next : this.list.head; + return this.cur != null; + } + + public void Reset() + { + this.cur = (ObjectList.Link)null; + } + } + } +} \ No newline at end of file diff --git a/LibreMetaverse.LslTools/Tools/AddToFunc.cs b/LibreMetaverse.LslTools/Tools/AddToFunc.cs new file mode 100644 index 00000000..afbe2074 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/AddToFunc.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public delegate void AddToFunc(Transition a, SymbolSet s); +} diff --git a/LibreMetaverse.LslTools/Tools/Arc.cs b/LibreMetaverse.LslTools/Tools/Arc.cs new file mode 100644 index 00000000..70362d59 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Arc.cs @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class Arc + { + public char m_ch; + public NfaNode m_next; + + public Arc() + { + } + + public Arc(char ch, NfaNode next) + { + this.m_ch = ch; + this.m_next = next; + } + + public virtual bool Match(char ch) + { + return (int) ch == (int) this.m_ch; + } + + public virtual void Print(TextWriter s) + { + s.WriteLine(string.Format(" {0} {1}", (object) this.m_ch, (object) this.m_next.m_state)); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ArcEx.cs b/LibreMetaverse.LslTools/Tools/ArcEx.cs new file mode 100644 index 00000000..642014a7 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ArcEx.cs @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ArcEx : Arc + { + public Regex m_ref; + + public ArcEx(Regex re, NfaNode next) + { + this.m_ref = re; + this.m_next = next; + } + + public override bool Match(char ch) + { + return this.m_ref.Match(ch); + } + + public override void Print(TextWriter s) + { + s.Write(" "); + this.m_ref.Print(s); + s.WriteLine(this.m_next.m_state); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Builder.cs b/LibreMetaverse.LslTools/Tools/Builder.cs new file mode 100644 index 00000000..8f472da5 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Builder.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public delegate void Builder(Transition t); +} diff --git a/LibreMetaverse.LslTools/Tools/CSToolsException.cs b/LibreMetaverse.LslTools/Tools/CSToolsException.cs new file mode 100644 index 00000000..f05b83ea --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CSToolsException.cs @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class CSToolsException : Exception + { + public int nExceptionNumber; + public SourceLineInfo slInfo; + public string sInput; + public SYMBOL sym; + public bool handled; + + public CSToolsException(int n, string s) + : this(n, new SourceLineInfo(0), "", s) + { + } + + public CSToolsException(int n, Lexer yl, string s) + : this(n, yl, yl.yytext, s) + { + } + + public CSToolsException(int n, Lexer yl, string yy, string s) + : this(n, yl, yl.m_pch, yy, s) + { + } + + public CSToolsException(int n, TOKEN t, string s) + : this(n, t.yylx, t.pos, t.yytext, s) + { + this.sym = (SYMBOL) t; + } + + public CSToolsException(int n, SYMBOL t, string s) + : this(n, t.yylx, t.pos, t.yyname, s) + { + this.sym = t; + } + + public CSToolsException(int en, Lexer yl, int p, string y, string s) + : this(en, yl.sourceLineInfo(p), y, s) + { + } + + public CSToolsException(int en, SourceLineInfo s, string y, string m) + : base(s.ToString() + ": " + m) + { + this.nExceptionNumber = en; + this.slInfo = s; + this.sInput = y; + } + + public virtual void Handle(ErrorHandler erh) + { + if (erh.throwExceptions) + throw this; + if (this.handled) + return; + this.handled = true; + erh.Report(this); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs b/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs new file mode 100644 index 00000000..b53bf842 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class CSToolsFatalException : CSToolsException + { + public CSToolsFatalException(int n, string s) + : base(n, s) + { + } + + public CSToolsFatalException(int n, Lexer yl, string s) + : base(n, yl, yl.yytext, s) + { + } + + public CSToolsFatalException(int n, Lexer yl, string yy, string s) + : base(n, yl, yl.m_pch, yy, s) + { + } + + public CSToolsFatalException(int n, Lexer yl, int p, string y, string s) + : base(n, yl, p, y, s) + { + } + + public CSToolsFatalException(int n, TOKEN t, string s) + : base(n, t, s) + { + } + + public CSToolsFatalException(int en, SourceLineInfo s, string y, string m) + : base(en, s, y, m) + { + } + + public override void Handle(ErrorHandler erh) + { + throw this; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs b/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs new file mode 100644 index 00000000..fc43ec65 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class CSToolsStopException : CSToolsException + { + public CSToolsStopException(int n, string s) + : base(n, s) + { + } + + public CSToolsStopException(int n, Lexer yl, string s) + : base(n, yl, yl.yytext, s) + { + } + + public CSToolsStopException(int n, Lexer yl, string yy, string s) + : base(n, yl, yl.m_pch, yy, s) + { + } + + public CSToolsStopException(int n, Lexer yl, int p, string y, string s) + : base(n, yl, p, y, s) + { + } + + public CSToolsStopException(int n, TOKEN t, string s) + : base(n, t, s) + { + } + + public CSToolsStopException(int n, SYMBOL t, string s) + : base(n, t, s) + { + } + + public CSToolsStopException(int en, SourceLineInfo s, string y, string m) + : base(en, s, y, m) + { + } + + public override void Handle(ErrorHandler erh) + { + throw this; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CSymbol.cs b/LibreMetaverse.LslTools/Tools/CSymbol.cs new file mode 100644 index 00000000..78bc2489 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CSymbol.cs @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class CSymbol : TOKEN + { + public int m_yynum = -1; + public ObjectList m_prods = new ObjectList(); + public string m_initialisation = ""; + public CSymbol.SymType m_symtype; + public SymbolsGen m_parser; + public Precedence m_prec; + public SymbolSet m_first; + public SymbolSet m_follow; + private object isNullable; + public CSymbol m_refSymbol; + public bool m_defined; + public bool m_emitted; + public Production m_prod; + + public CSymbol(Lexer yyl) + : base(yyl) + { + } + + public CSymbol(SymbolsGen yyp) + : base(yyp.m_lexer) + { + this.m_parser = yyp; + this.m_symtype = CSymbol.SymType.unknown; + this.m_prec = (Precedence) null; + this.m_prod = (Production) null; + this.m_refSymbol = (CSymbol) null; + this.m_first = new SymbolSet(yyp); + this.m_follow = new SymbolSet(yyp); + } + + protected CSymbol() + { + } + + public override bool IsTerminal() + { + return this.m_symtype == CSymbol.SymType.terminal; + } + + public virtual CSymbol Resolve() + { + if (this.yytext == "EOF") + this.m_yynum = 2; + CSymbol symbol = (CSymbol) this.m_parser.m_symbols.symbols[(object) this.yytext]; + if (symbol != null) + return symbol; + if (this.m_yynum < 0) + this.m_yynum = ++this.m_parser.LastSymbol; + this.m_parser.m_symbols.symbols[(object) this.yytext] = (object) this; + return this; + } + + public override bool Matches(string s) + { + return false; + } + + internal ParseState Next(ParseState p) + { + if (!p.m_transitions.Contains((object) this.yytext)) + return (ParseState) null; + return ((Transition) p.m_transitions[(object) this.yytext]).m_next?.m_next; + } + + internal Hashtable Reduce(ParseState p) + { + if (!p.m_transitions.Contains((object) this.yytext)) + return (Hashtable) null; + return ((Transition) p.m_transitions[(object) this.yytext]).m_reduce; + } + + public virtual string TypeStr() + { + return this.yytext; + } + + public Precedence.PrecType ShiftPrecedence(Production prod, ParseState ps) + { + if (prod == null || !prod.m_lhs.m_follow.Contains(this)) + return Precedence.PrecType.left; + if (this.m_prec == null) + { + Console.WriteLine("Shift/Reduce conflict {0} on reduction {1} in state {2}", (object) this.yytext, (object) prod.m_pno, (object) ps.m_state); + return Precedence.PrecType.left; + } + if (this.m_prec.m_type == Precedence.PrecType.nonassoc) + return Precedence.PrecType.nonassoc; + int num = Precedence.Check(this, prod, 0); + if (num == 0) + return Precedence.Check(this.m_prec, Precedence.PrecType.right, 0) != 0 ? Precedence.PrecType.left : Precedence.PrecType.right; + return num > 0 ? Precedence.PrecType.left : Precedence.PrecType.right; + } + + public bool AddFollow(SymbolSet map) + { + bool flag = false; + foreach (CSymbol key in (IEnumerable) map.Keys) + flag |= this.m_follow.CheckIn(key); + return flag; + } + + public void AddStartItems(ParseState pstate, SymbolSet follows) + { + foreach (var p in this.m_prods) + { + Production prod = (Production) p; + pstate.MaybeAdd(new ProdItem(prod, 0)); + } + } + + public bool IsNullable() + { + if (this.isNullable == null) + { + switch (this.m_symtype) + { + case CSymbol.SymType.terminal: + this.isNullable = (object) false; + break; + case CSymbol.SymType.nonterminal: + this.isNullable = (object) false; + IEnumerator enumerator = this.m_prods.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + Production current = (Production) enumerator.Current; + bool flag = true; + foreach (CSymbol rh in current.m_rhs) + { + if (!rh.IsNullable()) + { + flag = false; + break; + } + } + if (flag) + { + this.isNullable = (object) true; + break; + } + } + break; + } + finally + { + (enumerator as IDisposable)?.Dispose(); + } + case CSymbol.SymType.oldaction: + this.isNullable = (object) true; + break; + case CSymbol.SymType.simpleaction: + this.isNullable = (object) true; + break; + case CSymbol.SymType.eofsymbol: + this.isNullable = (object) false; + break; + default: + throw new Exception("unexpected symbol type"); + } + } + return (bool) this.isNullable; + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new CSymbol(); + CSymbol csymbol = (CSymbol) o; + if (s.Encode) + { + s.Serialise((object) csymbol.yytext); + s.Serialise((object) csymbol.m_yynum); + s.Serialise((object) (int) csymbol.m_symtype); + return (object) null; + } + csymbol.yytext = (string) s.Deserialise(); + csymbol.m_yynum = (int) s.Deserialise(); + csymbol.m_symtype = (CSymbol.SymType) s.Deserialise(); + return (object) csymbol; + } + + public enum SymType + { + unknown, + terminal, + nonterminal, + nodesymbol, + oldaction, + simpleaction, + eofsymbol, + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CatTest.cs b/LibreMetaverse.LslTools/Tools/CatTest.cs new file mode 100644 index 00000000..624c543b --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CatTest.cs @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Globalization; + +namespace LibreMetaverse.LslTools +{ + public class CatTest + { + private UnicodeCategory cat; + + public CatTest(UnicodeCategory c) + { + this.cat = c; + } + + public bool Test(char ch) + { + return char.GetUnicodeCategory(ch) == this.cat; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ChTest.cs b/LibreMetaverse.LslTools/Tools/ChTest.cs new file mode 100644 index 00000000..797bdfbf --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ChTest.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + internal delegate bool ChTest(char ch); +} diff --git a/LibreMetaverse.LslTools/Tools/Charset.cs b/LibreMetaverse.LslTools/Tools/Charset.cs new file mode 100644 index 00000000..bb308a5e --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Charset.cs @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Globalization; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + public class Charset + { + internal Hashtable m_chars = new Hashtable(); + internal UnicodeCategory m_cat; + internal char m_generic; + + private Charset() + { + } + + internal Charset(UnicodeCategory cat) + { + this.m_cat = cat; + this.m_generic = char.MinValue; + while (char.GetUnicodeCategory(this.m_generic) != cat) + ++this.m_generic; + this.m_chars[(object) this.m_generic] = (object) true; + } + + public static Encoding GetEncoding(string enc, ref bool toupper, ErrorHandler erh) + { + string str1 = enc; + if (str1 != null) + { + string str2 = string.IsInterned(str1); + if ((object) str2 == (object) "") + return Encoding.Default; + if ((object) str2 == (object) "ASCII") + return Encoding.ASCII; + if ((object) str2 == (object) "ASCIICAPS") + { + toupper = true; + return Encoding.ASCII; + } + if ((object) str2 == (object) "UTF7") + return Encoding.UTF7; + if ((object) str2 == (object) "UTF8") + return Encoding.UTF8; + if ((object) str2 == (object) "Unicode") + return Encoding.Unicode; + } + try + { + if (char.IsDigit(enc[0])) + return Encoding.GetEncoding(int.Parse(enc)); + return Encoding.GetEncoding(enc); + } + catch (Exception) + { + erh.Error(new CSToolsException(43, "Warning: Encoding " + enc + " unknown: ignored")); + } + return Encoding.ASCII; + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new Charset(); + Charset charset = (Charset) o; + if (s.Encode) + { + s.Serialise((object) (int) charset.m_cat); + s.Serialise((object) charset.m_generic); + s.Serialise((object) charset.m_chars); + return (object) null; + } + charset.m_cat = (UnicodeCategory) s.Deserialise(); + charset.m_generic = (char) s.Deserialise(); + charset.m_chars = (Hashtable) s.Deserialise(); + return (object) charset; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CommentList.cs b/LibreMetaverse.LslTools/Tools/CommentList.cs new file mode 100644 index 00000000..55040ced --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CommentList.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class CommentList + { + public int spos; + public int len; + public CommentList tail; + + public CommentList(int st, int ln, CommentList t) + { + this.spos = st; + this.len = ln; + this.tail = t; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/CsReader.cs b/LibreMetaverse.LslTools/Tools/CsReader.cs new file mode 100644 index 00000000..78cc6392 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/CsReader.cs @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + public class CsReader + { + public string fname = ""; + public LineManager lm = new LineManager(); + private bool sol = true; + private TextReader m_stream; + private int back; + private CsReader.State state; + private int pos; + + public CsReader(string data) + { + this.m_stream = (TextReader) new StringReader(data); + this.state = CsReader.State.copy; + this.back = -1; + } + + public CsReader(string fileName, Encoding enc) + { + this.fname = fileName; + this.m_stream = (TextReader) new StreamReader((Stream) new FileStream(fileName, FileMode.Open, FileAccess.Read), enc); + this.state = CsReader.State.copy; + this.back = -1; + } + + public CsReader(CsReader inf, Encoding enc) + { + this.fname = inf.fname; + this.m_stream = !(inf.m_stream is StreamReader) ? (TextReader) new StreamReader(inf.m_stream.ReadToEnd()) : (TextReader) new StreamReader(((StreamReader) inf.m_stream).BaseStream, enc); + this.state = CsReader.State.copy; + this.back = -1; + } + + public bool Eof() + { + return this.state == CsReader.State.at_eof; + } + + public int Read(char[] arr, int offset, int count) + { + int num1 = 0; + while (count > 0) + { + int num2 = this.Read(); + if (num2 >= 0) + { + arr[offset + num1] = (char) num2; + --count; + ++num1; + } + else + break; + } + return num1; + } + + public string ReadLine() + { + int num1 = 0; + char[] chArray = new char[1024]; + int num2 = 1024; + int length = 0; + for (; num2 > 0; --num2) + { + num1 = this.Read(); + if ((ushort) num1 != (ushort) 13) + { + if (num1 >= 0 && (ushort) num1 != (ushort) 10) + chArray[length++] = (char) num1; + else + break; + } + } + if (num1 < 0) + this.state = CsReader.State.at_eof; + return new string(chArray, 0, length); + } + + public int Read() + { + int len = 0; + if (this.state == CsReader.State.at_eof) + return -1; + int num; + while (true) + { + do + { + do + { + if (this.back >= 0) + { + num = this.back; + this.back = -1; + } + else + num = this.state != CsReader.State.at_eof ? this.m_stream.Read() : -1; + } + while (num == 13); + while (this.sol && num == 35) + { + while (num != 32) + num = this.m_stream.Read(); + this.lm.lines = 0; + while (num == 32) + num = this.m_stream.Read(); + for (; num >= 48 && num <= 57; num = this.m_stream.Read()) + this.lm.lines = this.lm.lines * 10 + (num - 48); + while (num == 32) + num = this.m_stream.Read(); + if (num == 34) + { + this.fname = ""; + for (num = this.m_stream.Read(); num != 34; num = this.m_stream.Read()) + this.fname += (string) (object) num; + } + while (num != 10) + num = this.m_stream.Read(); + if (num == 13) + num = this.m_stream.Read(); + } + if (num < 0) + { + if (this.state == CsReader.State.sol) + num = 47; + this.state = CsReader.State.at_eof; + ++this.pos; + return num; + } + this.sol = false; + switch (this.state) + { + case CsReader.State.copy: + switch (num) + { + case 10: + this.lm.newline(this.pos); + this.sol = true; + break; + case 47: + this.state = CsReader.State.sol; + continue; + } + ++this.pos; + return num; + case CsReader.State.sol: + switch (num) + { + case 42: + this.state = CsReader.State.c_com; + continue; + case 47: + len = 2; + this.state = CsReader.State.cpp_com; + continue; + default: + this.back = num; + this.state = CsReader.State.copy; + ++this.pos; + return 47; + } + case CsReader.State.c_com: + ++len; + if (num == 10) + { + this.lm.newline(this.pos); + len = 0; + this.sol = true; + } + continue; + case CsReader.State.cpp_com: + goto label_45; + case CsReader.State.c_star: + goto label_41; + default: + continue; + } + } + while (num != 42); + this.state = CsReader.State.c_star; + continue; +label_41: + ++len; + switch (num) + { + case 42: + this.state = CsReader.State.c_star; + continue; + case 47: + this.lm.comment(this.pos, len); + this.state = CsReader.State.copy; + continue; + default: + this.state = CsReader.State.c_com; + continue; + } +label_45: + if (num != 10) + ++len; + else + break; + } + this.state = CsReader.State.copy; + this.sol = true; + ++this.pos; + return num; + } + + private enum State + { + copy, + sol, + c_com, + cpp_com, + c_star, + at_eof, + transparent, + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Dfa.cs b/LibreMetaverse.LslTools/Tools/Dfa.cs new file mode 100644 index 00000000..2f6991e4 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Dfa.cs @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class Dfa : LNode + { + public Hashtable m_map = new Hashtable(); + public string m_tokClass = ""; + public int m_reswds = -1; + internal NList m_nfa = new NList(); + private YyLexer m_tokens; + public Dfa.Action m_actions; + + private Dfa() + { + } + + public Dfa(TokensGen tks) + : base(tks) + { + this.m_tokens = tks.m_tokens; + } + + public Dfa(Nfa nfa) + : base(nfa.m_tks) + { + this.m_tokens = this.m_tks.m_tokens; + this.AddNfaNode((NfaNode) nfa); + this.Closure(); + this.AddActions(); + } + + public static void SetTokens(YyLexer tks, Hashtable h) + { + foreach (Dfa dfa in (IEnumerable) h.Values) + { + if (dfa.m_tokens == null) + { + dfa.m_tokens = tks; + Dfa.SetTokens(tks, dfa.m_map); + } + } + } + + private void AddAction(int act) + { + this.m_actions = new Dfa.Action(act, this.m_actions); + } + + private void MakeLastAction(int act) + { + while (this.m_actions != null && this.m_actions.a_act >= act) + this.m_actions = this.m_actions.a_next; + this.AddAction(act); + } + + internal bool AddNfaNode(NfaNode nfa) + { + if (!this.m_nfa.Add(nfa)) + return false; + if (nfa.m_sTerminal != "") + { + int length = 0; + string str1 = ""; + string sTerminal = nfa.m_sTerminal; + if (sTerminal[0] == '%') + { + length = 0; + int index = 1; + while (index < sTerminal.Length && (sTerminal[index] != ' ' && sTerminal[index] != '\t') && (sTerminal[index] != '\n' && sTerminal[index] != '{' && sTerminal[index] != ':')) + { + ++index; + ++length; + } + str1 = nfa.m_sTerminal.Substring(1, length); + } + if (length > 0 && length + 1 < sTerminal.Length) + { + string str2 = nfa.m_sTerminal.Substring(length + 1).Trim(); + if (str2.Length > 0 && str2.StartsWith("%except")) + { + this.m_reswds = nfa.m_state; + this.m_tks.m_tokens.reswds[(object) nfa.m_state] = (object) ResWds.New(this.m_tks, str2.Substring(7)); + } + } + if (str1 == "") + { + if (this.m_tokClass == "" || this.m_actions.a_act > nfa.m_state) + this.AddAction(nfa.m_state); + } + else if (this.m_actions == null || this.m_actions.a_act > nfa.m_state) + { + this.MakeLastAction(nfa.m_state); + this.m_tokClass = str1; + } + } + return true; + } + + internal void AddActions() + { + this.m_tks.states.Add((object) this); + foreach (Charset charset in (IEnumerable) this.m_tks.m_tokens.cats.Values) + { + foreach (char key in (IEnumerable) charset.m_chars.Keys) + { + Dfa dfa = this.Target(key); + if (dfa != null) + this.m_map[(object) key] = (object) dfa; + } + } + } + + internal Dfa Target(char ch) + { + Dfa dfa = new Dfa(this.m_tks); + for (NList nlist = this.m_nfa; !nlist.AtEnd; nlist = nlist.m_next) + nlist.m_node.AddTarget(ch, dfa); + if (dfa.m_nfa.AtEnd) + return (Dfa) null; + dfa.Closure(); + foreach (var t in this.m_tks.states) + { + if (((Dfa) t).SameAs(dfa)) + return (Dfa) t; + } + dfa.AddActions(); + return dfa; + } + + private void Closure() + { + for (NList nlist = this.m_nfa; !nlist.AtEnd; nlist = nlist.m_next) + this.ClosureAdd(nlist.m_node); + } + + private void ClosureAdd(NfaNode nfa) + { + foreach (var t in nfa.m_eps) + { + NfaNode ep = (NfaNode) t; + if (this.AddNfaNode(ep)) + this.ClosureAdd(ep); + } + } + + internal bool SameAs(Dfa dfa) + { + NList nlist1 = this.m_nfa; + NList nlist2; + for (nlist2 = dfa.m_nfa; nlist1.m_node == nlist2.m_node && !nlist1.AtEnd; nlist2 = nlist2.m_next) + nlist1 = nlist1.m_next; + return nlist1.m_node == nlist2.m_node; + } + + public int Match(string str, int ix, ref int action) + { + Dfa dfa; + int num; + if (ix < str.Length && (dfa = (Dfa) this.m_map[(object) this.m_tokens.Filter(str[ix])]) != null && (num = dfa.Match(str, ix + 1, ref action)) >= 0) + return num + 1; + if (this.m_actions == null) + return -1; + action = this.m_actions.a_act; + return 0; + } + + public void Print() + { + Console.Write("{0}:", (object) this.m_state); + if (this.m_actions != null) + { + Console.Write(" ("); + for (Dfa.Action action = this.m_actions; action != null; action = action.a_next) + Console.Write("{0} <", (object) action.a_act); + if (this.m_tokClass != "") + Console.Write(this.m_tokClass); + Console.Write(">)"); + } + Console.WriteLine(); + Hashtable hashtable = new Hashtable(); + IDictionaryEnumerator enumerator1 = this.m_map.GetEnumerator(); + int count = this.m_map.Count; + while (count-- > 0) + { + enumerator1.MoveNext(); + char key1 = (char) enumerator1.Key; + Dfa dfa1 = (Dfa) enumerator1.Value; + if (!hashtable.Contains((object) key1)) + { + hashtable[(object) key1] = (object) true; + Console.Write(" {0} ", (object) dfa1.m_state); + int num1 = (int) key1; + if (num1 >= 32 && num1 < 128) + Console.Write(key1); + else + Console.Write(" #{0} ", (object) num1); + IDictionaryEnumerator enumerator2 = this.m_map.GetEnumerator(); + do + { + enumerator2.MoveNext(); + } + while ((Dfa) enumerator2.Value != dfa1); + for (int index = count; index > 0; --index) + { + enumerator2.MoveNext(); + char key2 = (char) enumerator2.Key; + Dfa dfa2 = (Dfa) enumerator2.Value; + if (dfa1 == dfa2) + { + hashtable[(object) key2] = (object) true; + int num2 = (int) key2; + if (num2 >= 32 && num2 < 128) + Console.Write(key2); + else + Console.Write(" #{0} ", (object) num2); + } + } + Console.WriteLine(); + } + } + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new Dfa(); + Dfa dfa = (Dfa) o; + if (s.Encode) + { + s.Serialise((object) dfa.m_state); + s.Serialise((object) dfa.m_map); + s.Serialise((object) dfa.m_actions); + s.Serialise((object) dfa.m_tokClass); + s.Serialise((object) dfa.m_reswds); + return (object) null; + } + dfa.m_state = (int) s.Deserialise(); + dfa.m_map = (Hashtable) s.Deserialise(); + dfa.m_actions = (Dfa.Action) s.Deserialise(); + dfa.m_tokClass = (string) s.Deserialise(); + dfa.m_reswds = (int) s.Deserialise(); + return (object) dfa; + } + + public class Action + { + public int a_act; + public Dfa.Action a_next; + + public Action(int act, Dfa.Action next) + { + this.a_act = act; + this.a_next = next; + } + + private Action() + { + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new Dfa.Action(); + Dfa.Action action = (Dfa.Action) o; + if (s.Encode) + { + s.Serialise((object) action.a_act); + s.Serialise((object) action.a_next); + return (object) null; + } + action.a_act = (int) s.Deserialise(); + action.a_next = (Dfa.Action) s.Deserialise(); + return (object) action; + } + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/EOF.cs b/LibreMetaverse.LslTools/Tools/EOF.cs new file mode 100644 index 00000000..8d063aff --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/EOF.cs @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class EOF : CSymbol + { + public EOF(SymbolsGen yyp) + : base(yyp) + { + this.yytext = nameof (EOF); + this.m_yynum = 2; + this.m_symtype = CSymbol.SymType.eofsymbol; + } + + public EOF(Lexer yyl) + : base(yyl) + { + this.yytext = nameof (EOF); + this.pos = yyl.m_LineManager.end; + this.m_symtype = CSymbol.SymType.eofsymbol; + } + + private EOF() + { + } + + public override string yyname => nameof (EOF); + + public override int yynum => 2; + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new EOF(); + return CSymbol.Serialise(o, s); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ErrorHandler.cs b/LibreMetaverse.LslTools/Tools/ErrorHandler.cs new file mode 100644 index 00000000..4f50dd70 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ErrorHandler.cs @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class ErrorHandler + { + public int counter; + public bool throwExceptions; + + public ErrorHandler() + { + } + + public ErrorHandler(bool ee) + { + this.throwExceptions = ee; + } + + public virtual void Error(CSToolsException e) + { + ++this.counter; + e.Handle(this); + } + + public virtual void Report(CSToolsException e) + { + Console.WriteLine(e.Message); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Func.cs b/LibreMetaverse.LslTools/Tools/Func.cs new file mode 100644 index 00000000..8950de17 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Func.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public delegate SymbolSet Func(Transition a); +} diff --git a/LibreMetaverse.LslTools/Tools/GenBase.cs b/LibreMetaverse.LslTools/Tools/GenBase.cs new file mode 100644 index 00000000..0b177b45 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/GenBase.cs @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; +using System.Text; +using YYClass; + +namespace LibreMetaverse.LslTools +{ + public class GenBase + { + protected Encoding m_scriptEncoding = Encoding.ASCII; + public string m_outname = "tokens"; + public int LastSymbol = 2; + public ErrorHandler erh; + public TextWriter m_outFile; + protected bool toupper; + public Production m_prod; + + protected GenBase(ErrorHandler eh) + { + this.erh = eh; + } + + protected string ScriptEncoding + { + set => this.m_scriptEncoding = Charset.GetEncoding(value, ref this.toupper, this.erh); + } + + protected int Braces(int a, string b, ref int p, int max) + { + int num1 = a; + int num2 = 0; + while (p < max) + { + if (b[p] == '\\') + ++p; + else if (num2 == 0 && b[p] == '{') + ++num1; + else if (num2 == 0 && b[p] == '}') + { + if (--num1 == 0) + { + ++p; + break; + } + } + else if ((int) b[p] == num2) + num2 = 0; + else if (num2 == 0 && (b[p] == '\'' || b[p] == '"')) + num2 = (int) b[p]; + ++p; + } + return num1; + } + + protected string ToBraceIfFound(ref string buf, ref int p, ref int max, CsReader inf) + { + int num = p; + int a = this.Braces(0, buf, ref p, max); + string str1 = buf.Substring(num, p - num); + while (inf != null && a > 0) + { + buf = inf.ReadLine(); + if (buf == null || p == 0) + this.Error(47, num, "EOF in action or class def??"); + max = buf.Length; + p = 0; + string str2 = str1 + (object) '\n'; + a = this.Braces(a, buf, ref p, max); + str1 = str2 + buf.Substring(0, p); + } + return str1; + } + + public bool White(string buf, ref int offset, int max) + { + while (offset < max && (buf[offset] == ' ' || buf[offset] == '\t')) + ++offset; + return offset < max; + } + + public bool NonWhite(string buf, ref int offset, int max) + { + while (offset < max && buf[offset] != ' ' && buf[offset] != '\t') + ++offset; + return offset < max; + } + + public int EmitClassDefin( + string b, + ref int p, + int max, + CsReader inf, + string defbas, + out string bas, + out string name, + bool lx) + { + bool flag = false; + name = ""; + bas = defbas; + if (lx) + this.NonWhite(b, ref p, max); + this.White(b, ref p, max); + while (p < max && b[p] != '{' && (b[p] != ':' && b[p] != ';') && (b[p] != ' ' && b[p] != '\t' && b[p] != '\n')) + { + name += (string) (object) b[p]; + ++p; + } + this.White(b, ref p, max); + if (b[p] == ':') + { + ++p; + this.White(b, ref p, max); + bas = ""; + while (p < max && b[p] != ' ' && (b[p] != '{' && b[p] != '\t') && (b[p] != ';' && b[p] != '\n')) + { + bas += (string) (object) b[p]; + ++p; + } + } + int yynum = new TokClassDef(this, name, bas).m_yynum; + this.m_outFile.WriteLine("//%+{0}+{1}", (object) name, (object) yynum); + this.m_outFile.Write("public class "); + this.m_outFile.Write(name); + this.m_outFile.Write(" : " + bas); + this.m_outFile.WriteLine("{"); + do + { + if (p >= max) + { + b += inf.ReadLine(); + max = b.Length; + } + this.White(b, ref p, max); + } + while (p >= max); + if (b[p] != ';') + { + cs0syntax cs0syntax = new cs0syntax((YyParser) new yycs0syntax(), this.erh); + ((cs0tokens) cs0syntax.m_lexer).Out = this.m_outname; + cs0syntax.Cls = name; + cs0syntax.Out = this.m_outname; + if (lx) + { + cs0syntax.Ctx = "Lexer yyl"; + cs0syntax.Par = "yym"; + } + else + { + cs0syntax.Ctx = "Parser yyp"; + cs0syntax.Par = "yyq"; + } + string braceIfFound = this.ToBraceIfFound(ref b, ref p, ref max, inf); + TOKEN token = (TOKEN) null; + try + { + token = (TOKEN) cs0syntax.Parse(braceIfFound); + } + catch (Exception) + { + } + if (token == null) + { + this.Error(48, p, "Bad class definition for " + name); + return -1; + } + token.yytext = token.yytext.Replace("yyq", "((" + this.m_outname + ")yyp)"); + token.yytext = token.yytext.Replace("yym", "((" + this.m_outname + ")yyl)"); + string yytext = token.yytext; + char[] chArray = new char[1]{ '\n' }; + foreach (string str in yytext.Split(chArray)) + this.m_outFile.WriteLine(str); + flag = cs0syntax.defconseen; + } + this.m_outFile.WriteLine("public override string yyname { get { return \"" + name + "\"; }}"); + this.m_outFile.WriteLine("public override int yynum { get { return " + (object) yynum + "; }}"); + if (!flag) + { + if (lx) + this.m_outFile.Write("public " + name + "(Lexer yyl):base(yyl){}"); + else + this.m_outFile.Write("public " + name + "(Parser yyp):base(yyp){}"); + } + this.m_outFile.WriteLine("}"); + return yynum; + } + + public void Error(int n, int p, string str) + { + Console.WriteLine("" + (object) this.sourceLineInfo(p) + ": " + str); + if (this.m_outFile != null) + { + this.m_outFile.WriteLine(); + this.m_outFile.WriteLine("#error Generator failed earlier. Fix the parser script and run ParserGenerator again."); + } + this.erh.Error((CSToolsException) new CSToolsFatalException(n, this.sourceLineInfo(p), "", str)); + } + + public virtual SourceLineInfo sourceLineInfo(int pos) + { + return new SourceLineInfo(pos); + } + + public int line(int pos) + { + return this.sourceLineInfo(pos).lineNumber; + } + + public int position(int pos) + { + return this.sourceLineInfo(pos).rawCharPosition; + } + + public string Saypos(int pos) + { + return this.sourceLineInfo(pos).ToString(); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/LNode.cs b/LibreMetaverse.LslTools/Tools/LNode.cs new file mode 100644 index 00000000..c77774b5 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/LNode.cs @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public abstract class LNode + { + public int m_state; + public TokensGen m_tks; + + public LNode(TokensGen tks) + { + this.m_tks = tks; + this.m_state = tks.NewState(); + } + + protected LNode() + { + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Lexer.cs b/LibreMetaverse.LslTools/Tools/Lexer.cs new file mode 100644 index 00000000..9624f53f --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Lexer.cs @@ -0,0 +1,328 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; + +namespace LibreMetaverse.LslTools +{ + public class Lexer + { + internal LineManager m_LineManager = new LineManager(); + public string m_state = "YYINITIAL"; + public bool m_debug; + public string m_buf; + private YyLexer m_tokens; + public string yytext; + public int m_pch; + private bool m_matching; + private int m_startMatch; + + public Lexer(YyLexer tks) + { + this.m_state = "YYINITIAL"; + this.tokens = tks; + } + + public SourceLineInfo sourceLineInfo(int pos) + { + return new SourceLineInfo(this, pos); + } + + public string sourceLine(SourceLineInfo s) + { + return this.m_buf.Substring(s.startOfLine, s.endOfLine - s.startOfLine); + } + + public string Saypos(int pos) + { + return this.sourceLineInfo(pos).ToString(); + } + + public Dfa m_start => (Dfa) this.m_tokens.starts[(object) this.m_state]; + + public YyLexer tokens + { + get => this.m_tokens; + set + { + this.m_tokens = value; + this.m_tokens.GetDfa(); + } + } + + public int yypos => this.m_pch; + + public void yy_begin(string newstate) + { + this.m_state = newstate; + } + + private bool Match(ref TOKEN tok, Dfa dfa) + { + char ch = this.PeekChar(); + int pch = this.m_pch; + int mark = 0; + if (this.m_debug) + { + Console.Write("state {0} with ", (object) dfa.m_state); + if (char.IsLetterOrDigit(ch) || char.IsPunctuation(ch)) + Console.WriteLine(ch); + else + Console.WriteLine("#" + (object) (int) ch); + } + if (dfa.m_actions != null) + mark = this.Mark(); + Dfa dfa1; + if ((dfa1 = (Dfa) dfa.m_map[(object) this.m_tokens.Filter(ch)]) == null) + { + if (this.m_debug) + Console.Write("{0} no arc", (object) dfa.m_state); + if (dfa.m_actions != null) + { + if (this.m_debug) + Console.WriteLine(" terminal"); + return this.TryActions(dfa, ref tok); + } + if (this.m_debug) + Console.WriteLine(" fails"); + return false; + } + this.Advance(); + if (!this.Match(ref tok, dfa1)) + { + if (this.m_debug) + Console.WriteLine("back to {0} with {1}", (object) dfa.m_state, (object) ch); + if (dfa.m_actions != null) + { + if (this.m_debug) + Console.WriteLine("{0} succeeds", (object) dfa.m_state); + this.Restore(mark); + return this.TryActions(dfa, ref tok); + } + if (this.m_debug) + Console.WriteLine("{0} fails", (object) dfa.m_state); + return false; + } + if (dfa.m_reswds >= 0) + ((ResWds) this.m_tokens.reswds[(object) dfa.m_reswds]).Check(this, ref tok); + if (this.m_debug) + { + Console.Write("{0} matched ", (object) dfa.m_state); + if (this.m_pch <= this.m_buf.Length) + Console.WriteLine(this.m_buf.Substring(pch, this.m_pch - pch)); + else + Console.WriteLine(this.m_buf.Substring(pch)); + } + return true; + } + + public void Start(StreamReader inFile) + { + this.m_state = "YYINITIAL"; + this.m_LineManager.lines = 1; + this.m_LineManager.list = (LineList) null; + inFile = new StreamReader(inFile.BaseStream, this.m_tokens.m_encoding); + this.m_buf = inFile.ReadToEnd(); + if (this.m_tokens.toupper) + this.m_buf = this.m_buf.ToUpper(); + for (this.m_pch = 0; this.m_pch < this.m_buf.Length; ++this.m_pch) + { + if (this.m_buf[this.m_pch] == '\n') + this.m_LineManager.newline(this.m_pch); + } + this.m_pch = 0; + } + + public void Start(CsReader inFile) + { + this.m_state = "YYINITIAL"; + inFile = new CsReader(inFile, this.m_tokens.m_encoding); + this.m_LineManager = inFile.lm; + if (!inFile.Eof()) + { + this.m_buf = inFile.ReadLine(); + while (!inFile.Eof()) + { + this.m_buf += "\n"; + this.m_buf += inFile.ReadLine(); + } + } + if (this.m_tokens.toupper) + this.m_buf = this.m_buf.ToUpper(); + this.m_pch = 0; + } + + public void Start(string buf) + { + this.m_state = "YYINITIAL"; + this.m_LineManager.lines = 1; + this.m_LineManager.list = (LineList) null; + this.m_buf = buf + "\n"; + for (this.m_pch = 0; this.m_pch < this.m_buf.Length; ++this.m_pch) + { + if (this.m_buf[this.m_pch] == '\n') + this.m_LineManager.newline(this.m_pch); + } + if (this.m_tokens.toupper) + this.m_buf = this.m_buf.ToUpper(); + this.m_pch = 0; + } + + public TOKEN Next() + { + TOKEN tok = (TOKEN) null; + while (this.PeekChar() != char.MinValue) + { + this.Matching(true); + if (!this.Match(ref tok, (Dfa) this.m_tokens.starts[(object) this.m_state])) + { + if (this.yypos == 0) + Console.Write("Check text encoding.. "); + int num = (int) this.PeekChar(); + this.m_tokens.erh.Error((CSToolsException) new CSToolsStopException(2, this, "illegal character <" + (object) (char) num + "> " + (object) num)); + return (TOKEN) null; + } + this.Matching(false); + if (tok != null) + { + tok.pos = this.m_pch - this.yytext.Length; + return tok; + } + } + return (TOKEN) null; + } + + private bool TryActions(Dfa dfa, ref TOKEN tok) + { + int length = this.m_pch - this.m_startMatch; + if (length == 0) + return false; + this.yytext = this.m_startMatch + length > this.m_buf.Length ? this.m_buf.Substring(this.m_startMatch) : this.m_buf.Substring(this.m_startMatch, length); + Dfa.Action action = dfa.m_actions; + bool reject = true; + while (reject && action != null) + { + int aAct = action.a_act; + reject = false; + action = action.a_next; + if (action == null && dfa.m_tokClass != "") + { + if (this.m_debug) + Console.WriteLine("creating a " + dfa.m_tokClass); + tok = (TOKEN) Tfactory.create(dfa.m_tokClass, this); + } + else + { + tok = this.m_tokens.OldAction(this, ref this.yytext, aAct, ref reject); + if (this.m_debug && !reject) + Console.WriteLine("Old action " + (object) aAct); + } + } + return !reject; + } + + public char PeekChar() + { + if (this.m_pch < this.m_buf.Length) + return this.m_buf[this.m_pch]; + return this.m_pch == this.m_buf.Length && this.m_tokens.usingEOF ? char.MaxValue : char.MinValue; + } + + public void Advance() + { + ++this.m_pch; + } + + public virtual int GetChar() + { + int num = (int) this.PeekChar(); + ++this.m_pch; + return num; + } + + public void UnGetChar() + { + if (this.m_pch <= 0) + return; + --this.m_pch; + } + + private int Mark() + { + return this.m_pch - this.m_startMatch; + } + + private void Restore(int mark) + { + this.m_pch = this.m_startMatch + mark; + } + + private void Matching(bool b) + { + this.m_matching = b; + if (!b) + return; + this.m_startMatch = this.m_pch; + } + + public Lexer._Enumerator GetEnumerator() + { + return new Lexer._Enumerator(this); + } + + public void Reset() + { + this.m_pch = 0; + this.m_LineManager.backto(0); + } + + public class _Enumerator + { + private Lexer lxr; + private TOKEN t; + + public _Enumerator(Lexer x) + { + this.lxr = x; + this.t = (TOKEN) null; + } + + public bool MoveNext() + { + this.t = this.lxr.Next(); + return this.t != null; + } + + public TOKEN Current => this.t; + + public void Reset() + { + this.lxr.Reset(); + } + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/LineList.cs b/LibreMetaverse.LslTools/Tools/LineList.cs new file mode 100644 index 00000000..c8b23776 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/LineList.cs @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class LineList + { + public int head; + public CommentList comments; + public LineList tail; + + public LineList(int h, LineList t) + { + this.head = h; + this.comments = (CommentList) null; + this.tail = t; + } + + public int getpos(int pos) + { + int num = pos - this.head; + for (CommentList commentList = this.comments; commentList != null; commentList = commentList.tail) + { + if (pos > commentList.spos) + num += commentList.len; + } + return num; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/LineManager.cs b/LibreMetaverse.LslTools/Tools/LineManager.cs new file mode 100644 index 00000000..78d8f9f4 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/LineManager.cs @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class LineManager + { + public int lines = 1; + public int end; + public LineList list; + + public void newline(int pos) + { + ++this.lines; + this.backto(pos); + this.list = new LineList(pos, this.list); + } + + public void backto(int pos) + { + if (pos > this.end) + this.end = pos; + while (this.list != null && this.list.head >= pos) + { + this.list = this.list.tail; + --this.lines; + } + } + + public void comment(int pos, int len) + { + if (pos > this.end) + this.end = pos; + if (this.list == null) + { + this.list = new LineList(0, this.list); + this.lines = 1; + } + this.list.comments = new CommentList(pos, len, this.list.comments); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Literal.cs b/LibreMetaverse.LslTools/Tools/Literal.cs new file mode 100644 index 00000000..813f93d5 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Literal.cs @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class Literal : CSymbol + { + public Literal(SymbolsGen yyp) + : base(yyp) + { + this.m_symtype = CSymbol.SymType.terminal; + } + + private Literal() + { + } + + public override CSymbol Resolve() + { + int length = this.yytext.Length; + string str = ""; + for (int index = 1; index + 1 < length; ++index) + { + if (this.yytext[index] == '\\') + { + if (index + 1 < length) + ++index; + if (this.yytext[index] >= '0' && this.yytext[index] <= '7') + { + int num; + for (num = (int) this.yytext[index++] - 48; index < length && this.yytext[index] >= '0' && this.yytext[index] <= '7'; ++index) + num = num * 8 + (int) this.yytext[index] - 48; + str += (string) (object) (char) num; + } + else + { + char ch = this.yytext[index]; + switch (ch) + { + case 'r': + str += (string) (object) '\r'; + continue; + case 't': + str += (string) (object) '\t'; + continue; + default: + str = ch == 'n' ? str + (object) '\n' : str + (object) this.yytext[index]; + continue; + } + } + } + else + str += (string) (object) this.yytext[index]; + } + this.yytext = str; + CSymbol literal = (CSymbol) this.m_parser.m_symbols.literals[(object) this.yytext]; + if (literal != null) + return literal; + this.m_yynum = ++this.m_parser.LastSymbol; + this.m_parser.m_symbols.literals[(object) this.yytext] = (object) this; + this.m_parser.m_symbols.symbolInfo[(object) this.m_yynum] = (object) new ParsingInfo(this.yytext, this.m_yynum); + return (CSymbol) this; + } + + public bool CouldStart(CSymbol nonterm) + { + return false; + } + + public override string TypeStr() + { + return "TOKEN"; + } + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new Literal(); + return CSymbol.Serialise(o, s); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/NList.cs b/LibreMetaverse.LslTools/Tools/NList.cs new file mode 100644 index 00000000..e629a6f4 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/NList.cs @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + internal class NList + { + public NfaNode m_node; + public NList m_next; + + public NList() + { + this.m_node = (NfaNode) null; + this.m_next = (NList) null; + } + + private NList(NfaNode nd, NList nx) + { + this.m_node = nd; + this.m_next = nx; + } + + public bool Add(NfaNode n) + { + if (this.m_node == null) + { + this.m_next = new NList(); + this.m_node = n; + } + else if (this.m_node.m_state < n.m_state) + { + this.m_next = new NList(this.m_node, this.m_next); + this.m_node = n; + } + else + { + if (this.m_node.m_state == n.m_state) + return false; + return this.m_next.Add(n); + } + return true; + } + + public bool AtEnd => this.m_node == null; + } +} diff --git a/LibreMetaverse.LslTools/Tools/Nfa.cs b/LibreMetaverse.LslTools/Tools/Nfa.cs new file mode 100644 index 00000000..d3ba6323 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Nfa.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class Nfa : NfaNode + { + public NfaNode m_end; + + public Nfa(TokensGen tks) + : base(tks) + { + this.m_end = new NfaNode(this.m_tks); + } + + public Nfa(TokensGen tks, Regex re) + : base(tks) + { + this.m_end = new NfaNode(tks); + re.Build(this); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/NfaNode.cs b/LibreMetaverse.LslTools/Tools/NfaNode.cs new file mode 100644 index 00000000..394315a7 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/NfaNode.cs @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class NfaNode : LNode + { + public string m_sTerminal = ""; + public ObjectList m_arcs = new ObjectList(); + public ObjectList m_eps = new ObjectList(); + + public NfaNode(TokensGen tks) + : base(tks) + { + } + + public void AddArc(char ch, NfaNode next) + { + this.m_arcs.Add((object) new Arc(ch, next)); + } + + public void AddUArc(char ch, NfaNode next) + { + this.m_arcs.Add((object) new UArc(ch, next)); + } + + public void AddArcEx(Regex re, NfaNode next) + { + this.m_arcs.Add((object) new ArcEx(re, next)); + } + + public void AddEps(NfaNode next) + { + this.m_eps.Add((object) next); + } + + public void AddTarget(char ch, Dfa next) + { + foreach (var t in this.m_arcs) + { + Arc arc = (Arc) t; + if (arc.Match(ch)) + next.AddNfaNode(arc.m_next); + } + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Null.cs b/LibreMetaverse.LslTools/Tools/Null.cs new file mode 100644 index 00000000..cd0d71b0 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Null.cs @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class Null : TOKEN + { + public Null(Lexer yyl, string proxy) + : base(yyl) + { + this.yytext = proxy; + } + + public Null(Parser yyp, string proxy) + : base(yyp) + { + this.yytext = proxy; + } + + public override string yyname => this.yytext; + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs b/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs new file mode 100644 index 00000000..39714df0 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class ParseStackEntry + { + public Parser yyps; + public int m_state; + public SYMBOL m_value; + + public ParseStackEntry(Parser yyp) + { + this.yyps = yyp; + } + + public ParseStackEntry(Parser yyp, int state, SYMBOL value) + { + this.yyps = yyp; + this.m_state = state; + this.m_value = value; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParseState.cs b/LibreMetaverse.LslTools/Tools/ParseState.cs new file mode 100644 index 00000000..c0033c90 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParseState.cs @@ -0,0 +1,274 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class ParseState + { + private bool m_changed = true; + public Hashtable m_transitions = new Hashtable(); + public int m_state; + public CSymbol m_accessingSymbol; + public SymbolsGen m_sgen; + internal ProdItemList m_items; + + public ParseState(SymbolsGen syms, CSymbol acc) + { + this.m_sgen = syms; + this.m_state = syms.state++; + this.m_accessingSymbol = acc; + this.m_items = new ProdItemList(); + } + + private ParseState() + { + } + + public Transition GetTransition(CSymbol s) + { + return (Transition) this.m_transitions[(object) s.yytext] ?? new Transition(this, s); + } + + public bool Accessor(CSymbol[] x) + { + return new Path(x).Top == this; + } + + public bool Lookback(Production pr, ParseState p) + { + return new Path(this, pr.Prefix(pr.m_rhs.Count)).Top == this; + } + + public void MaybeAdd(ProdItem item) + { + if (!this.m_items.Add(item)) + return; + this.m_changed = true; + } + + public void Closure() + { + while (this.m_changed) + { + this.m_changed = false; + for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next) + this.CheckClosure(prodItemList.m_pi); + } + } + + public void CheckClosure(ProdItem item) + { + CSymbol csymbol = item.Next(); + if (csymbol == null) + return; + csymbol.AddStartItems(this, item.FirstOfRest(csymbol.m_parser)); + if (!item.IsReducingAction()) + return; + this.MaybeAdd(new ProdItem(item.m_prod, item.m_pos + 1)); + } + + public void AddEntries() + { + for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next) + { + ProdItem pi1 = prodItemList.m_pi; + if (!pi1.m_done) + { + CSymbol csymbol = pi1.Next(); + if (csymbol != null && !pi1.IsReducingAction()) + { + ParseState parseState = new ParseState(this.m_sgen, csymbol); + parseState.MaybeAdd(new ProdItem(pi1.m_prod, pi1.m_pos + 1)); + for (ProdItemList next = prodItemList.m_next; next != null && next.m_pi != null; next = next.m_next) + { + ProdItem pi2 = next.m_pi; + if (csymbol == pi2.Next()) + { + parseState.MaybeAdd(new ProdItem(pi2.m_prod, pi2.m_pos + 1)); + pi2.m_done = true; + } + } + if (!this.m_items.AtEnd) + { + if (csymbol.IsAction()) + { + ParseState next = parseState.CheckExists(); + foreach (CSymbol key in (IEnumerable) csymbol.m_follow.Keys) + { + if (key != this.m_sgen.m_symbols.EOFSymbol) + this.GetTransition(key).m_next = new ParserShift((ParserAction) csymbol, next); + } + } + else + this.GetTransition(csymbol).m_next = new ParserShift((ParserAction) null, parseState.CheckExists()); + } + } + } + } + } + + public void ReduceStates() + { + for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next) + { + ProdItem pi = prodItemList.m_pi; + if (pi.Next() == null) + { + Production prod = pi.m_prod; + if (prod.m_pno != 0) + { + int count = prod.m_rhs.Count; + CSymbol rh; + ParserReduce parserReduce; + if (count > 0 && (rh = (CSymbol) prod.m_rhs[count - 1]) != null && rh.IsAction()) + { + ParserAction action = (ParserAction) rh; + action.m_len = count; + parserReduce = new ParserReduce(action, count - 1, prod); + } + else + { + this.m_sgen.m_lexer.yytext = "%" + prod.m_lhs.yytext; + this.m_sgen.m_prod = prod; + var parserSimpleAction = new ParserSimpleAction(this.m_sgen) + { + m_sym = prod.m_lhs, + m_len = count + }; + parserReduce = new ParserReduce((ParserAction) parserSimpleAction, count, prod); + } + foreach (CSymbol key in (IEnumerable) pi.m_prod.m_lhs.m_follow.Keys) + this.GetTransition(key).m_reduce[(object) prod] = (object) parserReduce; + } + } + } + } + + public bool SameAs(ParseState p) + { + if (this.m_accessingSymbol != p.m_accessingSymbol) + return false; + ProdItemList prodItemList1 = this.m_items; + ProdItemList prodItemList2; + for (prodItemList2 = p.m_items; !prodItemList1.AtEnd && !prodItemList2.AtEnd && (prodItemList1.m_pi.m_prod == prodItemList2.m_pi.m_prod && prodItemList1.m_pi.m_pos == prodItemList2.m_pi.m_pos); prodItemList2 = prodItemList2.m_next) + prodItemList1 = prodItemList1.m_next; + if (prodItemList1.AtEnd) + return prodItemList2.AtEnd; + return false; + } + + public ParseState CheckExists() + { + this.Closure(); + foreach (ParseState p in (IEnumerable) this.m_sgen.m_symbols.m_states.Values) + { + if (this.SameAs(p)) + return p; + } + this.m_sgen.m_symbols.m_states[(object) this.m_state] = (object) this; + this.AddEntries(); + return this; + } + + ~ParseState() + { + if (this.m_sgen == null || this.m_state != this.m_sgen.state - 1) + return; + --this.m_sgen.state; + } + + public void Print() + { + Console.WriteLine(); + if (this.m_state == 0) + Console.WriteLine("state 0"); + else + Console.WriteLine("state {0} accessed by {1}", (object) this.m_state, (object) this.m_accessingSymbol.yytext); + if (this.m_items != null) + { + for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next) + { + prodItemList.m_pi.Print(); + prodItemList.m_pi.m_prod.m_lhs.m_follow.Print(); + } + } + foreach (Transition transition in (IEnumerable) this.m_transitions.Values) + transition.Print0(); + } + + public void Print0() + { + Console.WriteLine(); + if (this.m_state == 0) + Console.WriteLine("state 0"); + else + Console.WriteLine("state {0} accessed by {1}", (object) this.m_state, (object) this.m_accessingSymbol.yytext); + if (this.m_items != null) + { + for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next) + { + prodItemList.m_pi.Print(); + Console.WriteLine(); + } + } + Console.WriteLine(); + foreach (ParsingInfo pi in (IEnumerable) this.m_sgen.m_symbols.symbolInfo.Values) + this.PrintTransition(pi); + } + + private void PrintTransition(ParsingInfo pi) + { + ParserEntry parserEntry = (ParserEntry) pi.m_parsetable[(object) this.m_state]; + if (parserEntry == null) + return; + Console.Write(" {0} {1} ", (object) pi.m_name, (object) parserEntry.str); + if (parserEntry.m_action != null) + parserEntry.m_action.Print(); + Console.WriteLine(); + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParseState(); + ParseState parseState = (ParseState) o; + if (s.Encode) + { + s.Serialise((object) parseState.m_state); + s.Serialise((object) parseState.m_accessingSymbol); + s.Serialise((object) parseState.m_changed); + return (object) true; + } + parseState.m_state = (int) s.Deserialise(); + parseState.m_accessingSymbol = (CSymbol) s.Deserialise(); + parseState.m_changed = (bool) s.Deserialise(); + return (object) parseState; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Parser.cs b/LibreMetaverse.LslTools/Tools/Parser.cs new file mode 100644 index 00000000..3c4eaf5c --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Parser.cs @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.IO; + +namespace LibreMetaverse.LslTools +{ + public class Parser + { + internal ObjectList m_stack = new ObjectList(); + public YyParser m_symbols; + public bool m_debug; + public bool m_stkdebug; + public Lexer m_lexer; + internal SYMBOL m_ungot; + + public Parser(YyParser syms, Lexer lexer) + { + this.m_lexer = lexer; + this.m_symbols = syms; + this.m_symbols.erh = this.m_lexer.tokens.erh; + } + + private void Create() + { + this.m_symbols.GetParser(this.m_lexer); + } + + protected bool Error(ref ParseStackEntry top, string str) + { + SYMBOL ns = (SYMBOL) new error(this, top); + if (this.m_debug) + Console.WriteLine("Error encountered: " + str); + ns.pos = top.m_value.pos; + if (this.m_symbols.symbolInfo[(object) 0] != null && this.m_symbols.erh.counter < 1000) + { + while (top != null && this.m_stack.Count > 0) + { + if (this.m_debug) + Console.WriteLine("Error recovery uncovers state {0}", (object) top.m_state); + ParserEntry entry; + if (ns.Pass(this.m_symbols, top.m_state, out entry)) + { + SYMBOL symbol1 = top.m_value; + top.m_value = ns; + entry.Pass(ref top); + while (top.m_value != this.m_symbols.EOFSymbol && !top.m_value.Pass(this.m_symbols, top.m_state, out entry)) + { + if (entry != null && entry.IsReduce()) + { + SYMBOL symbol2 = (SYMBOL) null; + if (entry.m_action != null) + symbol2 = entry.m_action.Action(this); + this.m_ungot = top.m_value; + this.Pop(ref top, ((ParserReduce) entry).m_depth, ns); + symbol2.pos = top.m_value.pos; + top.m_value = symbol2; + } + else + { + string yyname = top.m_value.yyname; + if (this.m_debug) + { + if (yyname == "TOKEN") + Console.WriteLine("Error recovery discards literal {0}", (object) ((TOKEN) top.m_value).yytext); + else + Console.WriteLine("Error recovery discards token {0}", (object) yyname); + } + top.m_value = this.NextSym(); + } + } + if (this.m_debug) + Console.WriteLine("Recovery complete"); + ++this.m_symbols.erh.counter; + return true; + } + this.Pop(ref top, 1, ns); + } + } + this.m_symbols.erh.Error(new CSToolsException(13, this.m_lexer, ns.pos, "syntax error", str)); + top.m_value = ns; + return false; + } + + public SYMBOL Parse(StreamReader input) + { + this.m_lexer.Start(input); + return this.Parse(); + } + + public SYMBOL Parse(CsReader inFile) + { + this.m_lexer.Start(inFile); + return this.Parse(); + } + + public SYMBOL Parse(string buf) + { + this.m_lexer.Start(buf); + return this.Parse(); + } + + private SYMBOL Parse() + { + this.Create(); + ParseStackEntry s = new ParseStackEntry(this, 0, this.NextSym()); + try + { + while (true) + { + do + { + string yyname = s.m_value.yyname; + if (this.m_debug) + { + if (yyname.Equals("TOKEN")) + Console.WriteLine(string.Format("State {0} with {1} \"{2}\"", (object) s.m_state, (object) yyname, (object) ((TOKEN) s.m_value).yytext)); + else + Console.WriteLine(string.Format("State {0} with {1}", (object) s.m_state, (object) yyname)); + } + ParserEntry entry; + if (s.m_value != null && s.m_value.Pass(this.m_symbols, s.m_state, out entry)) + entry.Pass(ref s); + else if (s.m_value == this.m_symbols.EOFSymbol) + { + if (s.m_state == this.m_symbols.m_accept.m_state) + { + this.Pop(ref s, 1, (SYMBOL) this.m_symbols.m_startSymbol); + if (this.m_symbols.erh.counter > 0) + return (SYMBOL) new recoveredError(this, s); + SYMBOL symbol = s.m_value; + s.m_value = (SYMBOL) null; + return symbol; + } + if (!this.Error(ref s, "Unexpected EOF")) + return s.m_value; + } + else if (!this.Error(ref s, "syntax error")) + return s.m_value; + } + while (!this.m_debug); + if (s.m_value != null) + { + object dollar = s.m_value.m_dollar; + Console.WriteLine("In state {0} top {1} value {2}", (object) s.m_state, (object) s.m_value.yyname, dollar != null ? (object) dollar.GetType().Name : (object) "null"); + if (dollar != null && dollar.GetType().Name.Equals("Int32")) + Console.WriteLine((int) dollar); + else + s.m_value.Print(); + } + else + Console.WriteLine("In state {0} top NULL", (object) s.m_state); + } + } + catch (CSToolsStopException ex) + { + if (this.m_symbols.erh.throwExceptions) + throw; + this.m_symbols.erh.Report((CSToolsException) ex); + } + return (SYMBOL) null; + } + + internal void Push(ParseStackEntry elt) + { + this.m_stack.Push((object) elt); + } + + internal void Pop(ref ParseStackEntry elt, int depth, SYMBOL ns) + { + for (; this.m_stack.Count > 0 && depth > 0; --depth) + { + elt = (ParseStackEntry) this.m_stack.Pop(); + if (this.m_symbols.m_concrete) + ns.kids.Push((object) elt.m_value); + } + if (depth == 0) + return; + this.m_symbols.erh.Error(new CSToolsException(14, this.m_lexer, "Pop failed")); + } + + public ParseStackEntry StackAt(int ix) + { + int count = this.m_stack.Count; + if (this.m_stkdebug) + Console.WriteLine("StackAt({0}),count {1}", (object) ix, (object) count); + ParseStackEntry parseStackEntry = (ParseStackEntry) this.m_stack[ix]; + if (parseStackEntry == null) + return new ParseStackEntry(this, 0, (SYMBOL) this.m_symbols.Special); + if (parseStackEntry.m_value is Null) + return new ParseStackEntry(this, parseStackEntry.m_state, (SYMBOL) null); + if (this.m_stkdebug) + Console.WriteLine(parseStackEntry.m_value.yyname); + return parseStackEntry; + } + + public SYMBOL NextSym() + { + SYMBOL ungot = this.m_ungot; + if (ungot == null) + return (SYMBOL) this.m_lexer.Next() ?? (SYMBOL) this.m_symbols.EOFSymbol; + this.m_ungot = (SYMBOL) null; + return ungot; + } + + public void Error(int n, SYMBOL sym, string s) + { + if (sym != null) + this.m_symbols.erh.Error(new CSToolsException(n, sym.yylx, sym.pos, "", s)); + else + this.m_symbols.erh.Error(new CSToolsException(n, s)); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserAction.cs b/LibreMetaverse.LslTools/Tools/ParserAction.cs new file mode 100644 index 00000000..0088e410 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserAction.cs @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class ParserAction : CSymbol + { + public CSymbol m_sym; + public int m_len; + + public ParserAction(SymbolsGen yyp) + : base(yyp) + { + } + + protected ParserAction() + { + } + + public virtual SYMBOL Action(Parser yyp) + { + SYMBOL symbol1 = (SYMBOL) Sfactory.create(this.m_sym.yytext, yyp); + if (symbol1.yyname == this.m_sym.yytext) + { + SYMBOL symbol2 = yyp.StackAt(this.m_len - 1).m_value; + symbol1.m_dollar = this.m_len == 0 || symbol2 == null ? (object) null : symbol2.m_dollar; + } + return symbol1; + } + + public override void Print() + { + Console.Write(this.m_sym.yytext); + } + + public override bool IsAction() + { + return true; + } + + public virtual int ActNum() + { + return 0; + } + + public new static object Serialise(object o, Serialiser s) + { + ParserAction parserAction = (ParserAction) o; + if (s.Encode) + { + CSymbol.Serialise((object) parserAction, s); + s.Serialise((object) parserAction.m_sym); + s.Serialise((object) parserAction.m_len); + return (object) null; + } + CSymbol.Serialise((object) parserAction, s); + parserAction.m_sym = (CSymbol) s.Deserialise(); + parserAction.m_len = (int) s.Deserialise(); + return (object) parserAction; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserEntry.cs b/LibreMetaverse.LslTools/Tools/ParserEntry.cs new file mode 100644 index 00000000..8f7c5f5d --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserEntry.cs @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public abstract class ParserEntry + { + public ParserAction m_action; + public int m_priority; + + public ParserEntry() + { + this.m_action = (ParserAction) null; + } + + public ParserEntry(ParserAction action) + { + this.m_action = action; + } + + public virtual void Pass(ref ParseStackEntry top) + { + } + + public virtual bool IsReduce() + { + return false; + } + + public virtual string str => ""; + + public static object Serialise(object o, Serialiser s) + { + ParserEntry parserEntry = (ParserEntry) o; + if (s.Encode) + { + s.Serialise((object) parserEntry.m_action); + return (object) null; + } + parserEntry.m_action = (ParserAction) s.Deserialise(); + return (object) parserEntry; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserOldAction.cs b/LibreMetaverse.LslTools/Tools/ParserOldAction.cs new file mode 100644 index 00000000..fef71c07 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserOldAction.cs @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class ParserOldAction : ParserAction + { + public int m_action; + + public ParserOldAction(SymbolsGen yyp) + : base(yyp) + { + this.m_action = yyp.action_num++; + yyp.actions.Add((object) this); + this.m_sym = (CSymbol) null; + this.m_symtype = CSymbol.SymType.oldaction; + yyp.OldAction(this); + } + + private ParserOldAction() + { + } + + public override SYMBOL Action(Parser yyp) + { + SYMBOL yysym = base.Action(yyp); + object obj = yyp.m_symbols.Action(yyp, yysym, this.m_action); + if (obj != null) + yysym.m_dollar = obj; + return yysym; + } + + public override int ActNum() + { + return this.m_action; + } + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParserOldAction(); + ParserOldAction parserOldAction = (ParserOldAction) o; + if (s.Encode) + { + ParserAction.Serialise((object) parserOldAction, s); + s.Serialise((object) parserOldAction.m_action); + return (object) null; + } + ParserAction.Serialise((object) parserOldAction, s); + parserOldAction.m_action = (int) s.Deserialise(); + return (object) parserOldAction; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserReduce.cs b/LibreMetaverse.LslTools/Tools/ParserReduce.cs new file mode 100644 index 00000000..e64f9825 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserReduce.cs @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class ParserReduce : ParserEntry + { + public int m_depth; + public Production m_prod; + public SymbolSet m_lookAhead; + + public ParserReduce(ParserAction action, int depth, Production prod) + : base(action) + { + this.m_depth = depth; + this.m_prod = prod; + } + + private ParserReduce() + { + } + + public void BuildLookback(Transition a) + { + SymbolsGen sgen = a.m_ps.m_sgen; + if (this.m_lookAhead != null) + return; + this.m_lookAhead = new SymbolSet(sgen); + foreach (ParseState q in (IEnumerable) sgen.m_symbols.m_states.Values) + { + Transition transition = (Transition) q.m_transitions[(object) this.m_prod.m_lhs.yytext]; + if (transition != null) + { + Path path = new Path(q, this.m_prod.Prefix(this.m_prod.m_rhs.Count)); + if (path.valid && path.Top == a.m_ps) + transition.m_lookbackOf[(object) this] = (object) true; + } + } + } + + public override void Pass(ref ParseStackEntry top) + { + Parser yyps = top.yyps; + SYMBOL ns = this.m_action.Action(yyps); + yyps.m_ungot = top.m_value; + if (yyps.m_debug) + Console.WriteLine("about to pop {0} count is {1}", (object) this.m_depth, (object) yyps.m_stack.Count); + yyps.Pop(ref top, this.m_depth, ns); + if (ns.pos == 0) + ns.pos = top.m_value.pos; + top.m_value = ns; + } + + public override bool IsReduce() + { + return true; + } + + public override string str + { + get + { + if (this.m_prod == null) + return "?? null reduce"; + return string.Format("reduce {0}", (object) this.m_prod.m_pno); + } + } + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParserReduce(); + ParserReduce parserReduce = (ParserReduce) o; + if (s.Encode) + { + ParserEntry.Serialise((object) parserReduce, s); + s.Serialise((object) parserReduce.m_depth); + s.Serialise((object) parserReduce.m_prod); + return (object) null; + } + ParserEntry.Serialise((object) parserReduce, s); + parserReduce.m_depth = (int) s.Deserialise(); + parserReduce.m_prod = (Production) s.Deserialise(); + return (object) parserReduce; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserShift.cs b/LibreMetaverse.LslTools/Tools/ParserShift.cs new file mode 100644 index 00000000..7ad7491f --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserShift.cs @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class ParserShift : ParserEntry + { + public ParseState m_next; + + public ParserShift() + { + } + + public ParserShift(ParserAction action, ParseState next) + : base(action) + { + this.m_next = next; + } + + public override void Pass(ref ParseStackEntry top) + { + Parser yyps = top.yyps; + if (this.m_action == null) + { + yyps.Push(top); + top = new ParseStackEntry(yyps, this.m_next.m_state, yyps.NextSym()); + } + else + { + yyps.Push(new ParseStackEntry(yyps, top.m_state, this.m_action.Action(yyps))); + top.m_state = this.m_next.m_state; + } + } + + public override string str + { + get + { + if (this.m_next == null) + return "?? null shift"; + return string.Format("shift {0}", (object) this.m_next.m_state); + } + } + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParserShift(); + ParserShift parserShift = (ParserShift) o; + if (s.Encode) + { + ParserEntry.Serialise((object) parserShift, s); + s.Serialise((object) parserShift.m_next); + return (object) null; + } + ParserEntry.Serialise((object) parserShift, s); + parserShift.m_next = (ParseState) s.Deserialise(); + return (object) parserShift; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs b/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs new file mode 100644 index 00000000..9bfb34ad --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class ParserSimpleAction : ParserAction + { + public ParserSimpleAction(SymbolsGen yyp) + : base(yyp) + { + yyp.actions.Add((object) this); + this.m_symtype = CSymbol.SymType.simpleaction; + yyp.SimpleAction(this); + } + + private ParserSimpleAction() + { + } + + public override string TypeStr() + { + return this.m_sym.yytext; + } + + public override void Print() + { + Console.Write(" %{0}", (object) this.m_sym.yytext); + } + + public new static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParserSimpleAction(); + if (!s.Encode) + return ParserAction.Serialise(o, s); + ParserAction.Serialise(o, s); + return (object) null; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ParsingInfo.cs b/LibreMetaverse.LslTools/Tools/ParsingInfo.cs new file mode 100644 index 00000000..010784f9 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ParsingInfo.cs @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class ParsingInfo + { + public Hashtable m_parsetable = new Hashtable(); + public string m_name; + public int m_yynum; + + public ParsingInfo(string name, int num) + { + this.m_name = name; + this.m_yynum = num; + } + + private ParsingInfo() + { + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ParsingInfo(); + ParsingInfo parsingInfo = (ParsingInfo) o; + if (s.Encode) + { + s.Serialise((object) parsingInfo.m_name); + s.Serialise((object) parsingInfo.m_yynum); + s.Serialise((object) parsingInfo.m_parsetable); + return (object) null; + } + parsingInfo.m_name = (string) s.Deserialise(); + parsingInfo.m_yynum = (int) s.Deserialise(); + parsingInfo.m_parsetable = (Hashtable) s.Deserialise(); + return (object) parsingInfo; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Path.cs b/LibreMetaverse.LslTools/Tools/Path.cs new file mode 100644 index 00000000..643209c4 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Path.cs @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class Path + { + public bool valid = true; + private ParseState[] m_states; + + public Path(ParseState[] s) + { + this.m_states = s; + } + + public Path(ParseState q, CSymbol[] x) + { + this.m_states = new ParseState[x.Length + 1]; + ParseState parseState = this.m_states[0] = q; + for (int index1 = 0; index1 < x.Length; ++index1) + { + int index2 = index1; + while (index2 < x.Length && x[index2].IsAction()) + ++index2; + if (index2 >= x.Length) + { + this.m_states[index1 + 1] = parseState; + } + else + { + Transition transition = (Transition) parseState.m_transitions[(object) x[index2].yytext]; + if (transition == null || transition.m_next == null) + { + this.valid = false; + break; + } + parseState = this.m_states[index1 + 1] = transition.m_next.m_next; + } + } + } + + public Path(CSymbol[] x) + : this((ParseState) x[0].m_parser.m_symbols.m_states[(object) 0], x) + { + } + + public CSymbol[] Spelling + { + get + { + CSymbol[] csymbolArray = new CSymbol[this.m_states.Length - 1]; + for (int index = 0; index < csymbolArray.Length; ++index) + csymbolArray[index] = this.m_states[index].m_accessingSymbol; + return csymbolArray; + } + } + + public ParseState Top => this.m_states[this.m_states.Length - 1]; + } +} diff --git a/LibreMetaverse.LslTools/Tools/Precedence.cs b/LibreMetaverse.LslTools/Tools/Precedence.cs new file mode 100644 index 00000000..40d7fba2 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Precedence.cs @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class Precedence + { + public Precedence.PrecType m_type; + public int m_prec; + public Precedence m_next; + + public Precedence(Precedence.PrecType t, int p, Precedence next) + { + if (Precedence.CheckType(next, t, 0) != 0) + Console.WriteLine("redeclaration of precedence"); + this.m_next = next; + this.m_type = t; + this.m_prec = p; + } + + private static int CheckType(Precedence p, Precedence.PrecType t, int d) + { + if (p == null) + return 0; + if (p.m_type == t || p.m_type <= Precedence.PrecType.nonassoc && t <= Precedence.PrecType.nonassoc) + return p.m_prec; + return Precedence.Check(p.m_next, t, d + 1); + } + + public static int Check(Precedence p, Precedence.PrecType t, int d) + { + if (p == null) + return 0; + if (p.m_type == t) + return p.m_prec; + return Precedence.Check(p.m_next, t, d + 1); + } + + public static int Check(CSymbol s, Production p, int d) + { + if (s.m_prec == null) + return 0; + int num1 = Precedence.CheckType(s.m_prec, Precedence.PrecType.after, d + 1); + int num2 = Precedence.CheckType(s.m_prec, Precedence.PrecType.left, d + 1); + if (num1 > num2) + return num1 - p.m_prec; + return num2 - p.m_prec; + } + + public static void Check(Production p) + { + int count = p.m_rhs.Count; + while (count > 1 && ((SYMBOL) p.m_rhs[count - 1]).IsAction()) + --count; + switch (count) + { + case 2: + if ((CSymbol) p.m_rhs[0] == p.m_lhs) + { + int num = Precedence.Check(((CSymbol) p.m_rhs[1]).m_prec, Precedence.PrecType.after, 0); + if (num == 0) + break; + p.m_prec = num; + break; + } + if ((CSymbol) p.m_rhs[1] != p.m_lhs) + break; + int num1 = Precedence.Check(((CSymbol) p.m_rhs[0]).m_prec, Precedence.PrecType.before, 0); + if (num1 == 0) + break; + p.m_prec = num1; + break; + case 3: + int num2 = Precedence.CheckType(((CSymbol) p.m_rhs[1]).m_prec, Precedence.PrecType.left, 0); + if (num2 == 0 || (CSymbol) p.m_rhs[2] != p.m_lhs) + break; + p.m_prec = num2; + break; + } + } + + public enum PrecType + { + left, + right, + nonassoc, + before, + after, + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ProdItem.cs b/LibreMetaverse.LslTools/Tools/ProdItem.cs new file mode 100644 index 00000000..4850be07 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ProdItem.cs @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class ProdItem + { + public Production m_prod; + public int m_pos; + public bool m_done; + private SymbolSet follow; + + public ProdItem(Production prod, int pos) + { + this.m_prod = prod; + this.m_pos = pos; + this.m_done = false; + } + + public ProdItem() + { + this.m_prod = (Production) null; + this.m_pos = 0; + this.m_done = false; + } + + public CSymbol Next() + { + if (this.m_pos < this.m_prod.m_rhs.Count) + return (CSymbol) this.m_prod.m_rhs[this.m_pos]; + return (CSymbol) null; + } + + public bool IsReducingAction() + { + if (this.m_pos == this.m_prod.m_rhs.Count - 1) + return this.Next().IsAction(); + return false; + } + + public SymbolSet FirstOfRest(SymbolsGen syms) + { + if (this.follow != null) + return this.follow; + this.follow = new SymbolSet(syms); + bool flag = false; + int count = this.m_prod.m_rhs.Count; + for (int index = this.m_pos + 1; index < count; ++index) + { + CSymbol rh = (CSymbol) this.m_prod.m_rhs[index]; + foreach (CSymbol key in (IEnumerable) rh.m_first.Keys) + this.follow.CheckIn(key); + if (!rh.IsNullable()) + { + flag = true; + break; + } + } + if (!flag) + this.follow.Add(this.m_prod.m_lhs.m_follow); + this.follow = this.follow.Resolve(); + return this.follow; + } + + public void Print() + { + Console.Write(" {0} {1} : ", (object) this.m_prod.m_pno, this.m_prod.m_lhs == null ? (object) "$start" : (object) this.m_prod.m_lhs.yytext); + int index; + for (index = 0; index < this.m_prod.m_rhs.Count; ++index) + { + if (index == this.m_pos) + Console.Write("_"); + else + Console.Write(" "); + string str = ((TOKEN) this.m_prod.m_rhs[index]).yytext; + if (str.Equals("\n")) + str = "\\n"; + Console.Write(str); + } + if (index == this.m_pos) + Console.Write("_"); + Console.Write(" "); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ProdItemList.cs b/LibreMetaverse.LslTools/Tools/ProdItemList.cs new file mode 100644 index 00000000..02b96ef6 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ProdItemList.cs @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + internal class ProdItemList + { + public ProdItem m_pi; + public ProdItemList m_next; + + public ProdItemList(ProdItem pi, ProdItemList n) + { + this.m_pi = pi; + this.m_next = n; + } + + public ProdItemList() + { + this.m_pi = (ProdItem) null; + this.m_next = (ProdItemList) null; + } + + public bool Add(ProdItem pi) + { + if (this.m_pi == null) + { + this.m_next = new ProdItemList(); + this.m_pi = pi; + } + else if (this.m_pi.m_prod.m_pno < pi.m_prod.m_pno || this.m_pi.m_prod.m_pno == pi.m_prod.m_pno && this.m_pi.m_pos < pi.m_pos) + { + this.m_next = new ProdItemList(this.m_pi, this.m_next); + this.m_pi = pi; + } + else + { + if (this.m_pi.m_prod.m_pno == pi.m_prod.m_pno && this.m_pi.m_pos == pi.m_pos) + return false; + return this.m_next.Add(pi); + } + return true; + } + + public bool AtEnd => this.m_pi == null; + } +} diff --git a/LibreMetaverse.LslTools/Tools/Production.cs b/LibreMetaverse.LslTools/Tools/Production.cs new file mode 100644 index 00000000..3f7f4063 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Production.cs @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class Production + { + public ObjectList m_rhs = new ObjectList(); + public Hashtable m_alias = new Hashtable(); + public int m_pno; + public CSymbol m_lhs; + public bool m_actionsOnly; + public int m_prec; + + public Production(SymbolsGen syms) + { + this.m_lhs = (CSymbol) null; + this.m_prec = 0; + this.m_pno = syms.pno++; + this.m_actionsOnly = true; + syms.prods.Add((object) this); + } + + public Production(SymbolsGen syms, CSymbol lhs) + { + this.m_lhs = lhs; + this.m_prec = 0; + this.m_pno = syms.pno++; + this.m_actionsOnly = true; + syms.prods.Add((object) this); + lhs.m_prods.Add((object) this); + } + + private Production() + { + } + + public void AddToRhs(CSymbol s) + { + this.m_rhs.Add((object) s); + this.m_actionsOnly = this.m_actionsOnly && s.IsAction(); + } + + public void AddFirst(CSymbol s, int j) + { + for (; j < this.m_rhs.Count; ++j) + { + CSymbol rh = (CSymbol) this.m_rhs[j]; + s.AddFollow(rh.m_first); + if (!rh.IsNullable()) + break; + } + } + + public bool CouldBeEmpty(int j) + { + for (; j < this.m_rhs.Count; ++j) + { + if (!((CSymbol) this.m_rhs[j]).IsNullable()) + return false; + } + return true; + } + + public CSymbol[] Prefix(int i) + { + CSymbol[] csymbolArray = new CSymbol[i]; + for (int index = 0; index < i; ++index) + csymbolArray[index] = (CSymbol) this.m_rhs[index]; + return csymbolArray; + } + + public void StackRef(ref string str, int ch, int ix) + { + int num = this.m_rhs.Count + 1; + CSymbol rh = (CSymbol) this.m_rhs[ix - 1]; + str += string.Format("\n\t(({0})(yyq.StackAt({1}).m_value))\n\t", (object) rh.TypeStr(), (object) (num - ix - 1)); + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new Production(); + Production production = (Production) o; + if (s.Encode) + { + s.Serialise((object) production.m_pno); + return (object) null; + } + production.m_pno = (int) s.Deserialise(); + return (object) production; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReAlt.cs b/LibreMetaverse.LslTools/Tools/ReAlt.cs new file mode 100644 index 00000000..703da37b --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReAlt.cs @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReAlt : Regex + { + public Regex m_alt; + + public ReAlt(TokensGen tks, Regex sub, int p, string str) + { + this.m_sub = sub; + this.m_alt = new Regex(tks, p, str); + } + + public override void Print(TextWriter s) + { + s.Write("("); + if (this.m_sub != null) + this.m_sub.Print(s); + s.Write("|"); + if (this.m_alt != null) + this.m_alt.Print(s); + s.Write(")"); + } + + public override int Match(string str, int pos, int max) + { + int num1 = -1; + int num2 = -1; + if (this.m_sub != null) + num1 = this.m_sub.Match(str, pos, max); + if (this.m_alt != null) + num2 = this.m_sub.Match(str, pos, max); + if (num1 > num2) + return num1; + return num2; + } + + public override void Build(Nfa nfa) + { + if (this.m_alt != null) + { + Nfa nfa1 = new Nfa(nfa.m_tks, this.m_alt); + nfa.AddEps((NfaNode) nfa1); + nfa1.m_end.AddEps(nfa.m_end); + } + base.Build(nfa); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReCat.cs b/LibreMetaverse.LslTools/Tools/ReCat.cs new file mode 100644 index 00000000..ec1c9fee --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReCat.cs @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReCat : Regex + { + private Regex m_next; + + public ReCat(TokensGen tks, Regex sub, int p, string str) + { + this.m_sub = sub; + this.m_next = new Regex(tks, p, str); + } + + public override void Print(TextWriter s) + { + s.Write("("); + if (this.m_sub != null) + this.m_sub.Print(s); + s.Write(")("); + if (this.m_next != null) + this.m_next.Print(s); + s.Write(")"); + } + + public override int Match(string str, int pos, int max) + { + int num1 = -1; + if (this.m_next == null) + return base.Match(str, pos, max); + if (this.m_sub == null) + return this.m_next.Match(str, pos, max); + int num2; + for (int max1 = max; max1 >= 0; max1 = num2 - 1) + { + num2 = this.m_sub.Match(str, pos, max1); + if (num2 >= 0) + { + int num3 = this.m_next.Match(str, pos + num2, max); + if (num3 >= 0 && num2 + num3 > num1) + num1 = num2 + num3; + } + else + break; + } + return num1; + } + + public override void Build(Nfa nfa) + { + if (this.m_next != null) + { + if (this.m_sub != null) + { + Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub); + Nfa nfa2 = new Nfa(nfa.m_tks, this.m_next); + nfa.AddEps((NfaNode) nfa1); + nfa1.m_end.AddEps((NfaNode) nfa2); + nfa2.m_end.AddEps(nfa.m_end); + } + else + this.m_next.Build(nfa); + } + else + base.Build(nfa); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReCategory.cs b/LibreMetaverse.LslTools/Tools/ReCategory.cs new file mode 100644 index 00000000..eaed0667 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReCategory.cs @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReCategory : Regex + { + private string m_str; + private ChTest m_test; + + public ReCategory(TokensGen tks, string str) + { + this.m_str = str; + this.m_test = tks.m_tokens.GetTest(str); + } + + public override bool Match(char ch) + { + return this.m_test(ch); + } + + public override void Print(TextWriter s) + { + s.WriteLine("{" + this.m_str + "}"); + } + + public override void Build(Nfa nfa) + { + nfa.AddArcEx((Regex) this, nfa.m_end); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReOpt.cs b/LibreMetaverse.LslTools/Tools/ReOpt.cs new file mode 100644 index 00000000..0d0d7301 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReOpt.cs @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReOpt : Regex + { + public ReOpt(Regex sub) + { + this.m_sub = sub; + } + + public override void Print(TextWriter s) + { + this.m_sub.Print(s); + s.Write("?"); + } + + public override int Match(string str, int pos, int max) + { + int num = this.m_sub.Match(str, pos, max); + if (num < 0) + num = 0; + return num; + } + + public override void Build(Nfa nfa) + { + nfa.AddEps(nfa.m_end); + base.Build(nfa); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/RePlus.cs b/LibreMetaverse.LslTools/Tools/RePlus.cs new file mode 100644 index 00000000..b533608a --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/RePlus.cs @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class RePlus : Regex + { + public RePlus(Regex sub) + { + this.m_sub = sub; + } + + public override void Print(TextWriter s) + { + this.m_sub.Print(s); + s.Write("+"); + } + + public override int Match(string str, int pos, int max) + { + int num1 = this.m_sub.Match(str, pos, max); + if (num1 < 0) + return -1; + int num2 = num1; + while (num1 > 0) + { + num1 = this.m_sub.Match(str, pos + num2, max); + if (num1 >= 0) + num2 += num1; + else + break; + } + return num2; + } + + public override void Build(Nfa nfa) + { + base.Build(nfa); + nfa.m_end.AddEps((NfaNode) nfa); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReRange.cs b/LibreMetaverse.LslTools/Tools/ReRange.cs new file mode 100644 index 00000000..84d2c5d3 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReRange.cs @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; +using System.IO; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + internal class ReRange : Regex + { + public Hashtable m_map = new Hashtable(); + public bool m_invert; + + public ReRange(TokensGen tks, string str) + { + StringBuilder stringBuilder = new StringBuilder(); + int num1 = str.Length - 1; + for (int index = 1; index < num1; ++index) + { + if (str[index] == '\\') + { + if (index + 1 < num1) + ++index; + if (str[index] >= '0' && str[index] <= '7') + { + int num2; + for (num2 = (int) str[index++] - 48; index < num1 && str[index] >= '0' && str[index] <= '7'; ++index) + num2 = num2 * 8 + (int) str[index] - 48; + stringBuilder.Append((char) num2); + } + else + { + char ch = str[index]; + switch (ch) + { + case 'r': + stringBuilder.Append('\r'); + continue; + case 't': + stringBuilder.Append('\t'); + continue; + case 'v': + stringBuilder.Append('\v'); + continue; + default: + if (ch == 'n') + { + stringBuilder.Append('\n'); + continue; + } + stringBuilder.Append(str[index]); + continue; + } + } + } + else + stringBuilder.Append(str[index]); + } + int length = stringBuilder.Length; + if (length > 0 && stringBuilder[0] == '^') + { + this.m_invert = true; + stringBuilder.Remove(0, 1).Append(char.MinValue).Append(char.MaxValue); + } + for (int index1 = 0; index1 < length; ++index1) + { + if (index1 + 1 < length && stringBuilder[index1 + 1] == '-') + { + for (int index2 = (int) stringBuilder[index1]; index2 <= (int) stringBuilder[index1 + 2]; ++index2) + this.Set(tks, (char) index2); + index1 += 2; + } + else + this.Set(tks, stringBuilder[index1]); + } + } + + public override void Print(TextWriter s) + { + s.Write("["); + if (this.m_invert) + s.Write("^"); + foreach (char key in (IEnumerable) this.m_map.Keys) + s.Write(key); + s.Write("]"); + } + + private void Set(TokensGen tks, char ch) + { + this.m_map[(object) ch] = (object) true; + tks.m_tokens.UsingChar(ch); + } + + public override bool Match(char ch) + { + if (this.m_invert) + return !this.m_map.Contains((object) ch); + return this.m_map.Contains((object) ch); + } + + public override int Match(string str, int pos, int max) + { + return max < pos || !this.Match(str[pos]) ? -1 : 1; + } + + public override void Build(Nfa nfa) + { + nfa.AddArcEx((Regex) this, nfa.m_end); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReStar.cs b/LibreMetaverse.LslTools/Tools/ReStar.cs new file mode 100644 index 00000000..26bf1887 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReStar.cs @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReStar : Regex + { + public ReStar(Regex sub) + { + this.m_sub = sub; + } + + public override void Print(TextWriter s) + { + this.m_sub.Print(s); + s.Write("*"); + } + + public override int Match(string str, int pos, int max) + { + int num1 = this.m_sub.Match(str, pos, max); + if (num1 < 0) + return -1; + int num2 = 0; + while (num1 > 0) + { + num1 = this.m_sub.Match(str, pos + num2, max); + if (num1 >= 0) + num2 += num1; + else + break; + } + return num2; + } + + public override void Build(Nfa nfa) + { + Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub); + nfa.AddEps((NfaNode) nfa1); + nfa.AddEps(nfa.m_end); + nfa1.m_end.AddEps((NfaNode) nfa); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReStr.cs b/LibreMetaverse.LslTools/Tools/ReStr.cs new file mode 100644 index 00000000..92ee22c3 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReStr.cs @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReStr : Regex + { + public string m_str = ""; + + public ReStr() + { + } + + public ReStr(TokensGen tks, string str) + { + this.m_str = str; + foreach (var c in str) + tks.m_tokens.UsingChar(c); + } + + public ReStr(TokensGen tks, char ch) + { + this.m_str = new string(ch, 1); + tks.m_tokens.UsingChar(ch); + } + + public override void Print(TextWriter s) + { + s.Write($"(\"{(object)this.m_str}\")"); + } + + public override int Match(string str, int pos, int max) + { + int length = this.m_str.Length; + if (length > max || length > max - pos) + return -1; + for (int index = 0; index < length; ++index) + { + if ((int) str[index] != (int) this.m_str[index]) + return -1; + } + return length; + } + + public override void Build(Nfa nfa) + { + int length = this.m_str.Length; + NfaNode nfaNode = (NfaNode) nfa; + for (int index = 0; index < length; ++index) + { + NfaNode next = new NfaNode(nfa.m_tks); + nfaNode.AddArc(this.m_str[index], next); + nfaNode = next; + } + nfaNode.AddEps(nfa.m_end); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/ReUStr.cs b/LibreMetaverse.LslTools/Tools/ReUStr.cs new file mode 100644 index 00000000..492061bc --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ReUStr.cs @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class ReUStr : ReStr + { + public ReUStr(TokensGen tks, string str) + { + this.m_str = str; + foreach (var c in str) + { + tks.m_tokens.UsingChar(char.ToLower(c)); + tks.m_tokens.UsingChar(char.ToUpper(c)); + } + } + + public ReUStr(TokensGen tks, char ch) + { + this.m_str = new string(ch, 1); + tks.m_tokens.UsingChar(char.ToLower(ch)); + tks.m_tokens.UsingChar(char.ToUpper(ch)); + } + + public override void Print(TextWriter s) + { + s.Write($"(U\"{(object)this.m_str}\")"); + } + + public override int Match(string str, int pos, int max) + { + int length = this.m_str.Length; + if (length > max || length > max - pos) + return -1; + for (int index = 0; index < length; ++index) + { + if ((int) char.ToUpper(str[index]) != (int) char.ToUpper(this.m_str[index])) + return -1; + } + return length; + } + + public override void Build(Nfa nfa) + { + int length = this.m_str.Length; + NfaNode nfaNode = (NfaNode) nfa; + for (int index = 0; index < length; ++index) + { + NfaNode next = new NfaNode(nfa.m_tks); + nfaNode.AddUArc(this.m_str[index], next); + nfaNode = next; + } + nfaNode.AddEps(nfa.m_end); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Regex.cs b/LibreMetaverse.LslTools/Tools/Regex.cs new file mode 100644 index 00000000..12fe65ba --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Regex.cs @@ -0,0 +1,330 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + public class Regex + { + public Regex m_sub; + + public Regex(TokensGen tks, int p, string str) + { + int length = str.Length; + int num1 = 0; + int num2 = 0; + int num3 = 0; + this.m_sub = (Regex) null; + if (length == 0) + return; + int startIndex; + if (str[0] == '(') + { + int index; + for (index = 1; index < length; ++index) + { + if (str[index] == '\\') + ++index; + else if (str[index] == ']' && num2 > 0) + num2 = 0; + else if (num2 <= 0) + { + if (str[index] == '"' || str[index] == '\'') + { + if (num3 == (int) str[index]) + num3 = 0; + else if (num3 == 0) + num3 = (int) str[index]; + } + else if (num3 <= 0) + { + if (str[index] == '[') + ++num2; + else if (str[index] == '(') + ++num1; + else if (str[index] == ')' && num1-- == 0) + break; + } + } + } + if (index != length) + { + this.m_sub = new Regex(tks, p + 1, str.Substring(1, index - 1)); + startIndex = index + 1; + } + else + goto label_99; + } + else if (str[0] == '[') + { + int index; + for (index = 1; index < length && str[index] != ']'; ++index) + { + if (str[index] == '\\') + ++index; + } + if (index != length) + { + this.m_sub = (Regex) new ReRange(tks, str.Substring(0, index + 1)); + startIndex = index + 1; + } + else + goto label_99; + } + else if (str[0] == '\'' || str[0] == '"') + { + StringBuilder stringBuilder = new StringBuilder(); + int index; + for (index = 1; index < length && (int) str[index] != (int) str[0]; ++index) + { + if (str[index] == '\\') + { + char ch = str[++index]; + switch (ch) + { + case 'r': + stringBuilder.Append('\r'); + continue; + case 't': + stringBuilder.Append('\t'); + continue; + case 'v': + stringBuilder.Append('\v'); + continue; + default: + switch (ch) + { + case '\n': + continue; + case '"': + stringBuilder.Append('"'); + continue; + case '\'': + stringBuilder.Append('\''); + continue; + case '0': + stringBuilder.Append(char.MinValue); + continue; + case '\\': + stringBuilder.Append('\\'); + continue; + case 'n': + stringBuilder.Append('\n'); + continue; + default: + stringBuilder.Append(str[index]); + continue; + } + } + } + else + stringBuilder.Append(str[index]); + } + if (index != length) + { + startIndex = index + 1; + this.m_sub = (Regex) new ReStr(tks, stringBuilder.ToString()); + } + else + goto label_99; + } + else if (str.StartsWith("U\"") || str.StartsWith("U'")) + { + StringBuilder stringBuilder = new StringBuilder(); + int index; + for (index = 2; index < length && (int) str[index] != (int) str[1]; ++index) + { + if (str[index] == '\\') + { + char ch = str[++index]; + switch (ch) + { + case 'r': + stringBuilder.Append('\r'); + continue; + case 't': + stringBuilder.Append('\t'); + continue; + case 'v': + stringBuilder.Append('\v'); + continue; + default: + switch (ch) + { + case '\n': + continue; + case '"': + stringBuilder.Append('"'); + continue; + case '\'': + stringBuilder.Append('\''); + continue; + case '\\': + stringBuilder.Append('\\'); + continue; + case 'n': + stringBuilder.Append('\n'); + continue; + default: + stringBuilder.Append(str[index]); + continue; + } + } + } + else + stringBuilder.Append(str[index]); + } + if (index != length) + { + startIndex = index + 1; + this.m_sub = (Regex) new ReUStr(tks, stringBuilder.ToString()); + } + else + goto label_99; + } + else if (str[0] == '\\') + { + char ch1; + char ch2 = ch1 = str[1]; + switch (ch2) + { + case 'r': + ch1 = '\r'; + break; + case 't': + ch1 = '\t'; + break; + case 'v': + ch1 = '\v'; + break; + default: + if (ch2 == 'n') + { + ch1 = '\n'; + break; + } + break; + } + this.m_sub = (Regex) new ReStr(tks, ch1); + startIndex = 2; + } + else if (str[0] == '{') + { + int index = 1; + while (index < length && str[index] != '}') + ++index; + if (index != length) + { + string str1 = str.Substring(1, index - 1); + string define = (string) tks.defines[(object) str1]; + this.m_sub = define != null ? new Regex(tks, p + 1, define) : (Regex) new ReCategory(tks, str1); + startIndex = index + 1; + } + else + goto label_99; + } + else + { + this.m_sub = str[0] != '.' ? (Regex) new ReStr(tks, str[0]) : (Regex) new ReRange(tks, "[^\n]"); + startIndex = 1; + } + if (startIndex >= length) + return; + if (str[startIndex] == '?') + { + this.m_sub = (Regex) new ReOpt(this.m_sub); + ++startIndex; + } + else if (str[startIndex] == '*') + { + this.m_sub = (Regex) new ReStar(this.m_sub); + ++startIndex; + } + else if (str[startIndex] == '+') + { + this.m_sub = (Regex) new RePlus(this.m_sub); + ++startIndex; + } + if (startIndex >= length) + return; + if (str[startIndex] == '|') + { + this.m_sub = (Regex) new ReAlt(tks, this.m_sub, p + startIndex + 1, str.Substring(startIndex + 1, length - startIndex - 1)); + return; + } + if (startIndex >= length) + return; + this.m_sub = (Regex) new ReCat(tks, this.m_sub, p + startIndex, str.Substring(startIndex, length - startIndex)); + return; +label_99: + tks.erh.Error((CSToolsException) new CSToolsFatalException(1, tks.sourceLineInfo(p), str, "ill-formed regular expression " + str)); + } + + protected Regex() + { + } + + public virtual void Print(TextWriter s) + { + if (this.m_sub == null) + return; + this.m_sub.Print(s); + } + + public virtual bool Match(char ch) + { + return false; + } + + public int Match(string str) + { + return this.Match(str, 0, str.Length); + } + + public virtual int Match(string str, int pos, int max) + { + if (max < 0) + return -1; + if (this.m_sub != null) + return this.m_sub.Match(str, pos, max); + return 0; + } + + public virtual void Build(Nfa nfa) + { + if (this.m_sub != null) + { + Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub); + nfa.AddEps((NfaNode) nfa1); + nfa1.m_end.AddEps(nfa.m_end); + } + else + nfa.AddEps(nfa.m_end); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Relation.cs b/LibreMetaverse.LslTools/Tools/Relation.cs new file mode 100644 index 00000000..13585706 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Relation.cs @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public delegate Hashtable Relation(Transition a); +} diff --git a/LibreMetaverse.LslTools/Tools/ResWds.cs b/LibreMetaverse.LslTools/Tools/ResWds.cs new file mode 100644 index 00000000..e483f6f5 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/ResWds.cs @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class ResWds + { + public Hashtable m_wds = new Hashtable(); + public bool m_upper; + + public static ResWds New(TokensGen tks, string str) + { + ResWds resWds = new ResWds(); + str = str.Trim(); + if (str[0] == 'U') + { + resWds.m_upper = true; + str = str.Substring(1).Trim(); + } + if (str[0] == '{' && str[str.Length - 1] == '}') + { + str = str.Substring(1, str.Length - 2).Trim(); + string str1 = str; + char[] chArray = new char[1]{ ',' }; + foreach (string str2 in str1.Split(chArray)) + { + string str3 = str2.Trim(); + string name = str3; + int num = str3.IndexOf(' '); + if (num > 0) + { + name = str3.Substring(num).Trim(); + str3 = str3.Substring(0, num); + } + resWds.m_wds[(object) str3] = (object) name; + if (tks.m_tokens.tokens[(object) name] == null) + { + TokClassDef tokClassDef = new TokClassDef((GenBase) tks, name, "TOKEN"); + tks.m_outFile.WriteLine("//%{0}+{1}", (object) name, (object) tokClassDef.m_yynum); + tks.m_outFile.Write("public class {0} : TOKEN", (object) name); + tks.m_outFile.WriteLine("{ public override string yyname { get { return \"" + name + "\";}}"); + tks.m_outFile.WriteLine("public override int yynum { get { return " + (object) tokClassDef.m_yynum + "; }}"); + tks.m_outFile.WriteLine(" public " + name + "(Lexer yyl):base(yyl) {}}"); + } + } + return resWds; + } + tks.m_tokens.erh.Error(new CSToolsException(47, "bad ResWds element")); + return (ResWds) null; + } + + public void Check(Lexer yyl, ref TOKEN tok) + { + string str = tok.yytext; + if (this.m_upper) + str = str.ToUpper(); + object wd = this.m_wds[(object) str]; + if (wd == null) + return; + tok = (TOKEN) Tfactory.create((string) wd, yyl); + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new ResWds(); + ResWds resWds = (ResWds) o; + if (s.Encode) + { + s.Serialise((object) resWds.m_upper); + s.Serialise((object) resWds.m_wds); + return (object) null; + } + resWds.m_upper = (bool) s.Deserialise(); + resWds.m_wds = (Hashtable) s.Deserialise(); + return (object) resWds; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/SCreator.cs b/LibreMetaverse.LslTools/Tools/SCreator.cs new file mode 100644 index 00000000..06af23c6 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SCreator.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public delegate object SCreator(Parser yyp); +} diff --git a/LibreMetaverse.LslTools/Tools/SYMBOL.cs b/LibreMetaverse.LslTools/Tools/SYMBOL.cs new file mode 100644 index 00000000..072ae29b --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SYMBOL.cs @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class SYMBOL + { + public ObjectList kids = new ObjectList(); + public object m_dollar; + public int pos; + public Lexer yylx; + public Parser yyps; + + protected SYMBOL() + { + } + + public SYMBOL(Lexer yyl) + { + this.yylx = yyl; + } + + public SYMBOL(Parser yyp) + { + this.yyps = yyp; + this.yylx = yyp.m_lexer; + } + + public int Line => this.yylx.sourceLineInfo(this.pos).lineNumber; + + public int Position => this.yylx.sourceLineInfo(this.pos).rawCharPosition; + + public string Pos => this.yylx.Saypos(this.pos); + + public object yylval + { + get => this.m_dollar; + set => this.m_dollar = value; + } + + public virtual int yynum => 0; + + public virtual bool IsTerminal() + { + return false; + } + + public virtual bool IsAction() + { + return false; + } + + public virtual bool IsCSymbol() + { + return false; + } + + public YyParser yyact + { + get + { + if (this.yyps != null) + return this.yyps.m_symbols; + return (YyParser) null; + } + } + + public virtual bool Pass(YyParser syms, int snum, out ParserEntry entry) + { + ParsingInfo parsingInfo = (ParsingInfo) syms.symbolInfo[(object) this.yynum]; + if (parsingInfo == null) + { + string s = string.Format("No parsinginfo for symbol {0} {1}", (object) this.yyname, (object) this.yynum); + syms.erh.Error((CSToolsException) new CSToolsFatalException(9, this.yylx, this.yyname, s)); + } + bool flag = parsingInfo.m_parsetable.Contains((object) snum); + entry = !flag ? (ParserEntry) null : (ParserEntry) parsingInfo.m_parsetable[(object) snum]; + return flag; + } + + public virtual string yyname => nameof (SYMBOL); + + public override string ToString() + { + return this.yyname; + } + + public virtual bool Matches(string s) + { + return false; + } + + public virtual void Print() + { + Console.WriteLine(this.ToString()); + } + + private void ConcreteSyntaxTree(string n) + { + if (this is error) + Console.WriteLine(n + " " + this.ToString()); + else + Console.WriteLine(n + "-" + this.ToString()); + int num = 0; + foreach (SYMBOL kid in this.kids) + kid.ConcreteSyntaxTree(n + (num++ != this.kids.Count - 1 ? " |" : " ")); + } + + public virtual void ConcreteSyntaxTree() + { + this.ConcreteSyntaxTree(""); + } + + public static implicit operator int(SYMBOL s) + { + object dollar; + for (; (dollar = s.m_dollar) is SYMBOL; s = (SYMBOL) dollar) + { + if (dollar == null) + break; + } + try + { + return (int) dollar; + } + catch (Exception) + { + Console.WriteLine("attempt to convert from " + (object) s.m_dollar.GetType()); + throw; + } + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Serialiser.cs b/LibreMetaverse.LslTools/Tools/Serialiser.cs new file mode 100644 index 00000000..6be49abc --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Serialiser.cs @@ -0,0 +1,367 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Globalization; +using System.IO; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + public class Serialiser + { + private static Hashtable tps = new Hashtable(); + private static Hashtable srs = new Hashtable(); + private Hashtable obs = new Hashtable(); + private int id = 100; + private const string Version = "4.5"; + private TextWriter f; + private int[] b; + private int pos; + private int cl; + + public Serialiser(TextWriter ff) + { + this.f = ff; + } + + public Serialiser(int[] bb) + { + this.b = bb; + } + + static Serialiser() + { + Serialiser.srs[(object) Serialiser.SerType.Null] = (object) new Serialiser.ObjectSerialiser(Serialiser.NullSerialise); + Serialiser.tps[(object) typeof (int)] = (object) Serialiser.SerType.Int; + Serialiser.srs[(object) Serialiser.SerType.Int] = (object) new Serialiser.ObjectSerialiser(Serialiser.IntSerialise); + Serialiser.tps[(object) typeof (string)] = (object) Serialiser.SerType.String; + Serialiser.srs[(object) Serialiser.SerType.String] = (object) new Serialiser.ObjectSerialiser(Serialiser.StringSerialise); + Serialiser.tps[(object) typeof (Hashtable)] = (object) Serialiser.SerType.Hashtable; + Serialiser.srs[(object) Serialiser.SerType.Hashtable] = (object) new Serialiser.ObjectSerialiser(Serialiser.HashtableSerialise); + Serialiser.tps[(object) typeof (char)] = (object) Serialiser.SerType.Char; + Serialiser.srs[(object) Serialiser.SerType.Char] = (object) new Serialiser.ObjectSerialiser(Serialiser.CharSerialise); + Serialiser.tps[(object) typeof (bool)] = (object) Serialiser.SerType.Bool; + Serialiser.srs[(object) Serialiser.SerType.Bool] = (object) new Serialiser.ObjectSerialiser(Serialiser.BoolSerialise); + Serialiser.tps[(object) typeof (Encoding)] = (object) Serialiser.SerType.Encoding; + Serialiser.srs[(object) Serialiser.SerType.Encoding] = (object) new Serialiser.ObjectSerialiser(Serialiser.EncodingSerialise); + Serialiser.tps[(object) typeof (UnicodeCategory)] = (object) Serialiser.SerType.UnicodeCategory; + Serialiser.srs[(object) Serialiser.SerType.UnicodeCategory] = (object) new Serialiser.ObjectSerialiser(Serialiser.UnicodeCategorySerialise); + Serialiser.tps[(object) typeof (CSymbol.SymType)] = (object) Serialiser.SerType.Symtype; + Serialiser.srs[(object) Serialiser.SerType.Symtype] = (object) new Serialiser.ObjectSerialiser(Serialiser.SymtypeSerialise); + Serialiser.tps[(object) typeof (Charset)] = (object) Serialiser.SerType.Charset; + Serialiser.srs[(object) Serialiser.SerType.Charset] = (object) new Serialiser.ObjectSerialiser(Charset.Serialise); + Serialiser.tps[(object) typeof (TokClassDef)] = (object) Serialiser.SerType.TokClassDef; + Serialiser.srs[(object) Serialiser.SerType.TokClassDef] = (object) new Serialiser.ObjectSerialiser(TokClassDef.Serialise); + Serialiser.tps[(object) typeof (Dfa)] = (object) Serialiser.SerType.Dfa; + Serialiser.srs[(object) Serialiser.SerType.Dfa] = (object) new Serialiser.ObjectSerialiser(Dfa.Serialise); + Serialiser.tps[(object) typeof (ResWds)] = (object) Serialiser.SerType.ResWds; + Serialiser.srs[(object) Serialiser.SerType.ResWds] = (object) new Serialiser.ObjectSerialiser(ResWds.Serialise); + Serialiser.tps[(object) typeof (Dfa.Action)] = (object) Serialiser.SerType.Action; + Serialiser.srs[(object) Serialiser.SerType.Action] = (object) new Serialiser.ObjectSerialiser(Dfa.Action.Serialise); + Serialiser.tps[(object) typeof (ParserOldAction)] = (object) Serialiser.SerType.ParserOldAction; + Serialiser.srs[(object) Serialiser.SerType.ParserOldAction] = (object) new Serialiser.ObjectSerialiser(ParserOldAction.Serialise); + Serialiser.tps[(object) typeof (ParserSimpleAction)] = (object) Serialiser.SerType.ParserSimpleAction; + Serialiser.srs[(object) Serialiser.SerType.ParserSimpleAction] = (object) new Serialiser.ObjectSerialiser(ParserSimpleAction.Serialise); + Serialiser.tps[(object) typeof (ParserShift)] = (object) Serialiser.SerType.ParserShift; + Serialiser.srs[(object) Serialiser.SerType.ParserShift] = (object) new Serialiser.ObjectSerialiser(ParserShift.Serialise); + Serialiser.tps[(object) typeof (ParserReduce)] = (object) Serialiser.SerType.ParserReduce; + Serialiser.srs[(object) Serialiser.SerType.ParserReduce] = (object) new Serialiser.ObjectSerialiser(ParserReduce.Serialise); + Serialiser.tps[(object) typeof (ParseState)] = (object) Serialiser.SerType.ParseState; + Serialiser.srs[(object) Serialiser.SerType.ParseState] = (object) new Serialiser.ObjectSerialiser(ParseState.Serialise); + Serialiser.tps[(object) typeof (ParsingInfo)] = (object) Serialiser.SerType.ParsingInfo; + Serialiser.srs[(object) Serialiser.SerType.ParsingInfo] = (object) new Serialiser.ObjectSerialiser(ParsingInfo.Serialise); + Serialiser.tps[(object) typeof (CSymbol)] = (object) Serialiser.SerType.CSymbol; + Serialiser.srs[(object) Serialiser.SerType.CSymbol] = (object) new Serialiser.ObjectSerialiser(CSymbol.Serialise); + Serialiser.tps[(object) typeof (Literal)] = (object) Serialiser.SerType.Literal; + Serialiser.srs[(object) Serialiser.SerType.Literal] = (object) new Serialiser.ObjectSerialiser(Literal.Serialise); + Serialiser.tps[(object) typeof (Production)] = (object) Serialiser.SerType.Production; + Serialiser.srs[(object) Serialiser.SerType.Production] = (object) new Serialiser.ObjectSerialiser(Production.Serialise); + Serialiser.tps[(object) typeof (EOF)] = (object) Serialiser.SerType.EOF; + Serialiser.srs[(object) Serialiser.SerType.EOF] = (object) new Serialiser.ObjectSerialiser(EOF.Serialise); + } + + public void VersionCheck() + { + if (this.Encode) + { + this.Serialise((object) "4.5"); + } + else + { + string str = this.Deserialise() as string; + if (str == null) + throw new Exception("Serialisation error - found data from version 4.4 or earlier"); + if (str != "4.5") + throw new Exception("Serialisation error - expected version 4.5, found data from version " + str); + } + } + + public bool Encode => this.f != null; + + private void _Write(Serialiser.SerType t) + { + this._Write((int) t); + } + + public void _Write(int i) + { + if (this.cl == 5) + { + this.f.WriteLine(); + this.cl = 0; + } + ++this.cl; + this.f.Write(i); + this.f.Write(","); + } + + public int _Read() + { + return this.b[this.pos++]; + } + + private static object NullSerialise(object o, Serialiser s) + { + return (object) null; + } + + private static object IntSerialise(object o, Serialiser s) + { + if (!s.Encode) + return (object) s._Read(); + s._Write((int) o); + return (object) null; + } + + private static object StringSerialise(object o, Serialiser s) + { + if (s == null) + return (object) ""; + Encoding encoding = (Encoding) new UnicodeEncoding(); + if (s.Encode) + { + byte[] bytes = encoding.GetBytes((string) o); + s._Write(bytes.Length); + foreach (var t in bytes) + s._Write((int) t); + + return (object) null; + } + int count = s._Read(); + byte[] bytes1 = new byte[count]; + for (int index = 0; index < count; ++index) + bytes1[index] = (byte) s._Read(); + return (object) encoding.GetString(bytes1, 0, count); + } + + private static object HashtableSerialise(object o, Serialiser s) + { + if (s == null) + return (object) new Hashtable(); + Hashtable hashtable = (Hashtable) o; + if (s.Encode) + { + s._Write(hashtable.Count); + foreach (DictionaryEntry dictionaryEntry in hashtable) + { + s.Serialise(dictionaryEntry.Key); + s.Serialise(dictionaryEntry.Value); + } + return (object) null; + } + int num = s._Read(); + for (int index1 = 0; index1 < num; ++index1) + { + object index2 = s.Deserialise(); + object obj = s.Deserialise(); + hashtable[index2] = obj; + } + return (object) hashtable; + } + + private static object CharSerialise(object o, Serialiser s) + { + Encoding encoding = (Encoding) new UnicodeEncoding(); + if (s.Encode) + { + byte[] bytes = encoding.GetBytes(new string((char) o, 1)); + s._Write((int) bytes[0]); + s._Write((int) bytes[1]); + return (object) null; + } + byte[] bytes1 = new byte[2] + { + (byte) s._Read(), + (byte) s._Read() + }; + return (object) encoding.GetString(bytes1, 0, 2)[0]; + } + + private static object BoolSerialise(object o, Serialiser s) + { + if (!s.Encode) + return (object) (s._Read() != 0); + s._Write(!(bool) o ? 0 : 1); + return (object) null; + } + + private static object EncodingSerialise(object o, Serialiser s) + { + if (s.Encode) + { + Encoding encoding = (Encoding) o; + s.Serialise((object) encoding.WebName); + return (object) null; + } + string name = (string) s.Deserialise(); + string str1 = name; + if (str1 != null) + { + string str2 = string.IsInterned(str1); + if ((object) str2 == (object) "us-ascii") + return (object) Encoding.ASCII; + if ((object) str2 == (object) "utf-16") + return (object) Encoding.Unicode; + if ((object) str2 == (object) "utf-7") + return (object) Encoding.UTF7; + if ((object) str2 == (object) "utf-8") + return (object) Encoding.UTF8; + } + try + { + return (object) Encoding.GetEncoding(name); + } + catch (Exception) + { + throw new Exception("Unknown encoding"); + } + } + + private static object UnicodeCategorySerialise(object o, Serialiser s) + { + if (!s.Encode) + return (object) (UnicodeCategory) s._Read(); + s._Write((int) o); + return (object) null; + } + + private static object SymtypeSerialise(object o, Serialiser s) + { + if (!s.Encode) + return (object) (CSymbol.SymType) s._Read(); + s._Write((int) o); + return (object) null; + } + + public void Serialise(object o) + { + if (o == null) + this._Write(Serialiser.SerType.Null); + else if (o is Encoding) + { + this._Write(Serialiser.SerType.Encoding); + Serialiser.EncodingSerialise(o, this); + } + else + { + Type type = o.GetType(); + if (type.IsClass) + { + object ob = this.obs[o]; + if (ob != null) + { + this._Write((int) ob); + return; + } + int i = ++this.id; + this._Write(i); + this.obs[o] = (object) i; + } + object tp = Serialiser.tps[(object) type]; + if (tp == null) + throw new Exception("unknown type " + type.FullName); + Serialiser.SerType t = (Serialiser.SerType) tp; + this._Write(t); + object obj = ((Serialiser.ObjectSerialiser) Serialiser.srs[(object) t])(o, this); + } + } + + public object Deserialise() + { + int num1 = this._Read(); + int num2 = 0; + if (num1 > 100) + { + num2 = num1; + if (num2 <= this.obs.Count + 100) + return this.obs[(object) num2]; + num1 = this._Read(); + } + Serialiser.ObjectSerialiser sr = (Serialiser.ObjectSerialiser) Serialiser.srs[(object) (Serialiser.SerType) num1]; + if (sr == null) + throw new Exception("unknown type " + (object) num1); + if (num2 <= 0) + return sr((object) null, this); + object o = sr((object) null, (Serialiser) null); + this.obs[(object) num2] = o; + object obj = sr(o, this); + this.obs[(object) num2] = obj; + return obj; + } + + private enum SerType + { + Null, + Int, + Bool, + Char, + String, + Hashtable, + Encoding, + UnicodeCategory, + Symtype, + Charset, + TokClassDef, + Action, + Dfa, + ResWds, + ParserOldAction, + ParserSimpleAction, + ParserShift, + ParserReduce, + ParseState, + ParsingInfo, + CSymbol, + Literal, + Production, + EOF, + } + + private delegate object ObjectSerialiser(object o, Serialiser s); + } +} diff --git a/LibreMetaverse.LslTools/Tools/Sfactory.cs b/LibreMetaverse.LslTools/Tools/Sfactory.cs new file mode 100644 index 00000000..374ce510 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Sfactory.cs @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class Sfactory + { + public Sfactory(YyParser syms, string cls_name, SCreator cr) + { + syms.types[(object) cls_name] = (object) cr; + } + + public static object create(string cls_name, Parser yyp) + { + SCreator type1 = (SCreator) yyp.m_symbols.types[(object) cls_name]; + if (type1 == null) + yyp.m_symbols.erh.Error(new CSToolsException(16, yyp.m_lexer, "no factory for {" + cls_name + ")")); + try + { + return type1(yyp); + } + catch (CSToolsException ex) + { + yyp.m_symbols.erh.Error(ex); + } + catch (Exception ex) + { + yyp.m_symbols.erh.Error(new CSToolsException(17, yyp.m_lexer, string.Format("Create of {0} failed ({1})", (object) cls_name, (object) ex.Message))); + } + int length = cls_name.LastIndexOf('_'); + if (length > 0) + { + SCreator type2 = (SCreator) yyp.m_symbols.types[(object) cls_name.Substring(0, length)]; + if (type2 != null) + { + SYMBOL symbol = (SYMBOL) type2(yyp); + symbol.m_dollar = (object) 0; + return (object) symbol; + } + } + return (object) null; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs b/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs new file mode 100644 index 00000000..acc62172 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class SourceLineInfo + { + public int lineNumber; + public int charPosition; + public int startOfLine; + public int endOfLine; + public int rawCharPosition; + public Lexer lxr; + + public SourceLineInfo(int pos) + { + this.lineNumber = 1; + this.startOfLine = 0; + this.endOfLine = this.rawCharPosition = this.charPosition = pos; + } + + public SourceLineInfo(LineManager lm, int pos) + { + this.lineNumber = lm.lines; + this.startOfLine = 0; + this.endOfLine = lm.end; + this.charPosition = pos; + this.rawCharPosition = pos; + LineList lineList = lm.list; + while (lineList != null) + { + if (lineList.head > pos) + { + this.endOfLine = lineList.head; + lineList = lineList.tail; + --this.lineNumber; + } + else + { + this.startOfLine = lineList.head + 1; + this.rawCharPosition = lineList.getpos(pos); + this.charPosition = pos - this.startOfLine + 1; + break; + } + } + } + + public SourceLineInfo(Lexer lx, int pos) + : this(lx.m_LineManager, pos) + { + this.lxr = lx; + } + + public override string ToString() + { + return "Line " + (object) this.lineNumber + ", char " + (object) this.rawCharPosition; + } + + public string sourceLine + { + get + { + if (this.lxr == null) + return ""; + return this.lxr.sourceLine(this); + } + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/SymbolSet.cs b/LibreMetaverse.LslTools/Tools/SymbolSet.cs new file mode 100644 index 00000000..37183230 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SymbolSet.cs @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class SymbolSet + { + private Hashtable m_set = new Hashtable(); + public SymbolsGen m_symbols; + public SymbolSet m_next; + + public SymbolSet(SymbolsGen syms) + { + this.m_symbols = syms; + } + + public SymbolSet(SymbolSet s) + : this(s.m_symbols) + { + this.Add(s); + } + + public bool Contains(CSymbol a) + { + return this.m_set.Contains((object) a); + } + + public ICollection Keys => this.m_set.Keys; + + public IDictionaryEnumerator GetEnumerator() + { + return this.m_set.GetEnumerator(); + } + + public int Count => this.m_set.Count; + + public bool CheckIn(CSymbol a) + { + if (this.Contains(a)) + return false; + this.AddIn(a); + return true; + } + + public SymbolSet Resolve() + { + return this.find(this.m_symbols.lahead); + } + + private SymbolSet find(SymbolSet h) + { + if (h == null) + { + this.m_next = this.m_symbols.lahead; + this.m_symbols.lahead = this; + return this; + } + if (SymbolSet.Equals(h, this)) + return h; + return this.find(h.m_next); + } + + private static bool Equals(SymbolSet s, SymbolSet t) + { + if (s.m_set.Count != t.m_set.Count) + return false; + IDictionaryEnumerator enumerator1 = s.GetEnumerator(); + IDictionaryEnumerator enumerator2 = t.GetEnumerator(); + for (int index = 0; index < s.Count; ++index) + { + enumerator1.MoveNext(); + enumerator2.MoveNext(); + if (enumerator1.Key != enumerator2.Key) + return false; + } + return true; + } + + public void AddIn(CSymbol t) + { + this.m_set[(object) t] = (object) true; + } + + public void Add(SymbolSet s) + { + if (s == this) + return; + foreach (CSymbol key in (IEnumerable) s.Keys) + this.AddIn(key); + } + + public void Print() + { + string str = "["; + int num = 0; + foreach (CSymbol key in (IEnumerable) this.Keys) + { + ++num; + str = !key.yytext.Equals("\n") ? str + key.yytext : str + "\\n"; + if (num < this.Count) + str += ","; + } + Console.WriteLine(str + "]"); + } + + public static SymbolSet operator +(SymbolSet s, SymbolSet t) + { + SymbolSet symbolSet = new SymbolSet(s); + symbolSet.Add(t); + return symbolSet.Resolve(); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/SymbolType.cs b/LibreMetaverse.LslTools/Tools/SymbolType.cs new file mode 100644 index 00000000..dcd659bc --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SymbolType.cs @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class SymbolType + { + private string m_name; + private SymbolType m_next; + + public SymbolType(SymbolsGen yyp, string name) + : this(yyp, name, false) + { + } + + public SymbolType(SymbolsGen yyp, string name, bool defined) + { + Lexer lexer = yyp.m_lexer; + int length = name.IndexOf("+"); + int num = 0; + if (length > 0) + { + num = int.Parse(name.Substring(length + 1)); + if (num > yyp.LastSymbol) + yyp.LastSymbol = num; + name = name.Substring(0, length); + } + lexer.yytext = name; + CSymbol csymbol1 = new CSymbol(yyp); + if (num > 0) + csymbol1.m_yynum = num; + CSymbol csymbol2 = csymbol1.Resolve(); + if (defined) + csymbol2.m_defined = true; + this.m_name = name; + this.m_next = yyp.stypes; + yyp.stypes = this; + } + + public SymbolType _Find(string name) + { + if (name.Equals(this.m_name)) + return this; + if (this.m_next == null) + return (SymbolType) null; + return this.m_next._Find(name); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/SymbolsGen.cs b/LibreMetaverse.LslTools/Tools/SymbolsGen.cs new file mode 100644 index 00000000..e419cbb7 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/SymbolsGen.cs @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public abstract class SymbolsGen : GenBase + { + public bool m_lalrParser = true; + public YyParser m_symbols = new YyParser(); + public ObjectList prods = new ObjectList(); + internal ObjectList actions = new ObjectList(); + public Lexer m_lexer; + public int pno; + public int m_trans; + public int action; + internal int action_num; + public SymbolType stypes; + internal int state; + public SymbolSet lahead; + + protected SymbolsGen(ErrorHandler eh) + : base(eh) + { + } + + public bool Find(CSymbol sym) + { + if (sym.yytext.Equals("Null") || sym.yytext[0] == '\'') + return true; + if (this.stypes == null) + return false; + return this.stypes._Find(sym.yytext) != null; + } + + public abstract void ParserDirective(); + + public abstract void Declare(); + + public abstract void SetNamespace(); + + public abstract void SetStartSymbol(); + + public abstract void ClassDefinition(string s); + + public abstract void AssocType(Precedence.PrecType pt, int n); + + public abstract void CopySegment(); + + public abstract void SimpleAction(ParserSimpleAction a); + + public abstract void OldAction(ParserOldAction a); + } +} diff --git a/LibreMetaverse.LslTools/Tools/TCreator.cs b/LibreMetaverse.LslTools/Tools/TCreator.cs new file mode 100644 index 00000000..301db205 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/TCreator.cs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public delegate object TCreator(Lexer yyl); +} diff --git a/LibreMetaverse.LslTools/Tools/TOKEN.cs b/LibreMetaverse.LslTools/Tools/TOKEN.cs new file mode 100644 index 00000000..bd65dc19 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/TOKEN.cs @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class TOKEN : SYMBOL + { + private int num = 1; + private string m_str; + + public TOKEN(Parser yyp) + : base(yyp) + { + } + + public TOKEN(Lexer yyl) + : base(yyl) + { + if (yyl == null) + return; + this.m_str = yyl.yytext; + } + + public TOKEN(Lexer yyl, string s) + : base(yyl) + { + this.m_str = s; + } + + protected TOKEN() + { + } + + public string yytext + { + get => this.m_str; + set => this.m_str = value; + } + + public override bool IsTerminal() + { + return true; + } + + public override bool Pass(YyParser syms, int snum, out ParserEntry entry) + { + if (this.yynum == 1) + { + Literal literal = (Literal) syms.literals[(object) this.yytext]; + if (literal != null) + this.num = literal.m_yynum; + } + ParsingInfo parsingInfo = (ParsingInfo) syms.symbolInfo[(object) this.yynum]; + if (parsingInfo == null) + { + string s = string.Format("Parser does not recognise literal {0}", (object) this.yytext); + syms.erh.Error((CSToolsException) new CSToolsFatalException(9, this.yylx, this.yyname, s)); + } + bool flag = parsingInfo.m_parsetable.Contains((object) snum); + entry = !flag ? (ParserEntry) null : (ParserEntry) parsingInfo.m_parsetable[(object) snum]; + return flag; + } + + public override string yyname => nameof (TOKEN); + + public override int yynum => this.num; + + public override bool Matches(string s) + { + return s.Equals(this.m_str); + } + + public override string ToString() + { + return this.yyname + "<" + this.yytext + ">"; + } + + public override void Print() + { + Console.WriteLine(this.ToString()); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Tfactory.cs b/LibreMetaverse.LslTools/Tools/Tfactory.cs new file mode 100644 index 00000000..a65b9a94 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Tfactory.cs @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class Tfactory + { + public Tfactory(YyLexer tks, string cls_name, TCreator cr) + { + tks.types[(object) cls_name] = (object) cr; + } + + public static object create(string cls_name, Lexer yyl) + { + TCreator type1 = (TCreator) yyl.tokens.types[(object) cls_name]; + if (type1 == null) + yyl.tokens.erh.Error(new CSToolsException(6, yyl, cls_name, string.Format("no factory for {0}", (object) cls_name))); + try + { + return type1(yyl); + } + catch (CSToolsException ex) + { + yyl.tokens.erh.Error(ex); + } + catch (Exception ex) + { + yyl.tokens.erh.Error(new CSToolsException(7, yyl, cls_name, string.Format("Line {0}: Create of {1} failed ({2})", (object) yyl.Saypos(yyl.m_pch), (object) cls_name, (object) ex.Message))); + } + int length = cls_name.LastIndexOf('_'); + if (length > 0) + { + TCreator type2 = (TCreator) yyl.tokens.types[(object) cls_name.Substring(0, length)]; + if (type2 != null) + return type2(yyl); + } + return (object) null; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/TokClassDef.cs b/LibreMetaverse.LslTools/Tools/TokClassDef.cs new file mode 100644 index 00000000..ec9b53d1 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/TokClassDef.cs @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class TokClassDef + { + public string m_refToken = ""; + public string m_initialisation = ""; + public string m_implement = ""; + public string m_name = ""; + public int m_yynum; + + public TokClassDef(GenBase gbs, string name, string bas) + { + if (gbs is TokensGen) + { + TokensGen tokensGen = (TokensGen) gbs; + this.m_name = name; + tokensGen.m_tokens.tokens[(object) name] = (object) this; + this.m_refToken = bas; + } + this.m_yynum = ++gbs.LastSymbol; + } + + private TokClassDef() + { + } + + public static object Serialise(object o, Serialiser s) + { + if (s == null) + return (object) new TokClassDef(); + TokClassDef tokClassDef = (TokClassDef) o; + if (s.Encode) + { + s.Serialise((object) tokClassDef.m_name); + s.Serialise((object) tokClassDef.m_yynum); + return (object) null; + } + tokClassDef.m_name = (string) s.Deserialise(); + tokClassDef.m_yynum = (int) s.Deserialise(); + return (object) tokClassDef; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/TokensGen.cs b/LibreMetaverse.LslTools/Tools/TokensGen.cs new file mode 100644 index 00000000..69eae8be --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/TokensGen.cs @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public abstract class TokensGen : GenBase + { + public Hashtable defines = new Hashtable(); + public ObjectList states = new ObjectList(); + protected bool m_showDfa; + public YyLexer m_tokens; + private int state; + + public TokensGen(ErrorHandler eh) + : base(eh) + { + } + + public int NewState() + { + return ++this.state; + } + + public string FixActions(string str) + { + return str.Replace("yybegin", "yym.yy_begin").Replace("yyl", "((" + this.m_outname + ")yym)"); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/Transition.cs b/LibreMetaverse.LslTools/Tools/Transition.cs new file mode 100644 index 00000000..c9463daa --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/Transition.cs @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; + +namespace LibreMetaverse.LslTools +{ + public class Transition + { + public Hashtable m_reduce = new Hashtable(); + private Hashtable m_reads = new Hashtable(); + private Hashtable m_includes = new Hashtable(); + internal Hashtable m_lookbackOf = new Hashtable(); + public int m_tno; + public ParseState m_ps; + public CSymbol m_A; + public ParserShift m_next; + private SymbolSet m_DR; + private SymbolSet m_Read; + private SymbolSet m_Follow; + + public Transition(ParseState p, CSymbol a) + { + this.m_ps = p; + this.m_A = a; + this.m_tno = p.m_sgen.m_trans++; + p.m_transitions[(object) a.yytext] = (object) this; + } + + private ParsingInfo ParsingInfo => this.m_ps.m_sgen.m_symbols.GetSymbolInfo(this.m_A.yytext, this.m_A.m_yynum); + + public static Hashtable reads(Transition a) + { + return a.m_reads; + } + + public static Hashtable includes(Transition a) + { + return a.m_includes; + } + + public static SymbolSet DR(Transition a) + { + return a.m_DR; + } + + public static SymbolSet Read(Transition a) + { + return a.m_Read; + } + + public static SymbolSet Follow(Transition a) + { + return a.m_Follow; + } + + public static void AddToRead(Transition a, SymbolSet s) + { + a.m_Read.Add(s); + } + + public static void AddToFollow(Transition a, SymbolSet s) + { + a.m_Follow.Add(s); + } + + public static void BuildDR(Transition t) + { + SymbolsGen sgen = t.m_ps.m_sgen; + t.m_DR = new SymbolSet(sgen); + if (t.m_next == null) + return; + foreach (Transition transition in (IEnumerable) t.m_next.m_next.m_transitions.Values) + { + if (transition.m_next != null && (transition.m_A.m_symtype == CSymbol.SymType.terminal || transition.m_A.m_symtype == CSymbol.SymType.eofsymbol)) + t.m_DR.AddIn(transition.m_A); + } + } + + public static void Final(Transition t) + { + t.m_DR.AddIn(t.m_ps.m_sgen.m_symbols.EOFSymbol); + } + + public static void BuildReads(Transition t) + { + t.m_Read = new SymbolSet(t.m_ps.m_sgen); + ParseState parseState = t.m_A.Next(t.m_ps); + if (parseState == null) + return; + foreach (Transition transition in (IEnumerable) parseState.m_transitions.Values) + { + if (transition.m_A.IsNullable()) + t.m_reads[(object) transition] = (object) true; + } + } + + public static void BuildIncludes(Transition t) + { + t.m_Follow = new SymbolSet(t.m_ps.m_sgen); + foreach (Production prod in t.m_A.m_prods) + { + for (int i = prod.m_rhs.Count - 1; i >= 0; --i) + { + CSymbol rh = (CSymbol) prod.m_rhs[i]; + if (rh.m_symtype == CSymbol.SymType.nonterminal) + ((Transition) (i <= 0 ? t.m_ps : new Path(t.m_ps, prod.Prefix(i)).Top).m_transitions[(object) rh.yytext]).m_includes[(object) t] = (object) true; + if (!rh.IsNullable()) + break; + } + } + } + + public static void BuildLookback(Transition t) + { + foreach (ParserReduce parserReduce in (IEnumerable) t.m_reduce.Values) + parserReduce.BuildLookback(t); + } + + public static void BuildLA(Transition t) + { + foreach (ParserReduce key in (IEnumerable) t.m_lookbackOf.Keys) + key.m_lookAhead.Add(t.m_Follow); + } + + public static void BuildParseTable(Transition t) + { + YyParser symbols = t.m_ps.m_sgen.m_symbols; + ParsingInfo parsingInfo = t.ParsingInfo; + ParserReduce parserReduce1 = (ParserReduce) null; + foreach (ParserReduce parserReduce2 in (IEnumerable) t.m_reduce.Values) + { + if ((!t.m_ps.m_sgen.m_lalrParser ? (parserReduce2.m_prod.m_lhs.m_follow.Contains(t.m_A) ? 1 : 0) : (parserReduce2.m_lookAhead.Contains(t.m_A) ? 1 : 0)) != 0) + { + if (parserReduce1 != null) + symbols.erh.Error(new CSToolsException(12, string.Format("reduce/reduce conflict {0} vs {1}", (object) parserReduce1.m_prod.m_pno, (object) parserReduce2.m_prod.m_pno) + string.Format(" state {0} on {1}", (object) t.m_ps.m_state, (object) t.m_A.yytext))); + parserReduce1 = parserReduce2; + } + } + if (t.m_next != null && t.m_A != symbols.EOFSymbol) + { + if (parserReduce1 == null) + { + parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) t.m_next; + } + else + { + switch (t.m_A.ShiftPrecedence(parserReduce1.m_prod, t.m_ps)) + { + case Precedence.PrecType.left: + parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) t.m_next; + break; + case Precedence.PrecType.right: + parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) parserReduce1; + break; + } + } + } + else + { + if (parserReduce1 == null) + return; + parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) parserReduce1; + } + } + + public void Print0() + { + Console.Write(" " + this.m_A.yytext); + if (this.m_next != null) + Console.Write(" shift " + (object) this.m_next.m_next.m_state); + foreach (Production key in (IEnumerable) this.m_reduce.Keys) + Console.Write(" reduce (" + (object) key.m_pno + ")"); + Console.WriteLine(); + } + + public void Print(SymbolSet x, string s) + { + Console.Write("Transition (" + (object) this.m_ps.m_state + "," + this.m_A.yytext + ") " + s + " "); + x.Print(); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/UArc.cs b/LibreMetaverse.LslTools/Tools/UArc.cs new file mode 100644 index 00000000..973c550c --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/UArc.cs @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System.IO; + +namespace LibreMetaverse.LslTools +{ + internal class UArc : Arc + { + public UArc() + { + } + + public UArc(char ch, NfaNode next) + : base(ch, next) + { + } + + public override bool Match(char ch) + { + return (int) char.ToUpper(ch) == (int) char.ToUpper(this.m_ch); + } + + public override void Print(TextWriter s) + { + s.WriteLine(string.Format(" U'{0}' {1}", (object) this.m_ch, (object) this.m_next.m_state)); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/YyLexer.cs b/LibreMetaverse.LslTools/Tools/YyLexer.cs new file mode 100644 index 00000000..2de57025 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/YyLexer.cs @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Globalization; +using System.IO; +using System.Text; + +namespace LibreMetaverse.LslTools +{ + public class YyLexer + { + public Encoding m_encoding = Encoding.ASCII; + public Hashtable cats = new Hashtable(); + public Hashtable starts = new Hashtable(); + public Hashtable types = new Hashtable(); + public Hashtable tokens = new Hashtable(); + public Hashtable reswds = new Hashtable(); + public bool usingEOF; + public bool toupper; + public UnicodeCategory m_gencat; + protected int[] arr; + public ErrorHandler erh; + + public YyLexer(ErrorHandler eh) + { + this.erh = eh; + this.UsingCat(UnicodeCategory.OtherPunctuation); + this.m_gencat = UnicodeCategory.OtherPunctuation; + Tfactory tfactory = new Tfactory(this, "TOKEN", new TCreator(this.Tokenfactory)); + } + + public void GetDfa() + { + if (this.tokens.Count > 0) + return; + Serialiser serialiser = new Serialiser(this.arr); + serialiser.VersionCheck(); + this.m_encoding = (Encoding) serialiser.Deserialise(); + this.toupper = (bool) serialiser.Deserialise(); + this.cats = (Hashtable) serialiser.Deserialise(); + this.m_gencat = (UnicodeCategory) serialiser.Deserialise(); + this.usingEOF = (bool) serialiser.Deserialise(); + this.starts = (Hashtable) serialiser.Deserialise(); + Dfa.SetTokens(this, this.starts); + this.tokens = (Hashtable) serialiser.Deserialise(); + this.reswds = (Hashtable) serialiser.Deserialise(); + } + + public void EmitDfa(TextWriter outFile) + { + Console.WriteLine("Serializing the lexer"); + Serialiser serialiser = new Serialiser(outFile); + serialiser.VersionCheck(); + serialiser.Serialise((object) this.m_encoding); + serialiser.Serialise((object) this.toupper); + serialiser.Serialise((object) this.cats); + serialiser.Serialise((object) this.m_gencat); + serialiser.Serialise((object) this.usingEOF); + serialiser.Serialise((object) this.starts); + serialiser.Serialise((object) this.tokens); + serialiser.Serialise((object) this.reswds); + outFile.WriteLine("0};"); + } + + public string InputEncoding + { + set => this.m_encoding = Charset.GetEncoding(value, ref this.toupper, this.erh); + } + + protected object Tokenfactory(Lexer yyl) + { + return (object) new TOKEN(yyl); + } + + public Charset UsingCat(UnicodeCategory cat) + { + if (cat == this.m_gencat) + { + for (int index = 0; index < 28; ++index) + { + if (Enum.IsDefined(typeof (UnicodeCategory), (object) index)) + { + UnicodeCategory cat1 = (UnicodeCategory) index; + if (cat1 != UnicodeCategory.Surrogate && this.cats[(object) cat1] == null) + { + this.UsingCat(cat1); + this.m_gencat = cat1; + } + } + } + return (Charset) this.cats[(object) cat]; + } + if (this.cats[(object) cat] != null) + return (Charset) this.cats[(object) cat]; + Charset charset = new Charset(cat); + this.cats[(object) cat] = (object) charset; + return charset; + } + + internal void UsingChar(char ch) + { + Charset charset = this.UsingCat(char.GetUnicodeCategory(ch)); + if ((int) charset.m_generic == (int) ch) + { + while (charset.m_generic != char.MaxValue) + { + ++charset.m_generic; + if (char.GetUnicodeCategory(charset.m_generic) == charset.m_cat && !charset.m_chars.Contains((object) charset.m_generic)) + { + charset.m_chars[(object) charset.m_generic] = (object) true; + return; + } + } + charset.m_generic = ch; + } + else + charset.m_chars[(object) ch] = (object) true; + } + + internal char Filter(char ch) + { + Charset charset = (Charset) this.cats[(object) char.GetUnicodeCategory(ch)] ?? (Charset) this.cats[(object) this.m_gencat]; + if (charset.m_chars.Contains((object) ch)) + return ch; + return charset.m_generic; + } + + private bool testEOF(char ch) + { + return char.GetUnicodeCategory(ch) == UnicodeCategory.OtherNotAssigned; + } + + private bool CharIsSymbol(char c) + { + UnicodeCategory unicodeCategory = char.GetUnicodeCategory(c); + switch (unicodeCategory) + { + case UnicodeCategory.CurrencySymbol: + case UnicodeCategory.ModifierSymbol: + case UnicodeCategory.OtherSymbol: + return true; + default: + return unicodeCategory == UnicodeCategory.MathSymbol; + } + } + + private bool CharIsSeparator(char c) + { + UnicodeCategory unicodeCategory = char.GetUnicodeCategory(c); + switch (unicodeCategory) + { + case UnicodeCategory.LineSeparator: + case UnicodeCategory.ParagraphSeparator: + return true; + default: + return unicodeCategory == UnicodeCategory.SpaceSeparator; + } + } + + internal ChTest GetTest(string name) + { + try + { + object obj = Enum.Parse(typeof (UnicodeCategory), name); + if (obj != null) + { + UnicodeCategory unicodeCategory = (UnicodeCategory) obj; + this.UsingCat(unicodeCategory); + return new ChTest(new CatTest(unicodeCategory).Test); + } + } + catch (Exception) + { + } + string str1 = name; + if (str1 != null) + { + string str2 = string.IsInterned(str1); + if ((object) str2 == (object) "Symbol") + { + this.UsingCat(UnicodeCategory.OtherSymbol); + this.UsingCat(UnicodeCategory.ModifierSymbol); + this.UsingCat(UnicodeCategory.CurrencySymbol); + this.UsingCat(UnicodeCategory.MathSymbol); + return new ChTest(this.CharIsSymbol); + } + if ((object) str2 == (object) "Punctuation") + { + this.UsingCat(UnicodeCategory.OtherPunctuation); + this.UsingCat(UnicodeCategory.FinalQuotePunctuation); + this.UsingCat(UnicodeCategory.InitialQuotePunctuation); + this.UsingCat(UnicodeCategory.ClosePunctuation); + this.UsingCat(UnicodeCategory.OpenPunctuation); + this.UsingCat(UnicodeCategory.DashPunctuation); + this.UsingCat(UnicodeCategory.ConnectorPunctuation); + return new ChTest(char.IsPunctuation); + } + if ((object) str2 == (object) "Separator") + { + this.UsingCat(UnicodeCategory.ParagraphSeparator); + this.UsingCat(UnicodeCategory.LineSeparator); + this.UsingCat(UnicodeCategory.SpaceSeparator); + return new ChTest(this.CharIsSeparator); + } + if ((object) str2 == (object) "WhiteSpace") + { + this.UsingCat(UnicodeCategory.Control); + this.UsingCat(UnicodeCategory.ParagraphSeparator); + this.UsingCat(UnicodeCategory.LineSeparator); + this.UsingCat(UnicodeCategory.SpaceSeparator); + return new ChTest(char.IsWhiteSpace); + } + if ((object) str2 == (object) "Number") + { + this.UsingCat(UnicodeCategory.OtherNumber); + this.UsingCat(UnicodeCategory.LetterNumber); + this.UsingCat(UnicodeCategory.DecimalDigitNumber); + return new ChTest(char.IsNumber); + } + if ((object) str2 == (object) "Digit") + { + this.UsingCat(UnicodeCategory.DecimalDigitNumber); + return new ChTest(char.IsDigit); + } + if ((object) str2 == (object) "Letter") + { + this.UsingCat(UnicodeCategory.OtherLetter); + this.UsingCat(UnicodeCategory.ModifierLetter); + this.UsingCat(UnicodeCategory.TitlecaseLetter); + this.UsingCat(UnicodeCategory.LowercaseLetter); + this.UsingCat(UnicodeCategory.UppercaseLetter); + return new ChTest(char.IsLetter); + } + if ((object) str2 == (object) "Lower") + { + this.UsingCat(UnicodeCategory.LowercaseLetter); + return new ChTest(char.IsLower); + } + if ((object) str2 == (object) "Upper") + { + this.UsingCat(UnicodeCategory.UppercaseLetter); + return new ChTest(char.IsUpper); + } + if ((object) str2 == (object) "EOF") + { + this.UsingCat(UnicodeCategory.OtherNotAssigned); + this.UsingChar(char.MaxValue); + this.usingEOF = true; + return new ChTest(this.testEOF); + } + } + this.erh.Error(new CSToolsException(24, "No such Charset " + name)); + return new ChTest(char.IsControl); + } + + public virtual TOKEN OldAction(Lexer yyl, ref string yytext, int action, ref bool reject) + { + return (TOKEN) null; + } + + public IEnumerator GetEnumerator() + { + return this.tokens.Values.GetEnumerator(); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/YyParser.cs b/LibreMetaverse.LslTools/Tools/YyParser.cs new file mode 100644 index 00000000..109151ed --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/YyParser.cs @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.IO; + +namespace LibreMetaverse.LslTools +{ + public class YyParser + { + public ErrorHandler erh = new ErrorHandler(true); + public Hashtable symbols = new Hashtable(); + public Hashtable literals = new Hashtable(); + public Hashtable symbolInfo = new Hashtable(); + public Hashtable m_states = new Hashtable(); + public Hashtable types = new Hashtable(); + public bool m_concrete; + public CSymbol EOFSymbol; + public CSymbol Special; + public CSymbol m_startSymbol; + public ParseState m_accept; + public int[] arr; + + public string StartSymbol + { + get + { + if (this.m_startSymbol != null) + return this.m_startSymbol.yytext; + return ""; + } + set + { + CSymbol symbol = (CSymbol) this.symbols[(object) value]; + if (symbol == null) + this.erh.Error(new CSToolsException(25, "No such symbol <" + value + ">")); + this.m_startSymbol = symbol; + } + } + + public ParsingInfo GetSymbolInfo(string name, int num) + { + ParsingInfo parsingInfo = (ParsingInfo) this.symbolInfo[(object) num]; + if (parsingInfo == null) + this.symbolInfo[(object) num] = (object) (parsingInfo = new ParsingInfo(name, num)); + return parsingInfo; + } + + public void ClassInit(SymbolsGen yyp) + { + this.Special = new CSymbol(yyp); + this.Special.yytext = "S'"; + this.EOFSymbol = new EOF(yyp).Resolve(); + } + + public void Transitions(Builder b) + { + foreach (ParseState parseState in (IEnumerable) this.m_states.Values) + { + foreach (Transition t in (IEnumerable) parseState.m_transitions.Values) + b(t); + } + } + + public void PrintTransitions(Func f, string s) + { + foreach (ParseState parseState in (IEnumerable) this.m_states.Values) + { + foreach (Transition a in (IEnumerable) parseState.m_transitions.Values) + a.Print(f(a), s); + } + } + + public virtual object Action(Parser yyp, SYMBOL yysym, int yyact) + { + return (object) null; + } + + public void GetEOF(Lexer yyl) + { + this.EOFSymbol = (CSymbol) this.symbols[(object) "EOF"]; + if (this.EOFSymbol != null) + return; + this.EOFSymbol = (CSymbol) new EOF(yyl); + } + + public void Emit(TextWriter m_outFile) + { + Serialiser serialiser = new Serialiser(m_outFile); + serialiser.VersionCheck(); + Console.WriteLine("Serialising the parser"); + serialiser.Serialise((object) this.m_startSymbol); + serialiser.Serialise((object) this.m_accept); + serialiser.Serialise((object) this.m_states); + serialiser.Serialise((object) this.literals); + serialiser.Serialise((object) this.symbolInfo); + serialiser.Serialise((object) this.m_concrete); + m_outFile.WriteLine("0};"); + } + + public void GetParser(Lexer m_lexer) + { + Serialiser serialiser = new Serialiser(this.arr); + serialiser.VersionCheck(); + this.m_startSymbol = (CSymbol) serialiser.Deserialise(); + this.m_startSymbol.kids = new ObjectList(); + this.m_accept = (ParseState) serialiser.Deserialise(); + this.m_states = (Hashtable) serialiser.Deserialise(); + this.literals = (Hashtable) serialiser.Deserialise(); + this.symbolInfo = (Hashtable) serialiser.Deserialise(); + this.m_concrete = (bool) serialiser.Deserialise(); + this.GetEOF(m_lexer); + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/error.cs b/LibreMetaverse.LslTools/Tools/error.cs new file mode 100644 index 00000000..c9102bb4 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/error.cs @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +namespace LibreMetaverse.LslTools +{ + public class error : SYMBOL + { + public int state; + public SYMBOL sym; + + public error(Parser yyp, ParseStackEntry s) + : base(yyp) + { + this.state = s.m_state; + this.sym = s.m_value; + } + + public error(Parser yyp) + : base(yyp) + { + } + + public override string yyname => nameof (error); + + public override string ToString() + { + string str = "syntax error occurred in state " + (object) this.state; + if (this.sym == null) + return str; + if (!(this.sym is TOKEN)) + return str + " on symbol " + this.sym.yyname; + TOKEN sym = (TOKEN) this.sym; + return str + " on input token " + sym.yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/Tools/recoveredError.cs b/LibreMetaverse.LslTools/Tools/recoveredError.cs new file mode 100644 index 00000000..c7fc8223 --- /dev/null +++ b/LibreMetaverse.LslTools/Tools/recoveredError.cs @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace LibreMetaverse.LslTools +{ + public class recoveredError : error + { + public recoveredError(Parser yyp, ParseStackEntry s) + : base(yyp, s) + { + } + + public override string ToString() + { + return "Parse contained " + (object) this.yyps.m_symbols.erh.counter + " errors"; + } + + public override void ConcreteSyntaxTree() + { + Console.WriteLine(this.ToString()); + if (this.sym == null) + return; + this.sym.ConcreteSyntaxTree(); + } + + public override void Print() + { + Console.WriteLine(this.ToString()); + if (this.sym == null) + return; + this.sym.Print(); + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ANY.cs b/LibreMetaverse.LslTools/YYClass/ANY.cs new file mode 100644 index 00000000..6c08d1ad --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ANY.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ANY : TOKEN + { + public ANY(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (ANY); + + public override int yynum => 7; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BASE.cs b/LibreMetaverse.LslTools/YYClass/BASE.cs new file mode 100644 index 00000000..5a2c7391 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BASE.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BASE : TOKEN + { + public BASE(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (BASE); + + public override int yynum => 3; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall.cs b/LibreMetaverse.LslTools/YYClass/BaseCall.cs new file mode 100644 index 00000000..477162e2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall : TOKEN + { + public BaseCall(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (BaseCall); + + public override int yynum => 22; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs new file mode 100644 index 00000000..a8b9ab2f --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_1 : BaseCall + { + public BaseCall_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs new file mode 100644 index 00000000..052a1ab4 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_2 : BaseCall + { + public BaseCall_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs new file mode 100644 index 00000000..55277dd9 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_2_1 : BaseCall_2 + { + public BaseCall_2_1(Parser yyq) + : base(yyq) + { + this.yytext = ""; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs new file mode 100644 index 00000000..6fc8e3e9 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_3 : BaseCall + { + public BaseCall_3(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs new file mode 100644 index 00000000..7bfcc346 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_4 : BaseCall + { + public BaseCall_4(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs new file mode 100644 index 00000000..5d2fc66e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_4_1 : BaseCall_4 + { + public BaseCall_4_1(Parser yyq) + : base(yyq) + { + this.yytext = "base" + ((TOKEN) yyq.StackAt(1).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs new file mode 100644 index 00000000..c933e9bd --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_5 : BaseCall + { + public BaseCall_5(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs new file mode 100644 index 00000000..a003deee --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_6 : BaseCall + { + public BaseCall_6(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs new file mode 100644 index 00000000..e3a0728f --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class BaseCall_6_1 : BaseCall_6 + { + public BaseCall_6_1(Parser yyq) + : base(yyq) + { + this.yytext = "this" + ((TOKEN) yyq.StackAt(1).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/COLON.cs b/LibreMetaverse.LslTools/YYClass/COLON.cs new file mode 100644 index 00000000..b99d3a83 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/COLON.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class COLON : TOKEN + { + public COLON(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (COLON); + + public override int yynum => 8; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Call.cs b/LibreMetaverse.LslTools/YYClass/Call.cs new file mode 100644 index 00000000..e0ba3432 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Call.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Call : TOKEN + { + public Call(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (Call); + + public override int yynum => 21; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Call_1.cs b/LibreMetaverse.LslTools/YYClass/Call_1.cs new file mode 100644 index 00000000..48fed96c --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Call_1.cs @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Call_1 : Call + { + public Call_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Call_2.cs b/LibreMetaverse.LslTools/YYClass/Call_2.cs new file mode 100644 index 00000000..65eeb873 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Call_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Call_2 : Call + { + public Call_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Call_2_1.cs b/LibreMetaverse.LslTools/YYClass/Call_2_1.cs new file mode 100644 index 00000000..c3b77deb --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Call_2_1.cs @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Call_2_1 : Call_2 + { + public Call_2_1(Parser yyq) + : base(yyq) + { + if (((TOKEN) yyq.StackAt(3).m_value).yytext.Trim() != ((cs0syntax) yyq).Cls) + this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")"; + else if (((TOKEN) yyq.StackAt(1).m_value).yytext.Length == 0) + this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((cs0syntax) yyq).Par + ")"; + else + this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((cs0syntax) yyq).Par + "," + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody.cs b/LibreMetaverse.LslTools/YYClass/ClassBody.cs new file mode 100644 index 00000000..9fd650d7 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ClassBody.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ClassBody : TOKEN + { + public ClassBody(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (ClassBody); + + public override int yynum => 19; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs new file mode 100644 index 00000000..5e156e85 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ClassBody_1 : ClassBody + { + public ClassBody_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs new file mode 100644 index 00000000..9edd7076 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ClassBody_2 : ClassBody + { + public ClassBody_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs new file mode 100644 index 00000000..2b57eb27 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ClassBody_2_1 : ClassBody_2 + { + public ClassBody_2_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Cons.cs b/LibreMetaverse.LslTools/YYClass/Cons.cs new file mode 100644 index 00000000..e2fbd037 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Cons.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Cons : TOKEN + { + public Cons(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (Cons); + + public override int yynum => 20; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Cons_1.cs b/LibreMetaverse.LslTools/YYClass/Cons_1.cs new file mode 100644 index 00000000..b22f35a7 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Cons_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Cons_1 : Cons + { + public Cons_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Cons_2.cs b/LibreMetaverse.LslTools/YYClass/Cons_2.cs new file mode 100644 index 00000000..821f7c8e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Cons_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Cons_2 : Cons + { + public Cons_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs b/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs new file mode 100644 index 00000000..7baa4c82 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Cons_2_1 : Cons_2 + { + public Cons_2_1(Parser yyq) + : base(yyq) + { + cs0syntax cs0syntax = (cs0syntax) yyq; + if (((TOKEN) yyq.StackAt(4).m_value).yytext.Trim() != cs0syntax.Cls) + { + this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + ((TOKEN) yyq.StackAt(2).m_value).yytext + ")"; + } + else + { + if (((TOKEN) yyq.StackAt(2).m_value).yytext.Length == 0) + { + this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + cs0syntax.Ctx + ")"; + cs0syntax.defconseen = true; + } + else + this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + cs0syntax.Ctx + "," + ((TOKEN) yyq.StackAt(2).m_value).yytext + ")"; + if (((TOKEN) yyq.StackAt(0).m_value).yytext.Length == 0) + { + Cons_2_1 cons21 = this; + cons21.yytext = cons21.yytext + ":base(" + cs0syntax.Par + ")"; + } + else + { + Cons_2_1 cons21 = this; + cons21.yytext = cons21.yytext + ":" + ((TOKEN) yyq.StackAt(0).m_value).yytext.Substring(0, 4) + "(" + cs0syntax.Par + "," + ((TOKEN) yyq.StackAt(0).m_value).yytext.Substring(4) + ")"; + } + } + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff.cs b/LibreMetaverse.LslTools/YYClass/GStuff.cs new file mode 100644 index 00000000..a4b9f829 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff : TOKEN + { + public GStuff(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (GStuff); + + public override int yynum => 16; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_1.cs new file mode 100644 index 00000000..73fe9b6e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_1 : GStuff + { + public GStuff_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_2.cs b/LibreMetaverse.LslTools/YYClass/GStuff_2.cs new file mode 100644 index 00000000..456d59e2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_2.cs @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_2 : GStuff + { + public GStuff_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs new file mode 100644 index 00000000..f1ebe4d2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_2_1 : GStuff_2 + { + public GStuff_2_1(Parser yyq) + : base(yyq) + { + this.yytext = ""; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_3.cs b/LibreMetaverse.LslTools/YYClass/GStuff_3.cs new file mode 100644 index 00000000..bc44e89a --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_3.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_3 : GStuff + { + public GStuff_3(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_4.cs b/LibreMetaverse.LslTools/YYClass/GStuff_4.cs new file mode 100644 index 00000000..3d0860e3 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_4.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_4 : GStuff + { + public GStuff_4(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs new file mode 100644 index 00000000..af515205 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_4_1 : GStuff_4 + { + public GStuff_4_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_5.cs b/LibreMetaverse.LslTools/YYClass/GStuff_5.cs new file mode 100644 index 00000000..f54f791d --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_5.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_5 : GStuff + { + public GStuff_5(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_6.cs b/LibreMetaverse.LslTools/YYClass/GStuff_6.cs new file mode 100644 index 00000000..13dc59cf --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_6.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_6 : GStuff + { + public GStuff_6(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs new file mode 100644 index 00000000..b7284e5c --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class GStuff_6_1 : GStuff_6 + { + public GStuff_6_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/ID.cs b/LibreMetaverse.LslTools/YYClass/ID.cs new file mode 100644 index 00000000..063bd464 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/ID.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class ID : TOKEN + { + public ID(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (ID); + + public override int yynum => 6; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item.cs b/LibreMetaverse.LslTools/YYClass/Item.cs new file mode 100644 index 00000000..b83bb377 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item : TOKEN + { + public Item(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (Item); + + public override int yynum => 18; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_1.cs b/LibreMetaverse.LslTools/YYClass/Item_1.cs new file mode 100644 index 00000000..8687952e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_1 : Item + { + public Item_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_10.cs b/LibreMetaverse.LslTools/YYClass/Item_10.cs new file mode 100644 index 00000000..a25db083 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_10.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_10 : Item + { + public Item_10(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_10_1.cs b/LibreMetaverse.LslTools/YYClass/Item_10_1.cs new file mode 100644 index 00000000..b42c7b46 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_10_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_10_1 : Item_10 + { + public Item_10_1(Parser yyq) + : base(yyq) + { + this.yytext = " this "; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_11.cs b/LibreMetaverse.LslTools/YYClass/Item_11.cs new file mode 100644 index 00000000..e3070bf0 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_11.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_11 : Item + { + public Item_11(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_12.cs b/LibreMetaverse.LslTools/YYClass/Item_12.cs new file mode 100644 index 00000000..38f15e98 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_12.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_12 : Item + { + public Item_12(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_12_1.cs b/LibreMetaverse.LslTools/YYClass/Item_12_1.cs new file mode 100644 index 00000000..0a3fa02d --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_12_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_12_1 : Item_12 + { + public Item_12_1(Parser yyq) + : base(yyq) + { + this.yytext = " this[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_13.cs b/LibreMetaverse.LslTools/YYClass/Item_13.cs new file mode 100644 index 00000000..31ecea71 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_13.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_13 : Item + { + public Item_13(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_14.cs b/LibreMetaverse.LslTools/YYClass/Item_14.cs new file mode 100644 index 00000000..2ae9e3e8 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_14.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_14 : Item + { + public Item_14(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_14_1.cs b/LibreMetaverse.LslTools/YYClass/Item_14_1.cs new file mode 100644 index 00000000..a3072cae --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_14_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_14_1 : Item_14 + { + public Item_14_1(Parser yyq) + : base(yyq) + { + this.yytext = ":"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_15.cs b/LibreMetaverse.LslTools/YYClass/Item_15.cs new file mode 100644 index 00000000..648a6ddd --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_15.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_15 : Item + { + public Item_15(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_16.cs b/LibreMetaverse.LslTools/YYClass/Item_16.cs new file mode 100644 index 00000000..cb91ac69 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_16.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_16 : Item + { + public Item_16(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_16_1.cs b/LibreMetaverse.LslTools/YYClass/Item_16_1.cs new file mode 100644 index 00000000..9961039b --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_16_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_16_1 : Item_16 + { + public Item_16_1(Parser yyq) + : base(yyq) + { + this.yytext = " new " + ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_17.cs b/LibreMetaverse.LslTools/YYClass/Item_17.cs new file mode 100644 index 00000000..e1114826 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_17.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_17 : Item + { + public Item_17(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_18.cs b/LibreMetaverse.LslTools/YYClass/Item_18.cs new file mode 100644 index 00000000..d3286ad2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_18.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_18 : Item + { + public Item_18(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_18_1.cs b/LibreMetaverse.LslTools/YYClass/Item_18_1.cs new file mode 100644 index 00000000..9b8c978b --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_18_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_18_1 : Item_18 + { + public Item_18_1(Parser yyq) + : base(yyq) + { + this.yytext = " new " + ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_19.cs b/LibreMetaverse.LslTools/YYClass/Item_19.cs new file mode 100644 index 00000000..93f84d5d --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_19.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_19 : Item + { + public Item_19(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_2.cs b/LibreMetaverse.LslTools/YYClass/Item_2.cs new file mode 100644 index 00000000..5ad667aa --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_2 : Item + { + public Item_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_20.cs b/LibreMetaverse.LslTools/YYClass/Item_20.cs new file mode 100644 index 00000000..1c364821 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_20.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_20 : Item + { + public Item_20(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_20_1.cs b/LibreMetaverse.LslTools/YYClass/Item_20_1.cs new file mode 100644 index 00000000..8ec9b076 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_20_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_20_1 : Item_20 + { + public Item_20_1(Parser yyq) + : base(yyq) + { + this.yytext = "(" + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_21.cs b/LibreMetaverse.LslTools/YYClass/Item_21.cs new file mode 100644 index 00000000..15cf51d1 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_21.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_21 : Item + { + public Item_21(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_22.cs b/LibreMetaverse.LslTools/YYClass/Item_22.cs new file mode 100644 index 00000000..716cfac8 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_22.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_22 : Item + { + public Item_22(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_22_1.cs b/LibreMetaverse.LslTools/YYClass/Item_22_1.cs new file mode 100644 index 00000000..edcfee2e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_22_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_22_1 : Item_22 + { + public Item_22_1(Parser yyq) + : base(yyq) + { + this.yytext = "{" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "}\n"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_23.cs b/LibreMetaverse.LslTools/YYClass/Item_23.cs new file mode 100644 index 00000000..3e9d8f59 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_23.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_23 : Item + { + public Item_23(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_24.cs b/LibreMetaverse.LslTools/YYClass/Item_24.cs new file mode 100644 index 00000000..08a8485e --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_24.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_24 : Item + { + public Item_24(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_24_1.cs b/LibreMetaverse.LslTools/YYClass/Item_24_1.cs new file mode 100644 index 00000000..d9f06bca --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_24_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_24_1 : Item_24 + { + public Item_24_1(Parser yyq) + : base(yyq) + { + this.yytext = "[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_2_1.cs b/LibreMetaverse.LslTools/YYClass/Item_2_1.cs new file mode 100644 index 00000000..faa24c7d --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_2_1 : Item_2 + { + public Item_2_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_3.cs b/LibreMetaverse.LslTools/YYClass/Item_3.cs new file mode 100644 index 00000000..c5727ebc --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_3.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_3 : Item + { + public Item_3(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_4.cs b/LibreMetaverse.LslTools/YYClass/Item_4.cs new file mode 100644 index 00000000..05692ad1 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_4.cs @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_4 : Item + { + public Item_4(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_4_1.cs b/LibreMetaverse.LslTools/YYClass/Item_4_1.cs new file mode 100644 index 00000000..fec75cf2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_4_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_4_1 : Item_4 + { + public Item_4_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_5.cs b/LibreMetaverse.LslTools/YYClass/Item_5.cs new file mode 100644 index 00000000..5fa67c08 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_5.cs @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_5 : Item + { + public Item_5(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_6.cs b/LibreMetaverse.LslTools/YYClass/Item_6.cs new file mode 100644 index 00000000..43e3162a --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_6.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_6 : Item + { + public Item_6(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_6_1.cs b/LibreMetaverse.LslTools/YYClass/Item_6_1.cs new file mode 100644 index 00000000..d9c35b9b --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_6_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_6_1 : Item_6 + { + public Item_6_1(Parser yyq) + : base(yyq) + { + this.yytext = ";\n"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_7.cs b/LibreMetaverse.LslTools/YYClass/Item_7.cs new file mode 100644 index 00000000..13a6e3e4 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_7.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_7 : Item + { + public Item_7(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_8.cs b/LibreMetaverse.LslTools/YYClass/Item_8.cs new file mode 100644 index 00000000..66e22e9c --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_8.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_8 : Item + { + public Item_8(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_8_1.cs b/LibreMetaverse.LslTools/YYClass/Item_8_1.cs new file mode 100644 index 00000000..53f852ec --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_8_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_8_1 : Item_8 + { + public Item_8_1(Parser yyq) + : base(yyq) + { + this.yytext = " base "; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Item_9.cs b/LibreMetaverse.LslTools/YYClass/Item_9.cs new file mode 100644 index 00000000..abb4fee2 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Item_9.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Item_9 : Item + { + public Item_9(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/LBRACE.cs b/LibreMetaverse.LslTools/YYClass/LBRACE.cs new file mode 100644 index 00000000..cf9ce60a --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/LBRACE.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class LBRACE : TOKEN + { + public LBRACE(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (LBRACE); + + public override int yynum => 10; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/LBRACK.cs b/LibreMetaverse.LslTools/YYClass/LBRACK.cs new file mode 100644 index 00000000..c042d1ca --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/LBRACK.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class LBRACK : TOKEN + { + public LBRACK(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (LBRACK); + + public override int yynum => 14; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/LPAREN.cs b/LibreMetaverse.LslTools/YYClass/LPAREN.cs new file mode 100644 index 00000000..53e278a5 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/LPAREN.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class LPAREN : TOKEN + { + public LPAREN(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (LPAREN); + + public override int yynum => 12; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/NEW.cs b/LibreMetaverse.LslTools/YYClass/NEW.cs new file mode 100644 index 00000000..e1deabe8 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/NEW.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class NEW : TOKEN + { + public NEW(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (NEW); + + public override int yynum => 5; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name.cs b/LibreMetaverse.LslTools/YYClass/Name.cs new file mode 100644 index 00000000..fc144152 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name : TOKEN + { + public Name(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (Name); + + public override int yynum => 23; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_1.cs b/LibreMetaverse.LslTools/YYClass/Name_1.cs new file mode 100644 index 00000000..1d4ee6d3 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_1 : Name + { + public Name_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_2.cs b/LibreMetaverse.LslTools/YYClass/Name_2.cs new file mode 100644 index 00000000..39066216 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_2 : Name + { + public Name_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_2_1.cs b/LibreMetaverse.LslTools/YYClass/Name_2_1.cs new file mode 100644 index 00000000..0ace37f3 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_2_1 : Name_2 + { + public Name_2_1(Parser yyq) + : base(yyq) + { + this.yytext = " " + ((TOKEN) yyq.StackAt(0).m_value).yytext + " "; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_3.cs b/LibreMetaverse.LslTools/YYClass/Name_3.cs new file mode 100644 index 00000000..438abef7 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_3.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_3 : Name + { + public Name_3(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_4.cs b/LibreMetaverse.LslTools/YYClass/Name_4.cs new file mode 100644 index 00000000..6695e875 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_4.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_4 : Name + { + public Name_4(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Name_4_1.cs b/LibreMetaverse.LslTools/YYClass/Name_4_1.cs new file mode 100644 index 00000000..a1c3cb06 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Name_4_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Name_4_1 : Name_4 + { + public Name_4_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]"; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/RBRACE.cs b/LibreMetaverse.LslTools/YYClass/RBRACE.cs new file mode 100644 index 00000000..5e1f6d89 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/RBRACE.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class RBRACE : TOKEN + { + public RBRACE(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (RBRACE); + + public override int yynum => 11; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/RBRACK.cs b/LibreMetaverse.LslTools/YYClass/RBRACK.cs new file mode 100644 index 00000000..65a5e993 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/RBRACK.cs @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class RBRACK : TOKEN + { + public RBRACK(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (RBRACK); + + public override int yynum => 15; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/RPAREN.cs b/LibreMetaverse.LslTools/YYClass/RPAREN.cs new file mode 100644 index 00000000..edfa826d --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/RPAREN.cs @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class RPAREN : TOKEN + { + public RPAREN(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (RPAREN); + + public override int yynum => 13; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs b/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs new file mode 100644 index 00000000..3a31bddf --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class SEMICOLON : TOKEN + { + public SEMICOLON(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (SEMICOLON); + + public override int yynum => 9; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff.cs b/LibreMetaverse.LslTools/YYClass/Stuff.cs new file mode 100644 index 00000000..ee1b3eec --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff : TOKEN + { + public Stuff(Parser yyq) + : base(yyq) + { + } + + public override string yyname => nameof (Stuff); + + public override int yynum => 17; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_1.cs new file mode 100644 index 00000000..216f60bf --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_1.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_1 : Stuff + { + public Stuff_1(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_2.cs b/LibreMetaverse.LslTools/YYClass/Stuff_2.cs new file mode 100644 index 00000000..98145f3f --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_2.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_2 : Stuff + { + public Stuff_2(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs new file mode 100644 index 00000000..76ee655c --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_2_1 : Stuff_2 + { + public Stuff_2_1(Parser yyq) + : base(yyq) + { + this.yytext = ""; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_3.cs b/LibreMetaverse.LslTools/YYClass/Stuff_3.cs new file mode 100644 index 00000000..164acc62 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_3.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_3 : Stuff + { + public Stuff_3(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_4.cs b/LibreMetaverse.LslTools/YYClass/Stuff_4.cs new file mode 100644 index 00000000..3193c371 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_4.cs @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_4 : Stuff + { + public Stuff_4(Parser yyq) + : base(yyq) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs new file mode 100644 index 00000000..516e9475 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class Stuff_4_1 : Stuff_4 + { + public Stuff_4_1(Parser yyq) + : base(yyq) + { + this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext; + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/THIS.cs b/LibreMetaverse.LslTools/YYClass/THIS.cs new file mode 100644 index 00000000..1347321a --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/THIS.cs @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class THIS : TOKEN + { + public THIS(Lexer yyl) + : base(yyl) + { + } + + public override string yyname => nameof (THIS); + + public override int yynum => 4; + } +} diff --git a/LibreMetaverse.LslTools/YYClass/cs0syntax.cs b/LibreMetaverse.LslTools/YYClass/cs0syntax.cs new file mode 100644 index 00000000..52fa8518 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/cs0syntax.cs @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class cs0syntax : Parser + { + public string Out; + public string Cls; + public string Par; + public string Ctx; + public bool defconseen; + + public cs0syntax() + : base((YyParser) new yycs0syntax(), (Lexer) new cs0tokens()) + { + } + + public cs0syntax(YyParser syms) + : base(syms, (Lexer) new cs0tokens()) + { + } + + public cs0syntax(YyParser syms, ErrorHandler erh) + : base(syms, (Lexer) new cs0tokens(erh)) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/cs0tokens.cs b/LibreMetaverse.LslTools/YYClass/cs0tokens.cs new file mode 100644 index 00000000..3564a805 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/cs0tokens.cs @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class cs0tokens : Lexer + { + public string Out; + + public cs0tokens() + : base((YyLexer) new yycs0tokens(new ErrorHandler(false))) + { + } + + public cs0tokens(ErrorHandler eh) + : base((YyLexer) new yycs0tokens(eh)) + { + } + + public cs0tokens(YyLexer tks) + : base(tks) + { + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs b/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs new file mode 100644 index 00000000..b5239622 --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs @@ -0,0 +1,6958 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class yycs0syntax : YyParser + { + public yycs0syntax() + { + this.arr = new int[6405] + { + 101, + 4, + 6, + 52, + 0, + 46, + 0, + 53, + 0, + 102, + 20, + 103, + 4, + 18, + 67, + 0, + 108, + 0, + 97, + 0, + 115, + 0, + 115, + 0, + 66, + 0, + 111, + 0, + 100, + 0, + 121, + 0, + 1, + 19, + 1, + 2, + 104, + 18, + 1, + 156, + 102, + 2, + 0, + 105, + 5, + 51, + 1, + 0, + 106, + 18, + 1, + 0, + 0, + 2, + 0, + 1, + 1, + 107, + 18, + 1, + 1, + 108, + 20, + 109, + 4, + 12, + 76, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 69, + 0, + 1, + 10, + 1, + 1, + 2, + 0, + 1, + 2, + 110, + 18, + 1, + 2, + 111, + 20, + 112, + 4, + 12, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 1, + 16, + 1, + 2, + 2, + 0, + 1, + 3, + 113, + 18, + 1, + 3, + 114, + 20, + 115, + 4, + 12, + 76, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 75, + 0, + 1, + 14, + 1, + 1, + 2, + 0, + 1, + 4, + 116, + 18, + 1, + 4, + 117, + 20, + 118, + 4, + 10, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 1, + 17, + 1, + 2, + 2, + 0, + 1, + 5, + 119, + 18, + 1, + 5, + 120, + 20, + 121, + 4, + 12, + 82, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 75, + 0, + 1, + 15, + 1, + 1, + 2, + 0, + 1, + 115, + 122, + 18, + 1, + 115, + 123, + 20, + 124, + 4, + 12, + 82, + 0, + 80, + 0, + 65, + 0, + 82, + 0, + 69, + 0, + 78, + 0, + 1, + 13, + 1, + 1, + 2, + 0, + 1, + 7, + 125, + 18, + 1, + 7, + 108, + 2, + 0, + 1, + 8, + 126, + 18, + 1, + 8, + 117, + 2, + 0, + 1, + 118, + (int) sbyte.MaxValue, + 18, + 1, + 118, + 128, + 20, + 129, + 4, + 12, + 76, + 0, + 80, + 0, + 65, + 0, + 82, + 0, + 69, + 0, + 78, + 0, + 1, + 12, + 1, + 1, + 2, + 0, + 1, + 10, + 130, + 18, + 1, + 10, + 131, + 20, + 132, + 4, + 12, + 82, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 69, + 0, + 1, + 11, + 1, + 1, + 2, + 0, + 1, + 12, + 133, + 18, + 1, + 12, + 128, + 2, + 0, + 1, + 13, + 134, + 18, + 1, + 13, + 117, + 2, + 0, + 1, + 119, + 135, + 18, + 1, + 119, + 117, + 2, + 0, + 1, + 16, + 136, + 18, + 1, + 16, + 123, + 2, + 0, + 1, + 116, + 137, + 18, + 1, + 116, + 138, + 20, + 139, + 4, + 10, + 67, + 0, + 79, + 0, + 76, + 0, + 79, + 0, + 78, + 0, + 1, + 8, + 1, + 1, + 2, + 0, + 1, + 18, + 140, + 18, + 1, + 18, + 141, + 20, + 142, + 4, + 6, + 78, + 0, + 69, + 0, + 87, + 0, + 1, + 5, + 1, + 1, + 2, + 0, + 1, + 19, + 143, + 18, + 1, + 19, + 144, + 20, + 145, + 4, + 8, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 1, + 23, + 1, + 2, + 2, + 0, + 1, + 20, + 146, + 18, + 1, + 20, + 128, + 2, + 0, + 1, + 21, + 147, + 18, + 1, + 21, + 117, + 2, + 0, + 1, + 131, + 148, + 18, + 1, + 131, + 123, + 2, + 0, + 1, + 117, + 149, + 18, + 1, + 117, + 150, + 20, + 151, + 4, + 8, + 84, + 0, + 72, + 0, + 73, + 0, + 83, + 0, + 1, + 4, + 1, + 1, + 2, + 0, + 1, + 133, + 152, + 18, + 1, + 133, + 153, + 20, + 154, + 4, + 8, + 66, + 0, + 65, + 0, + 83, + 0, + 69, + 0, + 1, + 3, + 1, + 1, + 2, + 0, + 1, + 134, + 155, + 18, + 1, + 134, + 128, + 2, + 0, + 1, + 26, + 156, + 18, + 1, + 26, + 138, + 2, + 0, + 1, + 27, + 157, + 18, + 1, + 27, + 150, + 2, + 0, + 1, + 28, + 158, + 18, + 1, + 28, + 114, + 2, + 0, + 1, + 29, + 159, + 18, + 1, + 29, + 117, + 2, + 0, + 1, + 135, + 160, + 18, + 1, + 135, + 117, + 2, + 0, + 1, + 35, + 161, + 18, + 1, + 35, + 120, + 2, + 0, + 1, + 37, + 162, + 18, + 1, + 37, + 153, + 2, + 0, + 1, + 38, + 163, + 18, + 1, + 38, + 164, + 20, + 165, + 4, + 18, + 83, + 0, + 69, + 0, + 77, + 0, + 73, + 0, + 67, + 0, + 79, + 0, + 76, + 0, + 79, + 0, + 78, + 0, + 1, + 9, + 1, + 1, + 2, + 0, + 1, + 39, + 166, + 18, + 1, + 39, + 144, + 2, + 0, + 1, + 40, + 167, + 18, + 1, + 40, + 168, + 20, + 169, + 4, + 6, + 65, + 0, + 78, + 0, + 89, + 0, + 1, + 7, + 1, + 1, + 2, + 0, + 1, + 41, + 170, + 18, + 1, + 41, + 171, + 20, + 172, + 4, + 4, + 73, + 0, + 68, + 0, + 1, + 6, + 1, + 1, + 2, + 0, + 1, + 42, + 173, + 18, + 1, + 42, + 114, + 2, + 0, + 1, + 43, + 174, + 18, + 1, + 43, + 117, + 2, + 0, + 1, + 147, + 175, + 18, + 1, + 147, + 123, + 2, + 0, + 1, + 154, + 176, + 18, + 1, + 154, + 177, + 20, + 178, + 4, + 8, + 67, + 0, + 111, + 0, + 110, + 0, + 115, + 0, + 1, + 20, + 1, + 2, + 2, + 0, + 1, + 149, + 179, + 18, + 1, + 149, + 180, + 20, + 181, + 4, + 16, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 1, + 22, + 1, + 2, + 2, + 0, + 1, + 156, + 104, + 1, + 157, + 182, + 18, + 1, + 157, + 183, + 23, + 184, + 4, + 6, + 69, + 0, + 79, + 0, + 70, + 0, + 1, + 2, + 1, + 6, + 2, + 0, + 1, + 153, + 185, + 18, + 1, + 153, + 186, + 20, + 187, + 4, + 8, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 1, + 18, + 1, + 2, + 2, + 0, + 1, + 155, + 188, + 18, + 1, + 155, + 131, + 2, + 0, + 1, + 54, + 189, + 18, + 1, + 54, + 120, + 2, + 0, + 1, + 56, + 190, + 18, + 1, + 56, + 186, + 2, + 0, + 1, + 63, + 191, + 18, + 1, + 63, + 123, + 2, + 0, + 1, + 65, + 192, + 18, + 1, + 65, + 193, + 20, + 194, + 4, + 8, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 1, + 21, + 1, + 2, + 2, + 0, + 1, + 101, + 195, + 18, + 1, + 101, + 144, + 2, + 0, + 1, + 102, + 196, + 18, + 1, + 102, + 128, + 2, + 0, + 1, + 103, + 197, + 18, + 1, + 103, + 117, + 2, + 0, + 198, + 5, + 0, + 199, + 5, + 97, + 1, + 2, + 200, + 19, + 184, + 1, + 2, + 201, + 5, + 1, + 1, + 155, + 202, + 17, + 203, + 15, + 204, + 4, + 28, + 37, + 0, + 67, + 0, + 108, + 0, + 97, + 0, + 115, + 0, + 115, + 0, + 66, + 0, + 111, + 0, + 100, + 0, + 121, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 205, + 20, + 206, + 4, + 26, + 67, + 0, + 108, + 0, + 97, + 0, + 115, + 0, + 115, + 0, + 66, + 0, + 111, + 0, + 100, + 0, + 121, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 26, + 1, + 3, + 1, + 4, + 1, + 3, + 207, + 22, + 1, + 1, + 1, + 3, + 208, + 19, + 154, + 1, + 3, + 209, + 5, + 44, + 1, + 1, + 210, + 17, + 211, + 15, + 212, + 4, + 22, + 37, + 0, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 213, + 20, + 214, + 4, + 20, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 29, + 1, + 3, + 1, + 1, + 1, + 0, + 215, + 22, + 1, + 2, + 1, + 2, + 216, + 16, + 0, + 162, + 1, + 3, + 217, + 17, + 218, + 15, + 219, + 4, + 20, + 37, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 220, + 20, + 221, + 4, + 18, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 38, + 1, + 3, + 1, + 1, + 1, + 0, + 222, + 22, + 1, + 5, + 1, + 4, + 223, + 16, + 0, + 162, + 1, + 5, + 224, + 17, + 225, + 15, + 226, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 227, + 20, + 228, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 98, + 1, + 3, + 1, + 4, + 1, + 3, + 229, + 22, + 1, + 25, + 1, + 115, + 230, + 17, + 231, + 15, + 232, + 4, + 26, + 37, + 0, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 233, + 20, + 234, + 4, + 24, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 50, + 1, + 3, + 1, + 1, + 1, + 0, + 235, + 22, + 1, + 9, + 1, + 7, + 236, + 17, + 218, + 1, + 0, + 222, + 1, + 8, + 237, + 16, + 0, + 162, + 1, + 118, + 238, + 17, + 218, + 1, + 0, + 222, + 1, + 10, + 239, + 17, + 240, + 15, + 241, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 242, + 20, + 243, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 95, + 1, + 3, + 1, + 4, + 1, + 3, + 244, + 22, + 1, + 24, + 1, + 12, + 245, + 17, + 218, + 1, + 0, + 222, + 1, + 13, + 246, + 16, + 0, + 162, + 1, + 119, + 247, + 16, + 0, + 162, + 1, + 16, + 248, + 17, + 249, + 15, + 250, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 48, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 251, + 20, + 252, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 48, + 0, + 95, + 0, + 49, + 0, + 1, + 92, + 1, + 3, + 1, + 4, + 1, + 3, + 253, + 22, + 1, + 23, + 1, + 116, + 254, + 16, + 0, + 152, + 1, + 19, + (int) byte.MaxValue, + 17, + 256, + 15, + 257, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 56, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 258, + 20, + 259, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 56, + 0, + 95, + 0, + 49, + 0, + 1, + 89, + 1, + 3, + 1, + 3, + 1, + 2, + 260, + 22, + 1, + 22, + 1, + 20, + 261, + 17, + 218, + 1, + 0, + 222, + 1, + 21, + 262, + 16, + 0, + 162, + 1, + 131, + 263, + 17, + 264, + 15, + 265, + 4, + 26, + 37, + 0, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 266, + 20, + 267, + 4, + 24, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + 56, + 1, + 3, + 1, + 6, + 1, + 5, + 268, + 22, + 1, + 11, + 1, + 134, + 269, + 17, + 218, + 1, + 0, + 222, + 1, + 135, + 270, + 16, + 0, + 162, + 1, + 27, + 271, + 17, + 272, + 15, + 273, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 48, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 274, + 20, + 275, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 48, + 0, + 95, + 0, + 49, + 0, + 1, + 77, + 1, + 3, + 1, + 2, + 1, + 1, + 276, + 22, + 1, + 18, + 1, + 26, + 277, + 17, + 278, + 15, + 279, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 280, + 20, + 281, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 83, + 1, + 3, + 1, + 2, + 1, + 1, + 282, + 22, + 1, + 20, + 1, + 29, + 283, + 16, + 0, + 162, + 1, + 28, + 284, + 17, + 218, + 1, + 0, + 222, + 1, + 35, + 285, + 17, + 286, + 15, + 287, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 288, + 20, + 289, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 80, + 1, + 3, + 1, + 5, + 1, + 4, + 290, + 22, + 1, + 19, + 1, + 37, + 291, + 17, + 292, + 15, + 293, + 4, + 18, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 56, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 294, + 20, + 295, + 4, + 16, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 56, + 0, + 95, + 0, + 49, + 0, + 1, + 74, + 1, + 3, + 1, + 2, + 1, + 1, + 296, + 22, + 1, + 17, + 1, + 38, + 297, + 17, + 298, + 15, + 299, + 4, + 18, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 300, + 20, + 301, + 4, + 16, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + 71, + 1, + 3, + 1, + 2, + 1, + 1, + 302, + 22, + 1, + 16, + 1, + 39, + 303, + 17, + 304, + 15, + 305, + 4, + 18, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 306, + 20, + 307, + 4, + 16, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 68, + 1, + 3, + 1, + 2, + 1, + 1, + 308, + 22, + 1, + 15, + 1, + 40, + 309, + 17, + 310, + 15, + 311, + 4, + 18, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 312, + 20, + 313, + 4, + 16, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 65, + 1, + 3, + 1, + 2, + 1, + 1, + 314, + 22, + 1, + 14, + 1, + 41, + 315, + 17, + 316, + 15, + 317, + 4, + 18, + 37, + 0, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 318, + 20, + 319, + 4, + 16, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 59, + 1, + 3, + 1, + 2, + 1, + 1, + 320, + 22, + 1, + 12, + 1, + 42, + 321, + 17, + 218, + 1, + 0, + 222, + 1, + 43, + 322, + 16, + 0, + 162, + 1, + 147, + 323, + 17, + 324, + 15, + 325, + 4, + 26, + 37, + 0, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 326, + 20, + 327, + 4, + 24, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 53, + 1, + 3, + 1, + 6, + 1, + 5, + 328, + 22, + 1, + 10, + 1, + 154, + 329, + 17, + 330, + 15, + 331, + 4, + 22, + 37, + 0, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 332, + 20, + 333, + 4, + 20, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 32, + 1, + 3, + 1, + 3, + 1, + 2, + 334, + 22, + 1, + 3, + 1, + 149, + 335, + 17, + 336, + 15, + 337, + 4, + 18, + 37, + 0, + 67, + 0, + 111, + 0, + 110, + 0, + 115, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 338, + 20, + 339, + 4, + 16, + 67, + 0, + 111, + 0, + 110, + 0, + 115, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 44, + 1, + 3, + 1, + 6, + 1, + 5, + 340, + 22, + 1, + 7, + 1, + 153, + 341, + 17, + 342, + 15, + 343, + 4, + 22, + 37, + 0, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 344, + 20, + 345, + 4, + 20, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + 35, + 1, + 3, + 1, + 3, + 1, + 2, + 346, + 22, + 1, + 4, + 1, + 54, + 347, + 17, + 348, + 15, + 349, + 4, + 18, + 37, + 0, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 350, + 20, + 351, + 4, + 16, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 62, + 1, + 3, + 1, + 5, + 1, + 4, + 352, + 22, + 1, + 13, + 1, + 56, + 353, + 17, + 354, + 15, + 355, + 4, + 20, + 37, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 356, + 20, + 357, + 4, + 18, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 95, + 0, + 49, + 0, + 1, + 41, + 1, + 3, + 1, + 3, + 1, + 2, + 358, + 22, + 1, + 6, + 1, + 63, + 359, + 17, + 360, + 15, + 361, + 4, + 18, + 37, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 362, + 20, + 363, + 4, + 16, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 95, + 0, + 49, + 0, + 1, + 47, + 1, + 3, + 1, + 5, + 1, + 4, + 364, + 22, + 1, + 8, + 1, + 65, + 365, + 17, + 366, + 15, + 367, + 4, + 20, + 37, + 0, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + -1, + 1, + 5, + 368, + 20, + 369, + 4, + 18, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 54, + 0, + 95, + 0, + 49, + 0, + 1, + 86, + 1, + 3, + 1, + 3, + 1, + 2, + 370, + 22, + 1, + 21, + 1, + 101, + 371, + 17, + 304, + 1, + 1, + 308, + 1, + 102, + 372, + 17, + 218, + 1, + 0, + 222, + 1, + 103, + 373, + 16, + 0, + 162, + 1, + 4, + 374, + 19, + 151, + 1, + 4, + 375, + 5, + 44, + 1, + 1, + 210, + 1, + 2, + 376, + 16, + 0, + 157, + 1, + 3, + 217, + 1, + 4, + 377, + 16, + 0, + 157, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 378, + 16, + 0, + 157, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 379, + 16, + 0, + 157, + 1, + 119, + 380, + 16, + 0, + 157, + 1, + 16, + 248, + 1, + 116, + 381, + 16, + 0, + 149, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 382, + 16, + 0, + 157, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 383, + 16, + 0, + 157, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 384, + 16, + 0, + 157, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 385, + 16, + 0, + 157, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 386, + 16, + 0, + 157, + 1, + 5, + 387, + 19, + 142, + 1, + 5, + 388, + 5, + 43, + 1, + 1, + 210, + 1, + 2, + 389, + 16, + 0, + 140, + 1, + 3, + 217, + 1, + 4, + 390, + 16, + 0, + 140, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 391, + 16, + 0, + 140, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 392, + 16, + 0, + 140, + 1, + 119, + 393, + 16, + 0, + 140, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 394, + 16, + 0, + 140, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 395, + 16, + 0, + 140, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 396, + 16, + 0, + 140, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 397, + 16, + 0, + 140, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 398, + 16, + 0, + 140, + 1, + 6, + 399, + 19, + 172, + 1, + 6, + 400, + 5, + 44, + 1, + 1, + 210, + 1, + 2, + 401, + 16, + 0, + 170, + 1, + 3, + 217, + 1, + 4, + 402, + 16, + 0, + 170, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 403, + 16, + 0, + 170, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 404, + 16, + 0, + 170, + 1, + 119, + 405, + 16, + 0, + 170, + 1, + 16, + 248, + 1, + 18, + 406, + 16, + 0, + 170, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 407, + 16, + 0, + 170, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 408, + 16, + 0, + 170, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 409, + 16, + 0, + 170, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 410, + 16, + 0, + 170, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 411, + 16, + 0, + 170, + 1, + 7, + 412, + 19, + 169, + 1, + 7, + 413, + 5, + 43, + 1, + 1, + 210, + 1, + 2, + 414, + 16, + 0, + 167, + 1, + 3, + 217, + 1, + 4, + 415, + 16, + 0, + 167, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 416, + 16, + 0, + 167, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 417, + 16, + 0, + 167, + 1, + 119, + 418, + 16, + 0, + 167, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 419, + 16, + 0, + 167, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 420, + 16, + 0, + 167, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 421, + 16, + 0, + 167, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 422, + 16, + 0, + 167, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 423, + 16, + 0, + 167, + 1, + 8, + 424, + 19, + 139, + 1, + 8, + 425, + 5, + 43, + 1, + 1, + 210, + 1, + 2, + 426, + 16, + 0, + 156, + 1, + 3, + 217, + 1, + 4, + 427, + 16, + 0, + 156, + 1, + 5, + 224, + 1, + 115, + 428, + 16, + 0, + 137, + 1, + 7, + 236, + 1, + 8, + 429, + 16, + 0, + 156, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 430, + 16, + 0, + 156, + 1, + 119, + 431, + 16, + 0, + 156, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 432, + 16, + 0, + 156, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 433, + 16, + 0, + 156, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 434, + 16, + 0, + 156, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 435, + 16, + 0, + 156, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 436, + 16, + 0, + 156, + 1, + 9, + 437, + 19, + 165, + 1, + 9, + 438, + 5, + 43, + 1, + 1, + 210, + 1, + 2, + 439, + 16, + 0, + 163, + 1, + 3, + 217, + 1, + 4, + 440, + 16, + 0, + 163, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 441, + 16, + 0, + 163, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 442, + 16, + 0, + 163, + 1, + 119, + 443, + 16, + 0, + 163, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 444, + 16, + 0, + 163, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 445, + 16, + 0, + 163, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 446, + 16, + 0, + 163, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 447, + 16, + 0, + 163, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 448, + 16, + 0, + 163, + 1, + 10, + 449, + 19, + 109, + 1, + 10, + 450, + 5, + 44, + 1, + 0, + 451, + 16, + 0, + 107, + 1, + 1, + 210, + 1, + 2, + 452, + 16, + 0, + 125, + 1, + 3, + 217, + 1, + 4, + 453, + 16, + 0, + 125, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 454, + 16, + 0, + 125, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 455, + 16, + 0, + 125, + 1, + 119, + 456, + 16, + 0, + 125, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 457, + 16, + 0, + 125, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 458, + 16, + 0, + 125, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 459, + 16, + 0, + 125, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 460, + 16, + 0, + 125, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 461, + 16, + 0, + 125, + 1, + 11, + 462, + 19, + 132, + 1, + 11, + 463, + 5, + 35, + 1, + 1, + 210, + 1, + 2, + 464, + 16, + 0, + 188, + 1, + 3, + 217, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 465, + 16, + 0, + 130, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 26, + 277, + 1, + 27, + 271, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 12, + 466, + 19, + 129, + 1, + 12, + 467, + 5, + 45, + 1, + 1, + 210, + 1, + 2, + 468, + 16, + 0, + 133, + 1, + 3, + 217, + 1, + 4, + 469, + 16, + 0, + 133, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 117, + 470, + 16, + 0, + (int) sbyte.MaxValue, + 1, + 118, + 238, + 1, + 8, + 471, + 16, + 0, + 133, + 1, + 10, + 239, + 1, + 13, + 472, + 16, + 0, + 133, + 1, + 12, + 245, + 1, + 119, + 473, + 16, + 0, + 133, + 1, + 16, + 248, + 1, + 19, + 474, + 16, + 0, + 146, + 1, + 20, + 261, + 1, + 21, + 475, + 16, + 0, + 133, + 1, + 131, + 263, + 1, + 133, + 476, + 16, + 0, + 155, + 1, + 134, + 269, + 1, + 135, + 477, + 16, + 0, + 133, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 29, + 478, + 16, + 0, + 133, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 479, + 16, + 0, + 133, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 480, + 16, + 0, + 196, + 1, + 102, + 372, + 1, + 103, + 481, + 16, + 0, + 133, + 1, + 13, + 482, + 19, + 124, + 1, + 13, + 483, + 5, + 31, + 1, + 3, + 217, + 1, + 5, + 224, + 1, + 7, + 236, + 1, + 118, + 238, + 1, + 119, + 484, + 16, + 0, + 148, + 1, + 10, + 239, + 1, + 13, + 485, + 16, + 0, + 136, + 1, + 12, + 245, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 486, + 16, + 0, + 191, + 1, + 134, + 269, + 1, + 135, + 487, + 16, + 0, + 175, + 1, + 27, + 271, + 1, + 26, + 277, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 488, + 16, + 0, + 122, + 1, + 14, + 489, + 19, + 115, + 1, + 14, + 490, + 5, + 43, + 1, + 1, + 210, + 1, + 2, + 491, + 16, + 0, + 113, + 1, + 3, + 217, + 1, + 4, + 492, + 16, + 0, + 113, + 1, + 5, + 224, + 1, + 115, + 230, + 1, + 7, + 236, + 1, + 8, + 493, + 16, + 0, + 113, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 13, + 494, + 16, + 0, + 113, + 1, + 119, + 495, + 16, + 0, + 113, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 21, + 496, + 16, + 0, + 113, + 1, + 131, + 263, + 1, + 134, + 269, + 1, + 135, + 497, + 16, + 0, + 113, + 1, + 27, + 498, + 16, + 0, + 158, + 1, + 26, + 277, + 1, + 29, + 499, + 16, + 0, + 113, + 1, + 28, + 284, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 500, + 16, + 0, + 173, + 1, + 42, + 321, + 1, + 43, + 501, + 16, + 0, + 113, + 1, + 147, + 323, + 1, + 154, + 329, + 1, + 149, + 335, + 1, + 153, + 341, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 103, + 502, + 16, + 0, + 113, + 1, + 15, + 503, + 19, + 121, + 1, + 15, + 504, + 5, + 29, + 1, + 3, + 217, + 1, + 4, + 505, + 16, + 0, + 119, + 1, + 5, + 224, + 1, + 7, + 236, + 1, + 118, + 238, + 1, + 10, + 239, + 1, + 12, + 245, + 1, + 16, + 248, + 1, + 19, + (int) byte.MaxValue, + 1, + 20, + 261, + 1, + 134, + 269, + 1, + 26, + 277, + 1, + 27, + 271, + 1, + 28, + 284, + 1, + 29, + 506, + 16, + 0, + 161, + 1, + 35, + 285, + 1, + 37, + 291, + 1, + 38, + 297, + 1, + 39, + 303, + 1, + 40, + 309, + 1, + 41, + 315, + 1, + 42, + 321, + 1, + 43, + 507, + 16, + 0, + 189, + 1, + 54, + 347, + 1, + 56, + 353, + 1, + 63, + 359, + 1, + 65, + 365, + 1, + 101, + 371, + 1, + 102, + 372, + 1, + 16, + 508, + 19, + 112, + 1, + 16, + 509, + 5, + 1, + 1, + 1, + 510, + 16, + 0, + 110, + 1, + 17, + 511, + 19, + 118, + 1, + 17, + 512, + 5, + 9, + 1, + 3, + 513, + 16, + 0, + 116, + 1, + 42, + 514, + 16, + 0, + 174, + 1, + 7, + 515, + 16, + 0, + 126, + 1, + 12, + 516, + 16, + 0, + 134, + 1, + 118, + 517, + 16, + 0, + 135, + 1, + 20, + 518, + 16, + 0, + 147, + 1, + 134, + 519, + 16, + 0, + 160, + 1, + 28, + 520, + 16, + 0, + 159, + 1, + 102, + 521, + 16, + 0, + 197, + 1, + 18, + 522, + 19, + 187, + 1, + 18, + 523, + 5, + 10, + 1, + 2, + 524, + 16, + 0, + 185, + 1, + 4, + 525, + 16, + 0, + 190, + 1, + 43, + 526, + 16, + 0, + 190, + 1, + 8, + 527, + 16, + 0, + 190, + 1, + 13, + 528, + 16, + 0, + 190, + 1, + 119, + 529, + 16, + 0, + 190, + 1, + 21, + 530, + 16, + 0, + 190, + 1, + 135, + 531, + 16, + 0, + 190, + 1, + 29, + 532, + 16, + 0, + 190, + 1, + 103, + 533, + 16, + 0, + 190, + 1, + 19, + 534, + 19, + 103, + 1, + 19, + 535, + 5, + 1, + 1, + 0, + 536, + 16, + 0, + 104, + 1, + 20, + 537, + 19, + 178, + 1, + 20, + 538, + 5, + 1, + 1, + 2, + 539, + 16, + 0, + 176, + 1, + 21, + 540, + 19, + 194, + 1, + 21, + 541, + 5, + 1, + 1, + 18, + 542, + 16, + 0, + 192, + 1, + 22, + 543, + 19, + 181, + 1, + 22, + 544, + 5, + 1, + 1, + 115, + 545, + 16, + 0, + 179, + 1, + 23, + 546, + 19, + 145, + 1, + 23, + 547, + 5, + 11, + 1, + 2, + 548, + 16, + 0, + 195, + 1, + 4, + 549, + 16, + 0, + 166, + 1, + 43, + 550, + 16, + 0, + 166, + 1, + 8, + 551, + 16, + 0, + 166, + 1, + 13, + 552, + 16, + 0, + 166, + 1, + 18, + 553, + 16, + 0, + 143, + 1, + 21, + 554, + 16, + 0, + 166, + 1, + 119, + 555, + 16, + 0, + 166, + 1, + 135, + 556, + 16, + 0, + 166, + 1, + 29, + 557, + 16, + 0, + 166, + 1, + 103, + 558, + 16, + 0, + 166, + 1, + 24, + 559, + 19, + 560, + 4, + 22, + 67, + 0, + 108, + 0, + 97, + 0, + 115, + 0, + 115, + 0, + 66, + 0, + 111, + 0, + 100, + 0, + 121, + 0, + 95, + 0, + 49, + 0, + 1, + 24, + 535, + 1, + 25, + 561, + 19, + 562, + 4, + 22, + 67, + 0, + 108, + 0, + 97, + 0, + 115, + 0, + 115, + 0, + 66, + 0, + 111, + 0, + 100, + 0, + 121, + 0, + 95, + 0, + 50, + 0, + 1, + 25, + 535, + 1, + 26, + 563, + 19, + 206, + 1, + 26, + 535, + 1, + 27, + 564, + 19, + 565, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 49, + 0, + 1, + 27, + 509, + 1, + 28, + 566, + 19, + 567, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 1, + 28, + 509, + 1, + 29, + 568, + 19, + 214, + 1, + 29, + 509, + 1, + 30, + 569, + 19, + 570, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 51, + 0, + 1, + 30, + 509, + 1, + 31, + 571, + 19, + 572, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 1, + 31, + 509, + 1, + 32, + 573, + 19, + 333, + 1, + 32, + 509, + 1, + 33, + 574, + 19, + 575, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 53, + 0, + 1, + 33, + 509, + 1, + 34, + 576, + 19, + 577, + 4, + 16, + 71, + 0, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 54, + 0, + 1, + 34, + 509, + 1, + 35, + 578, + 19, + 345, + 1, + 35, + 509, + 1, + 36, + 579, + 19, + 580, + 4, + 14, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 49, + 0, + 1, + 36, + 512, + 1, + 37, + 581, + 19, + 582, + 4, + 14, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 50, + 0, + 1, + 37, + 512, + 1, + 38, + 583, + 19, + 221, + 1, + 38, + 512, + 1, + 39, + 584, + 19, + 585, + 4, + 14, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 51, + 0, + 1, + 39, + 512, + 1, + 40, + 586, + 19, + 587, + 4, + 14, + 83, + 0, + 116, + 0, + 117, + 0, + 102, + 0, + 102, + 0, + 95, + 0, + 52, + 0, + 1, + 40, + 512, + 1, + 41, + 588, + 19, + 357, + 1, + 41, + 512, + 1, + 42, + 589, + 19, + 590, + 4, + 12, + 67, + 0, + 111, + 0, + 110, + 0, + 115, + 0, + 95, + 0, + 49, + 0, + 1, + 42, + 538, + 1, + 43, + 591, + 19, + 592, + 4, + 12, + 67, + 0, + 111, + 0, + 110, + 0, + 115, + 0, + 95, + 0, + 50, + 0, + 1, + 43, + 538, + 1, + 44, + 593, + 19, + 339, + 1, + 44, + 538, + 1, + 45, + 594, + 19, + 595, + 4, + 12, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 49, + 0, + 1, + 45, + 541, + 1, + 46, + 596, + 19, + 597, + 4, + 12, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 1, + 46, + 541, + 1, + 47, + 598, + 19, + 363, + 1, + 47, + 541, + 1, + 48, + 599, + 19, + 600, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 49, + 0, + 1, + 48, + 544, + 1, + 49, + 601, + 19, + 602, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 50, + 0, + 1, + 49, + 544, + 1, + 50, + 603, + 19, + 234, + 1, + 50, + 544, + 1, + 51, + 604, + 19, + 605, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 51, + 0, + 1, + 51, + 544, + 1, + 52, + 606, + 19, + 607, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 52, + 0, + 1, + 52, + 544, + 1, + 53, + 608, + 19, + 327, + 1, + 53, + 544, + 1, + 54, + 609, + 19, + 610, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 53, + 0, + 1, + 54, + 544, + 1, + 55, + 611, + 19, + 612, + 4, + 20, + 66, + 0, + 97, + 0, + 115, + 0, + 101, + 0, + 67, + 0, + 97, + 0, + 108, + 0, + 108, + 0, + 95, + 0, + 54, + 0, + 1, + 55, + 544, + 1, + 56, + 613, + 19, + 267, + 1, + 56, + 544, + 1, + 57, + 614, + 19, + 615, + 4, + 12, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 49, + 0, + 1, + 57, + 547, + 1, + 58, + 616, + 19, + 617, + 4, + 12, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 50, + 0, + 1, + 58, + 547, + 1, + 59, + 618, + 19, + 319, + 1, + 59, + 547, + 1, + 60, + 619, + 19, + 620, + 4, + 12, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 51, + 0, + 1, + 60, + 547, + 1, + 61, + 621, + 19, + 622, + 4, + 12, + 78, + 0, + 97, + 0, + 109, + 0, + 101, + 0, + 95, + 0, + 52, + 0, + 1, + 61, + 547, + 1, + 62, + 623, + 19, + 351, + 1, + 62, + 547, + 1, + 63, + 624, + 19, + 625, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 1, + 63, + 523, + 1, + 64, + 626, + 19, + 627, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 1, + 64, + 523, + 1, + 65, + 628, + 19, + 313, + 1, + 65, + 523, + 1, + 66, + 629, + 19, + 630, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 51, + 0, + 1, + 66, + 523, + 1, + 67, + 631, + 19, + 632, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 52, + 0, + 1, + 67, + 523, + 1, + 68, + 633, + 19, + 307, + 1, + 68, + 523, + 1, + 69, + 634, + 19, + 635, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 53, + 0, + 1, + 69, + 523, + 1, + 70, + 636, + 19, + 637, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 54, + 0, + 1, + 70, + 523, + 1, + 71, + 638, + 19, + 301, + 1, + 71, + 523, + 1, + 72, + 639, + 19, + 640, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 55, + 0, + 1, + 72, + 523, + 1, + 73, + 641, + 19, + 642, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 56, + 0, + 1, + 73, + 523, + 1, + 74, + 643, + 19, + 295, + 1, + 74, + 523, + 1, + 75, + 644, + 19, + 645, + 4, + 12, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 57, + 0, + 1, + 75, + 523, + 1, + 76, + 646, + 19, + 647, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 48, + 0, + 1, + 76, + 523, + 1, + 77, + 648, + 19, + 275, + 1, + 77, + 523, + 1, + 78, + 649, + 19, + 650, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 49, + 0, + 1, + 78, + 523, + 1, + 79, + 651, + 19, + 652, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 50, + 0, + 1, + 79, + 523, + 1, + 80, + 653, + 19, + 289, + 1, + 80, + 523, + 1, + 81, + 654, + 19, + 655, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 51, + 0, + 1, + 81, + 523, + 1, + 82, + 656, + 19, + 657, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 52, + 0, + 1, + 82, + 523, + 1, + 83, + 658, + 19, + 281, + 1, + 83, + 523, + 1, + 84, + 659, + 19, + 660, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 53, + 0, + 1, + 84, + 523, + 1, + 85, + 661, + 19, + 662, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 54, + 0, + 1, + 85, + 523, + 1, + 86, + 663, + 19, + 369, + 1, + 86, + 523, + 1, + 87, + 664, + 19, + 665, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 55, + 0, + 1, + 87, + 523, + 1, + 88, + 666, + 19, + 667, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 56, + 0, + 1, + 88, + 523, + 1, + 89, + 668, + 19, + 259, + 1, + 89, + 523, + 1, + 90, + 669, + 19, + 670, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 49, + 0, + 57, + 0, + 1, + 90, + 523, + 1, + 91, + 671, + 19, + 672, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 48, + 0, + 1, + 91, + 523, + 1, + 92, + 673, + 19, + 252, + 1, + 92, + 523, + 1, + 93, + 674, + 19, + 675, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 49, + 0, + 1, + 93, + 523, + 1, + 94, + 676, + 19, + 677, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 50, + 0, + 1, + 94, + 523, + 1, + 95, + 678, + 19, + 243, + 1, + 95, + 523, + 1, + 96, + 679, + 19, + 680, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 51, + 0, + 1, + 96, + 523, + 1, + 97, + 681, + 19, + 682, + 4, + 14, + 73, + 0, + 116, + 0, + 101, + 0, + 109, + 0, + 95, + 0, + 50, + 0, + 52, + 0, + 1, + 97, + 523, + 1, + 98, + 683, + 19, + 228, + 1, + 98, + 523, + 2, + 1, + 0 + }; + Sfactory sfactory1 = new Sfactory((YyParser) this, "Name", new SCreator(yycs0syntax.Name_factory)); + Sfactory sfactory2 = new Sfactory((YyParser) this, "Cons_1", new SCreator(yycs0syntax.Cons_1_factory)); + Sfactory sfactory3 = new Sfactory((YyParser) this, "Cons_2", new SCreator(yycs0syntax.Cons_2_factory)); + Sfactory sfactory4 = new Sfactory((YyParser) this, "BaseCall_1", new SCreator(yycs0syntax.BaseCall_1_factory)); + Sfactory sfactory5 = new Sfactory((YyParser) this, "BaseCall_2", new SCreator(yycs0syntax.BaseCall_2_factory)); + Sfactory sfactory6 = new Sfactory((YyParser) this, "BaseCall_3", new SCreator(yycs0syntax.BaseCall_3_factory)); + Sfactory sfactory7 = new Sfactory((YyParser) this, "BaseCall_4", new SCreator(yycs0syntax.BaseCall_4_factory)); + Sfactory sfactory8 = new Sfactory((YyParser) this, "BaseCall_5", new SCreator(yycs0syntax.BaseCall_5_factory)); + Sfactory sfactory9 = new Sfactory((YyParser) this, "BaseCall_6", new SCreator(yycs0syntax.BaseCall_6_factory)); + Sfactory sfactory10 = new Sfactory((YyParser) this, "GStuff", new SCreator(yycs0syntax.GStuff_factory)); + Sfactory sfactory11 = new Sfactory((YyParser) this, "Item_18_1", new SCreator(yycs0syntax.Item_18_1_factory)); + Sfactory sfactory12 = new Sfactory((YyParser) this, "ClassBody", new SCreator(yycs0syntax.ClassBody_factory)); + Sfactory sfactory13 = new Sfactory((YyParser) this, "Item_20_1", new SCreator(yycs0syntax.Item_20_1_factory)); + Sfactory sfactory14 = new Sfactory((YyParser) this, "Stuff_4_1", new SCreator(yycs0syntax.Stuff_4_1_factory)); + Sfactory sfactory15 = new Sfactory((YyParser) this, "Item_12_1", new SCreator(yycs0syntax.Item_12_1_factory)); + Sfactory sfactory16 = new Sfactory((YyParser) this, "Item_2", new SCreator(yycs0syntax.Item_2_factory)); + Sfactory sfactory17 = new Sfactory((YyParser) this, "Item_3", new SCreator(yycs0syntax.Item_3_factory)); + Sfactory sfactory18 = new Sfactory((YyParser) this, "Item_4", new SCreator(yycs0syntax.Item_4_factory)); + Sfactory sfactory19 = new Sfactory((YyParser) this, "Item_5", new SCreator(yycs0syntax.Item_5_factory)); + Sfactory sfactory20 = new Sfactory((YyParser) this, "Item_6", new SCreator(yycs0syntax.Item_6_factory)); + Sfactory sfactory21 = new Sfactory((YyParser) this, "Item_7", new SCreator(yycs0syntax.Item_7_factory)); + Sfactory sfactory22 = new Sfactory((YyParser) this, "Item_8", new SCreator(yycs0syntax.Item_8_factory)); + Sfactory sfactory23 = new Sfactory((YyParser) this, "Item_9", new SCreator(yycs0syntax.Item_9_factory)); + Sfactory sfactory24 = new Sfactory((YyParser) this, "BaseCall_6_1", new SCreator(yycs0syntax.BaseCall_6_1_factory)); + Sfactory sfactory25 = new Sfactory((YyParser) this, "Cons", new SCreator(yycs0syntax.Cons_factory)); + Sfactory sfactory26 = new Sfactory((YyParser) this, "error", new SCreator(yycs0syntax.error_factory)); + Sfactory sfactory27 = new Sfactory((YyParser) this, "Item_20", new SCreator(yycs0syntax.Item_20_factory)); + Sfactory sfactory28 = new Sfactory((YyParser) this, "Item_21", new SCreator(yycs0syntax.Item_21_factory)); + Sfactory sfactory29 = new Sfactory((YyParser) this, "Item_22", new SCreator(yycs0syntax.Item_22_factory)); + Sfactory sfactory30 = new Sfactory((YyParser) this, "Item_1", new SCreator(yycs0syntax.Item_1_factory)); + Sfactory sfactory31 = new Sfactory((YyParser) this, "Item_6_1", new SCreator(yycs0syntax.Item_6_1_factory)); + Sfactory sfactory32 = new Sfactory((YyParser) this, "Call", new SCreator(yycs0syntax.Call_factory)); + Sfactory sfactory33 = new Sfactory((YyParser) this, "Stuff", new SCreator(yycs0syntax.Stuff_factory)); + Sfactory sfactory34 = new Sfactory((YyParser) this, "Item", new SCreator(yycs0syntax.Item_factory)); + Sfactory sfactory35 = new Sfactory((YyParser) this, "Name_4_1", new SCreator(yycs0syntax.Name_4_1_factory)); + Sfactory sfactory36 = new Sfactory((YyParser) this, "Item_16_1", new SCreator(yycs0syntax.Item_16_1_factory)); + Sfactory sfactory37 = new Sfactory((YyParser) this, "Call_2", new SCreator(yycs0syntax.Call_2_factory)); + Sfactory sfactory38 = new Sfactory((YyParser) this, "Stuff_2_1", new SCreator(yycs0syntax.Stuff_2_1_factory)); + Sfactory sfactory39 = new Sfactory((YyParser) this, "Item_10_1", new SCreator(yycs0syntax.Item_10_1_factory)); + Sfactory sfactory40 = new Sfactory((YyParser) this, "Item_24_1", new SCreator(yycs0syntax.Item_24_1_factory)); + Sfactory sfactory41 = new Sfactory((YyParser) this, "Stuff_1", new SCreator(yycs0syntax.Stuff_1_factory)); + Sfactory sfactory42 = new Sfactory((YyParser) this, "Stuff_2", new SCreator(yycs0syntax.Stuff_2_factory)); + Sfactory sfactory43 = new Sfactory((YyParser) this, "Stuff_3", new SCreator(yycs0syntax.Stuff_3_factory)); + Sfactory sfactory44 = new Sfactory((YyParser) this, "Stuff_4", new SCreator(yycs0syntax.Stuff_4_factory)); + Sfactory sfactory45 = new Sfactory((YyParser) this, "BaseCall", new SCreator(yycs0syntax.BaseCall_factory)); + Sfactory sfactory46 = new Sfactory((YyParser) this, "Call_2_1", new SCreator(yycs0syntax.Call_2_1_factory)); + Sfactory sfactory47 = new Sfactory((YyParser) this, "GStuff_6_1", new SCreator(yycs0syntax.GStuff_6_1_factory)); + Sfactory sfactory48 = new Sfactory((YyParser) this, "BaseCall_4_1", new SCreator(yycs0syntax.BaseCall_4_1_factory)); + Sfactory sfactory49 = new Sfactory((YyParser) this, "Item_10", new SCreator(yycs0syntax.Item_10_factory)); + Sfactory sfactory50 = new Sfactory((YyParser) this, "Item_11", new SCreator(yycs0syntax.Item_11_factory)); + Sfactory sfactory51 = new Sfactory((YyParser) this, "Item_12", new SCreator(yycs0syntax.Item_12_factory)); + Sfactory sfactory52 = new Sfactory((YyParser) this, "Item_13", new SCreator(yycs0syntax.Item_13_factory)); + Sfactory sfactory53 = new Sfactory((YyParser) this, "Item_14", new SCreator(yycs0syntax.Item_14_factory)); + Sfactory sfactory54 = new Sfactory((YyParser) this, "Item_15", new SCreator(yycs0syntax.Item_15_factory)); + Sfactory sfactory55 = new Sfactory((YyParser) this, "Item_16", new SCreator(yycs0syntax.Item_16_factory)); + Sfactory sfactory56 = new Sfactory((YyParser) this, "Item_17", new SCreator(yycs0syntax.Item_17_factory)); + Sfactory sfactory57 = new Sfactory((YyParser) this, "Item_18", new SCreator(yycs0syntax.Item_18_factory)); + Sfactory sfactory58 = new Sfactory((YyParser) this, "Item_19", new SCreator(yycs0syntax.Item_19_factory)); + Sfactory sfactory59 = new Sfactory((YyParser) this, "Name_3", new SCreator(yycs0syntax.Name_3_factory)); + Sfactory sfactory60 = new Sfactory((YyParser) this, "GStuff_1", new SCreator(yycs0syntax.GStuff_1_factory)); + Sfactory sfactory61 = new Sfactory((YyParser) this, "GStuff_2", new SCreator(yycs0syntax.GStuff_2_factory)); + Sfactory sfactory62 = new Sfactory((YyParser) this, "GStuff_3", new SCreator(yycs0syntax.GStuff_3_factory)); + Sfactory sfactory63 = new Sfactory((YyParser) this, "GStuff_4", new SCreator(yycs0syntax.GStuff_4_factory)); + Sfactory sfactory64 = new Sfactory((YyParser) this, "GStuff_5", new SCreator(yycs0syntax.GStuff_5_factory)); + Sfactory sfactory65 = new Sfactory((YyParser) this, "GStuff_6", new SCreator(yycs0syntax.GStuff_6_factory)); + Sfactory sfactory66 = new Sfactory((YyParser) this, "Item_4_1", new SCreator(yycs0syntax.Item_4_1_factory)); + Sfactory sfactory67 = new Sfactory((YyParser) this, "Cons_2_1", new SCreator(yycs0syntax.Cons_2_1_factory)); + Sfactory sfactory68 = new Sfactory((YyParser) this, "Item_23", new SCreator(yycs0syntax.Item_23_factory)); + Sfactory sfactory69 = new Sfactory((YyParser) this, "Item_24", new SCreator(yycs0syntax.Item_24_factory)); + Sfactory sfactory70 = new Sfactory((YyParser) this, "Call_1", new SCreator(yycs0syntax.Call_1_factory)); + Sfactory sfactory71 = new Sfactory((YyParser) this, "ClassBody_2_1", new SCreator(yycs0syntax.ClassBody_2_1_factory)); + Sfactory sfactory72 = new Sfactory((YyParser) this, "Name_4", new SCreator(yycs0syntax.Name_4_factory)); + Sfactory sfactory73 = new Sfactory((YyParser) this, "Name_2_1", new SCreator(yycs0syntax.Name_2_1_factory)); + Sfactory sfactory74 = new Sfactory((YyParser) this, "Item_14_1", new SCreator(yycs0syntax.Item_14_1_factory)); + Sfactory sfactory75 = new Sfactory((YyParser) this, "ClassBody_1", new SCreator(yycs0syntax.ClassBody_1_factory)); + Sfactory sfactory76 = new Sfactory((YyParser) this, "ClassBody_2", new SCreator(yycs0syntax.ClassBody_2_factory)); + Sfactory sfactory77 = new Sfactory((YyParser) this, "Item_22_1", new SCreator(yycs0syntax.Item_22_1_factory)); + Sfactory sfactory78 = new Sfactory((YyParser) this, "GStuff_4_1", new SCreator(yycs0syntax.GStuff_4_1_factory)); + Sfactory sfactory79 = new Sfactory((YyParser) this, "Name_1", new SCreator(yycs0syntax.Name_1_factory)); + Sfactory sfactory80 = new Sfactory((YyParser) this, "Name_2", new SCreator(yycs0syntax.Name_2_factory)); + Sfactory sfactory81 = new Sfactory((YyParser) this, "BaseCall_2_1", new SCreator(yycs0syntax.BaseCall_2_1_factory)); + Sfactory sfactory82 = new Sfactory((YyParser) this, "Item_8_1", new SCreator(yycs0syntax.Item_8_1_factory)); + Sfactory sfactory83 = new Sfactory((YyParser) this, "GStuff_2_1", new SCreator(yycs0syntax.GStuff_2_1_factory)); + Sfactory sfactory84 = new Sfactory((YyParser) this, "Item_2_1", new SCreator(yycs0syntax.Item_2_1_factory)); + } + + public override object Action(Parser yyq, SYMBOL yysym, int yyact) + { + if (yyact == -1) +#pragma warning disable CS0642 // Possible mistaken empty statement + ; +#pragma warning restore CS0642 // Possible mistaken empty statement + return (object) null; + } + + public static object Name_factory(Parser yyp) + { + return (object) new Name(yyp); + } + + public static object Cons_1_factory(Parser yyp) + { + return (object) new Cons_1(yyp); + } + + public static object Cons_2_factory(Parser yyp) + { + return (object) new Cons_2(yyp); + } + + public static object BaseCall_1_factory(Parser yyp) + { + return (object) new BaseCall_1(yyp); + } + + public static object BaseCall_2_factory(Parser yyp) + { + return (object) new BaseCall_2(yyp); + } + + public static object BaseCall_3_factory(Parser yyp) + { + return (object) new BaseCall_3(yyp); + } + + public static object BaseCall_4_factory(Parser yyp) + { + return (object) new BaseCall_4(yyp); + } + + public static object BaseCall_5_factory(Parser yyp) + { + return (object) new BaseCall_5(yyp); + } + + public static object BaseCall_6_factory(Parser yyp) + { + return (object) new BaseCall_6(yyp); + } + + public static object GStuff_factory(Parser yyp) + { + return (object) new GStuff(yyp); + } + + public static object Item_18_1_factory(Parser yyp) + { + return (object) new Item_18_1(yyp); + } + + public static object ClassBody_factory(Parser yyp) + { + return (object) new ClassBody(yyp); + } + + public static object Item_20_1_factory(Parser yyp) + { + return (object) new Item_20_1(yyp); + } + + public static object Stuff_4_1_factory(Parser yyp) + { + return (object) new Stuff_4_1(yyp); + } + + public static object Item_12_1_factory(Parser yyp) + { + return (object) new Item_12_1(yyp); + } + + public static object Item_2_factory(Parser yyp) + { + return (object) new Item_2(yyp); + } + + public static object Item_3_factory(Parser yyp) + { + return (object) new Item_3(yyp); + } + + public static object Item_4_factory(Parser yyp) + { + return (object) new Item_4(yyp); + } + + public static object Item_5_factory(Parser yyp) + { + return (object) new Item_5(yyp); + } + + public static object Item_6_factory(Parser yyp) + { + return (object) new Item_6(yyp); + } + + public static object Item_7_factory(Parser yyp) + { + return (object) new Item_7(yyp); + } + + public static object Item_8_factory(Parser yyp) + { + return (object) new Item_8(yyp); + } + + public static object Item_9_factory(Parser yyp) + { + return (object) new Item_9(yyp); + } + + public static object BaseCall_6_1_factory(Parser yyp) + { + return (object) new BaseCall_6_1(yyp); + } + + public static object Cons_factory(Parser yyp) + { + return (object) new Cons(yyp); + } + + public static object error_factory(Parser yyp) + { + return (object) new error(yyp); + } + + public static object Item_20_factory(Parser yyp) + { + return (object) new Item_20(yyp); + } + + public static object Item_21_factory(Parser yyp) + { + return (object) new Item_21(yyp); + } + + public static object Item_22_factory(Parser yyp) + { + return (object) new Item_22(yyp); + } + + public static object Item_1_factory(Parser yyp) + { + return (object) new Item_1(yyp); + } + + public static object Item_6_1_factory(Parser yyp) + { + return (object) new Item_6_1(yyp); + } + + public static object Call_factory(Parser yyp) + { + return (object) new Call(yyp); + } + + public static object Stuff_factory(Parser yyp) + { + return (object) new Stuff(yyp); + } + + public static object Item_factory(Parser yyp) + { + return (object) new Item(yyp); + } + + public static object Name_4_1_factory(Parser yyp) + { + return (object) new Name_4_1(yyp); + } + + public static object Item_16_1_factory(Parser yyp) + { + return (object) new Item_16_1(yyp); + } + + public static object Call_2_factory(Parser yyp) + { + return (object) new Call_2(yyp); + } + + public static object Stuff_2_1_factory(Parser yyp) + { + return (object) new Stuff_2_1(yyp); + } + + public static object Item_10_1_factory(Parser yyp) + { + return (object) new Item_10_1(yyp); + } + + public static object Item_24_1_factory(Parser yyp) + { + return (object) new Item_24_1(yyp); + } + + public static object Stuff_1_factory(Parser yyp) + { + return (object) new Stuff_1(yyp); + } + + public static object Stuff_2_factory(Parser yyp) + { + return (object) new Stuff_2(yyp); + } + + public static object Stuff_3_factory(Parser yyp) + { + return (object) new Stuff_3(yyp); + } + + public static object Stuff_4_factory(Parser yyp) + { + return (object) new Stuff_4(yyp); + } + + public static object BaseCall_factory(Parser yyp) + { + return (object) new BaseCall(yyp); + } + + public static object Call_2_1_factory(Parser yyp) + { + return (object) new Call_2_1(yyp); + } + + public static object GStuff_6_1_factory(Parser yyp) + { + return (object) new GStuff_6_1(yyp); + } + + public static object BaseCall_4_1_factory(Parser yyp) + { + return (object) new BaseCall_4_1(yyp); + } + + public static object Item_10_factory(Parser yyp) + { + return (object) new Item_10(yyp); + } + + public static object Item_11_factory(Parser yyp) + { + return (object) new Item_11(yyp); + } + + public static object Item_12_factory(Parser yyp) + { + return (object) new Item_12(yyp); + } + + public static object Item_13_factory(Parser yyp) + { + return (object) new Item_13(yyp); + } + + public static object Item_14_factory(Parser yyp) + { + return (object) new Item_14(yyp); + } + + public static object Item_15_factory(Parser yyp) + { + return (object) new Item_15(yyp); + } + + public static object Item_16_factory(Parser yyp) + { + return (object) new Item_16(yyp); + } + + public static object Item_17_factory(Parser yyp) + { + return (object) new Item_17(yyp); + } + + public static object Item_18_factory(Parser yyp) + { + return (object) new Item_18(yyp); + } + + public static object Item_19_factory(Parser yyp) + { + return (object) new Item_19(yyp); + } + + public static object Name_3_factory(Parser yyp) + { + return (object) new Name_3(yyp); + } + + public static object GStuff_1_factory(Parser yyp) + { + return (object) new GStuff_1(yyp); + } + + public static object GStuff_2_factory(Parser yyp) + { + return (object) new GStuff_2(yyp); + } + + public static object GStuff_3_factory(Parser yyp) + { + return (object) new GStuff_3(yyp); + } + + public static object GStuff_4_factory(Parser yyp) + { + return (object) new GStuff_4(yyp); + } + + public static object GStuff_5_factory(Parser yyp) + { + return (object) new GStuff_5(yyp); + } + + public static object GStuff_6_factory(Parser yyp) + { + return (object) new GStuff_6(yyp); + } + + public static object Item_4_1_factory(Parser yyp) + { + return (object) new Item_4_1(yyp); + } + + public static object Cons_2_1_factory(Parser yyp) + { + return (object) new Cons_2_1(yyp); + } + + public static object Item_23_factory(Parser yyp) + { + return (object) new Item_23(yyp); + } + + public static object Item_24_factory(Parser yyp) + { + return (object) new Item_24(yyp); + } + + public static object Call_1_factory(Parser yyp) + { + return (object) new Call_1(yyp); + } + + public static object ClassBody_2_1_factory(Parser yyp) + { + return (object) new ClassBody_2_1(yyp); + } + + public static object Name_4_factory(Parser yyp) + { + return (object) new Name_4(yyp); + } + + public static object Name_2_1_factory(Parser yyp) + { + return (object) new Name_2_1(yyp); + } + + public static object Item_14_1_factory(Parser yyp) + { + return (object) new Item_14_1(yyp); + } + + public static object ClassBody_1_factory(Parser yyp) + { + return (object) new ClassBody_1(yyp); + } + + public static object ClassBody_2_factory(Parser yyp) + { + return (object) new ClassBody_2(yyp); + } + + public static object Item_22_1_factory(Parser yyp) + { + return (object) new Item_22_1(yyp); + } + + public static object GStuff_4_1_factory(Parser yyp) + { + return (object) new GStuff_4_1(yyp); + } + + public static object Name_1_factory(Parser yyp) + { + return (object) new Name_1(yyp); + } + + public static object Name_2_factory(Parser yyp) + { + return (object) new Name_2(yyp); + } + + public static object BaseCall_2_1_factory(Parser yyp) + { + return (object) new BaseCall_2_1(yyp); + } + + public static object Item_8_1_factory(Parser yyp) + { + return (object) new Item_8_1(yyp); + } + + public static object GStuff_2_1_factory(Parser yyp) + { + return (object) new GStuff_2_1(yyp); + } + + public static object Item_2_1_factory(Parser yyp) + { + return (object) new Item_2_1(yyp); + } + } +} diff --git a/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs b/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs new file mode 100644 index 00000000..dd4323ae --- /dev/null +++ b/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs @@ -0,0 +1,9495 @@ +/* + * Copyright (c) 2019-2022, Sjofn LLC + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.co nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using LibreMetaverse.LslTools; + +namespace YYClass +{ + public class yycs0tokens : YyLexer + { + public yycs0tokens(ErrorHandler eh) + : base(eh) + { + this.arr = new int[9345] + { + 101, + 4, + 6, + 52, + 0, + 46, + 0, + 53, + 0, + 6, + 102, + 4, + 16, + 117, + 0, + 115, + 0, + 45, + 0, + 97, + 0, + 115, + 0, + 99, + 0, + 105, + 0, + 105, + 0, + 2, + 0, + 103, + 5, + 27, + 7, + 0, + 104, + 9, + 1, + 0, + 3, + 192, + 0, + 105, + 5, + 27, + 3, + 65, + 0, + 2, + 1, + 3, + 66, + 0, + 2, + 1, + 3, + 67, + 0, + 2, + 1, + 3, + 68, + 0, + 2, + 1, + 3, + 69, + 0, + 2, + 1, + 3, + 70, + 0, + 2, + 1, + 3, + 71, + 0, + 2, + 1, + 3, + 72, + 0, + 2, + 1, + 3, + 73, + 0, + 2, + 1, + 3, + 74, + 0, + 2, + 1, + 3, + 75, + 0, + 2, + 1, + 3, + 76, + 0, + 2, + 1, + 3, + 77, + 0, + 2, + 1, + 3, + 78, + 0, + 2, + 1, + 3, + 79, + 0, + 2, + 1, + 3, + 80, + 0, + 2, + 1, + 3, + 81, + 0, + 2, + 1, + 3, + 82, + 0, + 2, + 1, + 3, + 83, + 0, + 2, + 1, + 3, + 84, + 0, + 2, + 1, + 3, + 85, + 0, + 2, + 1, + 3, + 86, + 0, + 2, + 1, + 3, + 87, + 0, + 2, + 1, + 3, + 88, + 0, + 2, + 1, + 3, + 89, + 0, + 2, + 1, + 3, + 90, + 0, + 2, + 1, + 3, + 192, + 0, + 2, + 1, + 7, + 1, + 106, + 9, + 1, + 1, + 3, + 170, + 0, + 107, + 5, + 27, + 3, + 109, + 0, + 2, + 1, + 3, + 110, + 0, + 2, + 1, + 3, + 111, + 0, + 2, + 1, + 3, + 112, + 0, + 2, + 1, + 3, + 113, + 0, + 2, + 1, + 3, + 114, + 0, + 2, + 1, + 3, + 115, + 0, + 2, + 1, + 3, + 116, + 0, + 2, + 1, + 3, + 117, + 0, + 2, + 1, + 3, + 118, + 0, + 2, + 1, + 3, + 119, + 0, + 2, + 1, + 3, + 120, + 0, + 2, + 1, + 3, + 121, + 0, + 2, + 1, + 3, + 122, + 0, + 2, + 1, + 3, + 170, + 0, + 2, + 1, + 3, + 97, + 0, + 2, + 1, + 3, + 98, + 0, + 2, + 1, + 3, + 99, + 0, + 2, + 1, + 3, + 100, + 0, + 2, + 1, + 3, + 101, + 0, + 2, + 1, + 3, + 102, + 0, + 2, + 1, + 3, + 103, + 0, + 2, + 1, + 3, + 104, + 0, + 2, + 1, + 3, + 105, + 0, + 2, + 1, + 3, + 106, + 0, + 2, + 1, + 3, + 107, + 0, + 2, + 1, + 3, + 108, + 0, + 2, + 1, + 7, + 2, + 108, + 9, + 1, + 2, + 3, + 197, + 1, + 109, + 5, + 1, + 3, + 197, + 1, + 2, + 1, + 7, + 3, + 110, + 9, + 1, + 3, + 3, + 176, + 2, + 111, + 5, + 1, + 3, + 176, + 2, + 2, + 1, + 7, + 4, + 112, + 9, + 1, + 4, + 3, + 187, + 1, + 113, + 5, + 1, + 3, + 187, + 1, + 2, + 1, + 7, + 5, + 114, + 9, + 1, + 5, + 3, + 0, + 3, + 115, + 5, + 1, + 3, + 0, + 3, + 2, + 1, + 7, + 6, + 116, + 9, + 1, + 6, + 3, + 3, + 9, + 117, + 5, + 1, + 3, + 3, + 9, + 2, + 1, + 7, + 7, + 118, + 9, + 1, + 7, + 3, + 136, + 4, + 119, + 5, + 1, + 3, + 136, + 4, + 2, + 1, + 7, + 8, + 120, + 9, + 1, + 8, + 3, + 96, + 6, + 121, + 5, + 11, + 3, + 96, + 6, + 2, + 1, + 3, + 48, + 0, + 2, + 1, + 3, + 49, + 0, + 2, + 1, + 3, + 50, + 0, + 2, + 1, + 3, + 51, + 0, + 2, + 1, + 3, + 52, + 0, + 2, + 1, + 3, + 53, + 0, + 2, + 1, + 3, + 54, + 0, + 2, + 1, + 3, + 55, + 0, + 2, + 1, + 3, + 56, + 0, + 2, + 1, + 3, + 57, + 0, + 2, + 1, + 7, + 9, + 122, + 9, + 1, + 9, + 3, + 96, + 33, + 123, + 5, + 1, + 3, + 96, + 33, + 2, + 1, + 7, + 10, + 124, + 9, + 1, + 10, + 3, + 178, + 0, + 125, + 5, + 1, + 3, + 178, + 0, + 2, + 1, + 7, + 11, + 126, + 9, + 1, + 11, + 3, + 160, + 0, + (int) sbyte.MaxValue, + 5, + 2, + 3, + 160, + 0, + 2, + 1, + 3, + 32, + 0, + 2, + 1, + 7, + 12, + 128, + 9, + 1, + 12, + 3, + 40, + 32, + 129, + 5, + 1, + 3, + 40, + 32, + 2, + 1, + 7, + 13, + 130, + 9, + 1, + 13, + 3, + 41, + 32, + 131, + 5, + 1, + 3, + 41, + 32, + 2, + 1, + 7, + 14, + 132, + 9, + 1, + 14, + 3, + 1, + 0, + 133, + 5, + 5, + 3, + 0, + 0, + 2, + 1, + 3, + 1, + 0, + 2, + 1, + 3, + 13, + 0, + 2, + 1, + 3, + 9, + 0, + 2, + 1, + 3, + 10, + 0, + 2, + 1, + 7, + 15, + 134, + 9, + 1, + 15, + 3, + 15, + 7, + 135, + 5, + 1, + 3, + 15, + 7, + 2, + 1, + 7, + 17, + 136, + 9, + 1, + 17, + 3, + 0, + 224, + 137, + 5, + 1, + 3, + 0, + 224, + 2, + 1, + 7, + 18, + 138, + 9, + 1, + 18, + 3, + 63, + 32, + 139, + 5, + 2, + 3, + 63, + 32, + 2, + 1, + 3, + 95, + 0, + 2, + 1, + 7, + 19, + 140, + 9, + 1, + 19, + 3, + 45, + 0, + 141, + 5, + 1, + 3, + 45, + 0, + 2, + 1, + 7, + 20, + 142, + 9, + 1, + 20, + 3, + 58, + 15, + 143, + 5, + 4, + 3, + 123, + 0, + 2, + 1, + 3, + 91, + 0, + 2, + 1, + 3, + 58, + 15, + 2, + 1, + 3, + 40, + 0, + 2, + 1, + 7, + 21, + 144, + 9, + 1, + 21, + 3, + 59, + 15, + 145, + 5, + 4, + 3, + 59, + 15, + 2, + 1, + 3, + 125, + 0, + 2, + 1, + 3, + 93, + 0, + 2, + 1, + 3, + 41, + 0, + 2, + 1, + 7, + 22, + 146, + 9, + 1, + 22, + 3, + 171, + 0, + 147, + 5, + 1, + 3, + 171, + 0, + 2, + 1, + 7, + 23, + 148, + 9, + 1, + 23, + 3, + 187, + 0, + 149, + 5, + 1, + 3, + 187, + 0, + 2, + 1, + 7, + 24, + 150, + 9, + 1, + 24, + 3, + 33, + 0, + 151, + 5, + 5, + 3, + 33, + 0, + 2, + 1, + 3, + 34, + 0, + 2, + 1, + 3, + 58, + 0, + 2, + 1, + 3, + 59, + 0, + 2, + 1, + 3, + 39, + 0, + 2, + 1, + 7, + 25, + 152, + 9, + 1, + 25, + 3, + 43, + 0, + 153, + 5, + 1, + 3, + 43, + 0, + 2, + 1, + 7, + 26, + 154, + 9, + 1, + 26, + 3, + 36, + 0, + 155, + 5, + 1, + 3, + 36, + 0, + 2, + 1, + 7, + 27, + 156, + 9, + 1, + 27, + 3, + 94, + 0, + 157, + 5, + 1, + 3, + 94, + 0, + 2, + 1, + 7, + 27, + 2, + 0, + 158, + 5, + 1, + 159, + 4, + 18, + 89, + 0, + 89, + 0, + 73, + 0, + 78, + 0, + 73, + 0, + 84, + 0, + 73, + 0, + 65, + 0, + 76, + 0, + 160, + 12, + 1, + 259, + 161, + 5, + 104, + 3, + 1, + 0, + 162, + 12, + 1, + 496, + 163, + 5, + 0, + 164, + 11, + 1, + 256, + 0, + 165, + 4, + 6, + 65, + 0, + 78, + 0, + 89, + 0, + 1, + -1, + 3, + 9, + 0, + 166, + 12, + 1, + 2749, + 167, + 5, + 0, + 168, + 11, + 1, + 2, + 169, + 11, + 1, + 256, + 0, + 165, + 1, + -1, + 3, + 10, + 0, + 170, + 12, + 1, + 2861, + 171, + 5, + 0, + 172, + 11, + 1, + 2, + 0, + 173, + 4, + 0, + 1, + -1, + 3, + 13, + 0, + 166, + 3, + 0, + 3, + 162, + 3, + 96, + 33, + 162, + 3, + 32, + 0, + 166, + 3, + 33, + 0, + 162, + 3, + 34, + 0, + 174, + 12, + 1, + 3613, + 175, + 5, + 104, + 3, + 1, + 0, + 176, + 12, + 1, + 3614, + 177, + 5, + 104, + 3, + 1, + 0, + 176, + 3, + 9, + 0, + 176, + 3, + 10, + 0, + 176, + 3, + 13, + 0, + 176, + 3, + 0, + 3, + 176, + 3, + 96, + 33, + 176, + 3, + 32, + 0, + 176, + 3, + 33, + 0, + 176, + 3, + 34, + 0, + 178, + 12, + 1, + 3713, + 179, + 5, + 0, + 180, + 11, + 1, + 196, + 0, + 165, + 1, + -1, + 3, + 36, + 0, + 176, + 3, + 39, + 0, + 176, + 3, + 40, + 0, + 176, + 3, + 41, + 0, + 176, + 3, + 43, + 0, + 176, + 3, + 45, + 0, + 176, + 3, + 3, + 9, + 176, + 3, + 49, + 0, + 176, + 3, + 50, + 0, + 176, + 3, + 48, + 0, + 176, + 3, + 52, + 0, + 176, + 3, + 53, + 0, + 176, + 3, + 51, + 0, + 176, + 3, + 55, + 0, + 176, + 3, + 56, + 0, + 176, + 3, + 54, + 0, + 176, + 3, + 58, + 0, + 176, + 3, + 59, + 0, + 176, + 3, + 57, + 0, + 176, + 3, + 65, + 0, + 176, + 3, + 66, + 0, + 176, + 3, + 67, + 0, + 176, + 3, + 68, + 0, + 176, + 3, + 69, + 0, + 176, + 3, + 70, + 0, + 176, + 3, + 71, + 0, + 176, + 3, + 72, + 0, + 176, + 3, + 73, + 0, + 176, + 3, + 74, + 0, + 176, + 3, + 75, + 0, + 176, + 3, + 76, + 0, + 176, + 3, + 77, + 0, + 176, + 3, + 78, + 0, + 176, + 3, + 79, + 0, + 176, + 3, + 80, + 0, + 176, + 3, + 81, + 0, + 176, + 3, + 82, + 0, + 176, + 3, + 83, + 0, + 176, + 3, + 84, + 0, + 176, + 3, + 85, + 0, + 176, + 3, + 86, + 0, + 176, + 3, + 87, + 0, + 176, + 3, + 88, + 0, + 176, + 3, + 89, + 0, + 176, + 3, + 90, + 0, + 176, + 3, + 91, + 0, + 176, + 3, + 93, + 0, + 176, + 3, + 94, + 0, + 176, + 3, + 95, + 0, + 176, + 3, + 97, + 0, + 176, + 3, + 98, + 0, + 176, + 3, + 99, + 0, + 176, + 3, + 100, + 0, + 176, + 3, + 101, + 0, + 176, + 3, + 102, + 0, + 176, + 3, + 103, + 0, + 176, + 3, + 104, + 0, + 176, + 3, + 105, + 0, + 176, + 3, + 106, + 0, + 176, + 3, + 107, + 0, + 176, + 3, + 108, + 0, + 176, + 3, + 109, + 0, + 176, + 3, + 110, + 0, + 176, + 3, + 111, + 0, + 176, + 3, + 112, + 0, + 176, + 3, + 113, + 0, + 176, + 3, + 114, + 0, + 176, + 3, + 115, + 0, + 176, + 3, + 116, + 0, + 176, + 3, + 117, + 0, + 176, + 3, + 118, + 0, + 176, + 3, + 119, + 0, + 176, + 3, + 120, + 0, + 176, + 3, + 121, + 0, + 176, + 3, + 122, + 0, + 176, + 3, + 123, + 0, + 176, + 3, + 125, + 0, + 176, + 3, + 96, + 6, + 176, + 3, + 58, + 15, + 176, + 3, + 59, + 15, + 176, + 3, + 136, + 4, + 176, + 3, + 160, + 0, + 176, + 3, + 15, + 7, + 176, + 3, + 170, + 0, + 176, + 3, + 171, + 0, + 176, + 3, + 178, + 0, + 176, + 3, + 176, + 2, + 176, + 3, + 187, + 0, + 176, + 3, + 187, + 1, + 176, + 3, + 192, + 0, + 176, + 3, + 41, + 32, + 176, + 3, + 197, + 1, + 176, + 3, + 0, + 224, + 176, + 3, + 40, + 32, + 176, + 3, + 63, + 32, + 176, + 0, + 173, + 1, + -1, + 3, + 9, + 0, + 176, + 3, + 10, + 0, + 176, + 3, + 13, + 0, + 176, + 3, + 0, + 3, + 176, + 3, + 96, + 33, + 176, + 3, + 32, + 0, + 176, + 3, + 33, + 0, + 176, + 3, + 34, + 0, + 178, + 3, + 36, + 0, + 176, + 3, + 39, + 0, + 176, + 3, + 40, + 0, + 176, + 3, + 41, + 0, + 176, + 3, + 43, + 0, + 176, + 3, + 45, + 0, + 176, + 3, + 3, + 9, + 176, + 3, + 49, + 0, + 176, + 3, + 50, + 0, + 176, + 3, + 48, + 0, + 176, + 3, + 52, + 0, + 176, + 3, + 53, + 0, + 176, + 3, + 51, + 0, + 176, + 3, + 55, + 0, + 176, + 3, + 56, + 0, + 176, + 3, + 54, + 0, + 176, + 3, + 58, + 0, + 176, + 3, + 59, + 0, + 176, + 3, + 57, + 0, + 176, + 3, + 65, + 0, + 176, + 3, + 66, + 0, + 176, + 3, + 67, + 0, + 176, + 3, + 68, + 0, + 176, + 3, + 69, + 0, + 176, + 3, + 70, + 0, + 176, + 3, + 71, + 0, + 176, + 3, + 72, + 0, + 176, + 3, + 73, + 0, + 176, + 3, + 74, + 0, + 176, + 3, + 75, + 0, + 176, + 3, + 76, + 0, + 176, + 3, + 77, + 0, + 176, + 3, + 78, + 0, + 176, + 3, + 79, + 0, + 176, + 3, + 80, + 0, + 176, + 3, + 81, + 0, + 176, + 3, + 82, + 0, + 176, + 3, + 83, + 0, + 176, + 3, + 84, + 0, + 176, + 3, + 85, + 0, + 176, + 3, + 86, + 0, + 176, + 3, + 87, + 0, + 176, + 3, + 88, + 0, + 176, + 3, + 89, + 0, + 176, + 3, + 90, + 0, + 176, + 3, + 91, + 0, + 176, + 3, + 93, + 0, + 176, + 3, + 94, + 0, + 176, + 3, + 95, + 0, + 176, + 3, + 97, + 0, + 176, + 3, + 98, + 0, + 176, + 3, + 99, + 0, + 176, + 3, + 100, + 0, + 176, + 3, + 101, + 0, + 176, + 3, + 102, + 0, + 176, + 3, + 103, + 0, + 176, + 3, + 104, + 0, + 176, + 3, + 105, + 0, + 176, + 3, + 106, + 0, + 176, + 3, + 107, + 0, + 176, + 3, + 108, + 0, + 176, + 3, + 109, + 0, + 176, + 3, + 110, + 0, + 176, + 3, + 111, + 0, + 176, + 3, + 112, + 0, + 176, + 3, + 113, + 0, + 176, + 3, + 114, + 0, + 176, + 3, + 115, + 0, + 176, + 3, + 116, + 0, + 176, + 3, + 117, + 0, + 176, + 3, + 118, + 0, + 176, + 3, + 119, + 0, + 176, + 3, + 120, + 0, + 176, + 3, + 121, + 0, + 176, + 3, + 122, + 0, + 176, + 3, + 123, + 0, + 176, + 3, + 125, + 0, + 176, + 3, + 96, + 6, + 176, + 3, + 58, + 15, + 176, + 3, + 59, + 15, + 176, + 3, + 136, + 4, + 176, + 3, + 160, + 0, + 176, + 3, + 15, + 7, + 176, + 3, + 170, + 0, + 176, + 3, + 171, + 0, + 176, + 3, + 178, + 0, + 176, + 3, + 176, + 2, + 176, + 3, + 187, + 0, + 176, + 3, + 187, + 1, + 176, + 3, + 192, + 0, + 176, + 3, + 41, + 32, + 176, + 3, + 197, + 1, + 176, + 3, + 0, + 224, + 176, + 3, + 40, + 32, + 176, + 3, + 63, + 32, + 176, + 181, + 11, + 1, + 256, + 0, + 165, + 1, + -1, + 3, + 36, + 0, + 162, + 3, + 39, + 0, + 182, + 12, + 1, + 4141, + 183, + 5, + 104, + 3, + 1, + 0, + 184, + 12, + 1, + 4142, + 185, + 5, + 104, + 3, + 1, + 0, + 184, + 3, + 9, + 0, + 184, + 3, + 10, + 0, + 184, + 3, + 13, + 0, + 184, + 3, + 0, + 3, + 184, + 3, + 96, + 33, + 184, + 3, + 32, + 0, + 184, + 3, + 33, + 0, + 184, + 3, + 34, + 0, + 184, + 3, + 36, + 0, + 184, + 3, + 39, + 0, + 186, + 12, + 1, + 4244, + 187, + 5, + 0, + 188, + 11, + 1, + 176, + 0, + 165, + 1, + -1, + 3, + 40, + 0, + 184, + 3, + 41, + 0, + 184, + 3, + 43, + 0, + 184, + 3, + 45, + 0, + 184, + 3, + 3, + 9, + 184, + 3, + 49, + 0, + 184, + 3, + 50, + 0, + 184, + 3, + 48, + 0, + 184, + 3, + 52, + 0, + 184, + 3, + 53, + 0, + 184, + 3, + 51, + 0, + 184, + 3, + 55, + 0, + 184, + 3, + 56, + 0, + 184, + 3, + 54, + 0, + 184, + 3, + 58, + 0, + 184, + 3, + 59, + 0, + 184, + 3, + 57, + 0, + 184, + 3, + 65, + 0, + 184, + 3, + 66, + 0, + 184, + 3, + 67, + 0, + 184, + 3, + 68, + 0, + 184, + 3, + 69, + 0, + 184, + 3, + 70, + 0, + 184, + 3, + 71, + 0, + 184, + 3, + 72, + 0, + 184, + 3, + 73, + 0, + 184, + 3, + 74, + 0, + 184, + 3, + 75, + 0, + 184, + 3, + 76, + 0, + 184, + 3, + 77, + 0, + 184, + 3, + 78, + 0, + 184, + 3, + 79, + 0, + 184, + 3, + 80, + 0, + 184, + 3, + 81, + 0, + 184, + 3, + 82, + 0, + 184, + 3, + 83, + 0, + 184, + 3, + 84, + 0, + 184, + 3, + 85, + 0, + 184, + 3, + 86, + 0, + 184, + 3, + 87, + 0, + 184, + 3, + 88, + 0, + 184, + 3, + 89, + 0, + 184, + 3, + 90, + 0, + 184, + 3, + 91, + 0, + 184, + 3, + 93, + 0, + 184, + 3, + 94, + 0, + 184, + 3, + 95, + 0, + 184, + 3, + 97, + 0, + 184, + 3, + 98, + 0, + 184, + 3, + 99, + 0, + 184, + 3, + 100, + 0, + 184, + 3, + 101, + 0, + 184, + 3, + 102, + 0, + 184, + 3, + 103, + 0, + 184, + 3, + 104, + 0, + 184, + 3, + 105, + 0, + 184, + 3, + 106, + 0, + 184, + 3, + 107, + 0, + 184, + 3, + 108, + 0, + 184, + 3, + 109, + 0, + 184, + 3, + 110, + 0, + 184, + 3, + 111, + 0, + 184, + 3, + 112, + 0, + 184, + 3, + 113, + 0, + 184, + 3, + 114, + 0, + 184, + 3, + 115, + 0, + 184, + 3, + 116, + 0, + 184, + 3, + 117, + 0, + 184, + 3, + 118, + 0, + 184, + 3, + 119, + 0, + 184, + 3, + 120, + 0, + 184, + 3, + 121, + 0, + 184, + 3, + 122, + 0, + 184, + 3, + 123, + 0, + 184, + 3, + 125, + 0, + 184, + 3, + 96, + 6, + 184, + 3, + 58, + 15, + 184, + 3, + 59, + 15, + 184, + 3, + 136, + 4, + 184, + 3, + 160, + 0, + 184, + 3, + 15, + 7, + 184, + 3, + 170, + 0, + 184, + 3, + 171, + 0, + 184, + 3, + 178, + 0, + 184, + 3, + 176, + 2, + 184, + 3, + 187, + 0, + 184, + 3, + 187, + 1, + 184, + 3, + 192, + 0, + 184, + 3, + 41, + 32, + 184, + 3, + 197, + 1, + 184, + 3, + 0, + 224, + 184, + 3, + 40, + 32, + 184, + 3, + 63, + 32, + 184, + 0, + 173, + 1, + -1, + 3, + 9, + 0, + 184, + 3, + 10, + 0, + 184, + 3, + 13, + 0, + 184, + 3, + 0, + 3, + 184, + 3, + 96, + 33, + 184, + 3, + 32, + 0, + 184, + 3, + 33, + 0, + 184, + 3, + 34, + 0, + 184, + 3, + 36, + 0, + 184, + 3, + 39, + 0, + 186, + 3, + 40, + 0, + 184, + 3, + 41, + 0, + 184, + 3, + 43, + 0, + 184, + 3, + 45, + 0, + 184, + 3, + 3, + 9, + 184, + 3, + 49, + 0, + 184, + 3, + 50, + 0, + 184, + 3, + 48, + 0, + 184, + 3, + 52, + 0, + 184, + 3, + 53, + 0, + 184, + 3, + 51, + 0, + 184, + 3, + 55, + 0, + 184, + 3, + 56, + 0, + 184, + 3, + 54, + 0, + 184, + 3, + 58, + 0, + 184, + 3, + 59, + 0, + 184, + 3, + 57, + 0, + 184, + 3, + 65, + 0, + 184, + 3, + 66, + 0, + 184, + 3, + 67, + 0, + 184, + 3, + 68, + 0, + 184, + 3, + 69, + 0, + 184, + 3, + 70, + 0, + 184, + 3, + 71, + 0, + 184, + 3, + 72, + 0, + 184, + 3, + 73, + 0, + 184, + 3, + 74, + 0, + 184, + 3, + 75, + 0, + 184, + 3, + 76, + 0, + 184, + 3, + 77, + 0, + 184, + 3, + 78, + 0, + 184, + 3, + 79, + 0, + 184, + 3, + 80, + 0, + 184, + 3, + 81, + 0, + 184, + 3, + 82, + 0, + 184, + 3, + 83, + 0, + 184, + 3, + 84, + 0, + 184, + 3, + 85, + 0, + 184, + 3, + 86, + 0, + 184, + 3, + 87, + 0, + 184, + 3, + 88, + 0, + 184, + 3, + 89, + 0, + 184, + 3, + 90, + 0, + 184, + 3, + 91, + 0, + 184, + 3, + 93, + 0, + 184, + 3, + 94, + 0, + 184, + 3, + 95, + 0, + 184, + 3, + 97, + 0, + 184, + 3, + 98, + 0, + 184, + 3, + 99, + 0, + 184, + 3, + 100, + 0, + 184, + 3, + 101, + 0, + 184, + 3, + 102, + 0, + 184, + 3, + 103, + 0, + 184, + 3, + 104, + 0, + 184, + 3, + 105, + 0, + 184, + 3, + 106, + 0, + 184, + 3, + 107, + 0, + 184, + 3, + 108, + 0, + 184, + 3, + 109, + 0, + 184, + 3, + 110, + 0, + 184, + 3, + 111, + 0, + 184, + 3, + 112, + 0, + 184, + 3, + 113, + 0, + 184, + 3, + 114, + 0, + 184, + 3, + 115, + 0, + 184, + 3, + 116, + 0, + 184, + 3, + 117, + 0, + 184, + 3, + 118, + 0, + 184, + 3, + 119, + 0, + 184, + 3, + 120, + 0, + 184, + 3, + 121, + 0, + 184, + 3, + 122, + 0, + 184, + 3, + 123, + 0, + 184, + 3, + 125, + 0, + 184, + 3, + 96, + 6, + 184, + 3, + 58, + 15, + 184, + 3, + 59, + 15, + 184, + 3, + 136, + 4, + 184, + 3, + 160, + 0, + 184, + 3, + 15, + 7, + 184, + 3, + 170, + 0, + 184, + 3, + 171, + 0, + 184, + 3, + 178, + 0, + 184, + 3, + 176, + 2, + 184, + 3, + 187, + 0, + 184, + 3, + 187, + 1, + 184, + 3, + 192, + 0, + 184, + 3, + 41, + 32, + 184, + 3, + 197, + 1, + 184, + 3, + 0, + 224, + 184, + 3, + 40, + 32, + 184, + 3, + 63, + 32, + 184, + 189, + 11, + 1, + 256, + 0, + 165, + 1, + -1, + 3, + 40, + 0, + 190, + 12, + 1, + 3185, + 191, + 5, + 0, + 192, + 11, + 1, + 236, + 0, + 193, + 4, + 12, + 76, + 0, + 80, + 0, + 65, + 0, + 82, + 0, + 69, + 0, + 78, + 0, + 1, + -1, + 3, + 41, + 0, + 194, + 12, + 1, + 3504, + 195, + 5, + 0, + 196, + 11, + 1, + 241, + 0, + 197, + 4, + 12, + 82, + 0, + 80, + 0, + 65, + 0, + 82, + 0, + 69, + 0, + 78, + 0, + 1, + -1, + 3, + 43, + 0, + 162, + 3, + 45, + 0, + 162, + 3, + 3, + 9, + 162, + 3, + 49, + 0, + 162, + 3, + 50, + 0, + 162, + 3, + 48, + 0, + 162, + 3, + 52, + 0, + 162, + 3, + 53, + 0, + 162, + 3, + 51, + 0, + 162, + 3, + 55, + 0, + 162, + 3, + 56, + 0, + 162, + 3, + 54, + 0, + 162, + 3, + 58, + 0, + 198, + 12, + 1, + 3929, + 199, + 5, + 0, + 200, + 11, + 1, + 216, + 0, + 201, + 4, + 10, + 67, + 0, + 79, + 0, + 76, + 0, + 79, + 0, + 78, + 0, + 1, + -1, + 3, + 59, + 0, + 202, + 12, + 1, + 4035, + 203, + 5, + 0, + 204, + 11, + 1, + 221, + 0, + 205, + 4, + 18, + 83, + 0, + 69, + 0, + 77, + 0, + 73, + 0, + 67, + 0, + 79, + 0, + 76, + 0, + 79, + 0, + 78, + 0, + 1, + -1, + 3, + 57, + 0, + 162, + 3, + 65, + 0, + 206, + 12, + 1, + 260, + 207, + 5, + 63, + 3, + 109, + 0, + 208, + 12, + 1, + 261, + 209, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 210, + 11, + 1, + 164, + 0, + 211, + 4, + 4, + 73, + 0, + 68, + 0, + 1, + -1, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 212, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 66, + 0, + 206, + 3, + 67, + 0, + 206, + 3, + 68, + 0, + 206, + 3, + 69, + 0, + 206, + 3, + 70, + 0, + 206, + 3, + 71, + 0, + 206, + 3, + 72, + 0, + 206, + 3, + 73, + 0, + 206, + 3, + 74, + 0, + 206, + 3, + 75, + 0, + 206, + 3, + 76, + 0, + 206, + 3, + 77, + 0, + 206, + 3, + 78, + 0, + 206, + 3, + 79, + 0, + 206, + 3, + 80, + 0, + 206, + 3, + 81, + 0, + 206, + 3, + 82, + 0, + 206, + 3, + 83, + 0, + 206, + 3, + 84, + 0, + 206, + 3, + 85, + 0, + 206, + 3, + 86, + 0, + 206, + 3, + 87, + 0, + 206, + 3, + 88, + 0, + 206, + 3, + 89, + 0, + 206, + 3, + 90, + 0, + 206, + 3, + 91, + 0, + 213, + 12, + 1, + 3078, + 214, + 5, + 0, + 215, + 11, + 1, + 246, + 0, + 216, + 4, + 12, + 76, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 75, + 0, + 1, + -1, + 3, + 93, + 0, + 217, + 12, + 1, + 3398, + 218, + 5, + 0, + 219, + 11, + 1, + 251, + 0, + 220, + 4, + 12, + 82, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 75, + 0, + 1, + -1, + 3, + 94, + 0, + 162, + 3, + 95, + 0, + 206, + 3, + 97, + 0, + 206, + 3, + 98, + 0, + 221, + 12, + 1, + 2298, + 222, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 223, + 12, + 1, + 2341, + 224, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 225, + 12, + 1, + 2375, + 226, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 227, + 12, + 1, + 2422, + 228, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 229, + 11, + 1, + 93, + 0, + 230, + 4, + 8, + 66, + 0, + 65, + 0, + 83, + 0, + 69, + 0, + 1, + -1, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 231, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 232, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 233, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 99, + 0, + 206, + 3, + 100, + 0, + 206, + 3, + 101, + 0, + 206, + 3, + 102, + 0, + 206, + 3, + 103, + 0, + 206, + 3, + 104, + 0, + 206, + 3, + 105, + 0, + 206, + 3, + 106, + 0, + 206, + 3, + 107, + 0, + 206, + 3, + 108, + 0, + 206, + 3, + 109, + 0, + 206, + 3, + 110, + 0, + 234, + 12, + 1, + 603, + 235, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 236, + 12, + 1, + 650, + 237, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 238, + 12, + 1, + 688, + 239, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 240, + 11, + 1, + 145, + 0, + 241, + 4, + 6, + 78, + 0, + 69, + 0, + 87, + 0, + 1, + -1, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 242, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 243, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 111, + 0, + 206, + 3, + 112, + 0, + 206, + 3, + 113, + 0, + 206, + 3, + 114, + 0, + 206, + 3, + 115, + 0, + 206, + 3, + 116, + 0, + 244, + 12, + 1, + 924, + 245, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 246, + 12, + 1, + 974, + 247, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 248, + 12, + 1, + 1025, + 249, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 250, + 12, + 1, + 1059, + 251, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 252, + 11, + 1, + 119, + 0, + 253, + 4, + 8, + 84, + 0, + 72, + 0, + 73, + 0, + 83, + 0, + 1, + -1, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 254, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + (int) byte.MaxValue, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 256, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 117, + 0, + 206, + 3, + 118, + 0, + 206, + 3, + 119, + 0, + 206, + 3, + 120, + 0, + 206, + 3, + 121, + 0, + 257, + 12, + 1, + 1349, + 258, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 259, + 12, + 1, + 1389, + 260, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 261, + 12, + 1, + 1420, + 262, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 263, + 11, + 1, + 74, + 264, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 265, + 12, + 1, + 1538, + 266, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 267, + 12, + 1, + 1585, + 268, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 269, + 12, + 1, + 1634, + 270, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 271, + 12, + 1, + 1685, + 272, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 273, + 12, + 1, + 1714, + 274, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 275, + 11, + 1, + 8, + 276, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 277, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 278, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 279, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 280, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 281, + 12, + 1, + 2073, + 282, + 5, + 63, + 3, + 109, + 0, + 208, + 3, + 110, + 0, + 208, + 3, + 111, + 0, + 208, + 3, + 112, + 0, + 208, + 3, + 113, + 0, + 208, + 3, + 114, + 0, + 208, + 3, + 115, + 0, + 208, + 3, + 116, + 0, + 208, + 3, + 117, + 0, + 208, + 3, + 118, + 0, + 208, + 3, + 119, + 0, + 208, + 3, + 120, + 0, + 208, + 3, + 121, + 0, + 208, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 283, + 11, + 1, + 55, + 284, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 285, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 122, + 0, + 208, + 3, + 48, + 0, + 208, + 3, + 49, + 0, + 208, + 3, + 50, + 0, + 208, + 3, + 51, + 0, + 208, + 3, + 52, + 0, + 208, + 3, + 53, + 0, + 208, + 3, + 54, + 0, + 208, + 3, + 55, + 0, + 208, + 3, + 56, + 0, + 208, + 3, + 57, + 0, + 208, + 3, + 65, + 0, + 208, + 3, + 66, + 0, + 208, + 3, + 67, + 0, + 208, + 3, + 68, + 0, + 208, + 3, + 69, + 0, + 208, + 3, + 70, + 0, + 208, + 3, + 71, + 0, + 208, + 3, + 72, + 0, + 208, + 3, + 73, + 0, + 208, + 3, + 74, + 0, + 208, + 3, + 75, + 0, + 208, + 3, + 76, + 0, + 208, + 3, + 77, + 0, + 208, + 3, + 78, + 0, + 208, + 3, + 79, + 0, + 208, + 3, + 80, + 0, + 208, + 3, + 81, + 0, + 208, + 3, + 82, + 0, + 208, + 3, + 83, + 0, + 208, + 3, + 84, + 0, + 208, + 3, + 85, + 0, + 208, + 3, + 86, + 0, + 208, + 3, + 87, + 0, + 208, + 3, + 88, + 0, + 208, + 3, + 89, + 0, + 208, + 3, + 90, + 0, + 208, + 3, + 95, + 0, + 208, + 3, + 97, + 0, + 208, + 3, + 98, + 0, + 208, + 3, + 99, + 0, + 208, + 3, + 100, + 0, + 208, + 3, + 101, + 0, + 208, + 3, + 102, + 0, + 208, + 3, + 103, + 0, + 208, + 3, + 104, + 0, + 208, + 3, + 105, + 0, + 208, + 3, + 106, + 0, + 208, + 3, + 107, + 0, + 208, + 3, + 108, + 0, + 208, + 286, + 11, + 1, + 164, + 0, + 211, + 1, + -1, + 3, + 122, + 0, + 206, + 3, + 123, + 0, + 287, + 12, + 1, + 2972, + 288, + 5, + 0, + 289, + 11, + 1, + 226, + 0, + 290, + 4, + 12, + 76, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 69, + 0, + 1, + -1, + 3, + 125, + 0, + 291, + 12, + 1, + 3292, + 292, + 5, + 0, + 293, + 11, + 1, + 231, + 0, + 294, + 4, + 12, + 82, + 0, + 66, + 0, + 82, + 0, + 65, + 0, + 67, + 0, + 69, + 0, + 1, + -1, + 3, + 96, + 6, + 162, + 3, + 58, + 15, + 162, + 3, + 59, + 15, + 162, + 3, + 136, + 4, + 162, + 3, + 160, + 0, + 162, + 3, + 15, + 7, + 162, + 3, + 170, + 0, + 162, + 3, + 171, + 0, + 162, + 3, + 178, + 0, + 162, + 3, + 176, + 2, + 162, + 3, + 187, + 0, + 162, + 3, + 187, + 1, + 162, + 3, + 192, + 0, + 162, + 3, + 41, + 32, + 162, + 3, + 197, + 1, + 162, + 3, + 0, + 224, + 162, + 3, + 40, + 32, + 162, + 3, + 63, + 32, + 162, + 0, + 173, + 1, + -1, + 295, + 5, + 13, + 165, + 296, + 10, + 165, + 1, + 7, + 241, + 297, + 10, + 241, + 1, + 5, + 253, + 298, + 10, + 253, + 1, + 4, + 211, + 299, + 10, + 211, + 1, + 6, + 230, + 300, + 10, + 230, + 1, + 3, + 290, + 301, + 10, + 290, + 1, + 10, + 294, + 302, + 10, + 294, + 1, + 11, + 193, + 303, + 10, + 193, + 1, + 12, + 205, + 304, + 10, + 205, + 1, + 9, + 216, + 305, + 10, + 216, + 1, + 14, + 220, + 306, + 10, + 220, + 1, + 15, + 201, + 307, + 10, + 201, + 1, + 8, + 197, + 308, + 10, + 197, + 1, + 13, + 309, + 5, + 0, + 0 + }; + Tfactory tfactory1 = new Tfactory((YyLexer) this, "ANY", new TCreator(yycs0tokens.ANY_factory)); + Tfactory tfactory2 = new Tfactory((YyLexer) this, "NEW", new TCreator(yycs0tokens.NEW_factory)); + Tfactory tfactory3 = new Tfactory((YyLexer) this, "THIS", new TCreator(yycs0tokens.THIS_factory)); + Tfactory tfactory4 = new Tfactory((YyLexer) this, "ID", new TCreator(yycs0tokens.ID_factory)); + Tfactory tfactory5 = new Tfactory((YyLexer) this, "BASE", new TCreator(yycs0tokens.BASE_factory)); + Tfactory tfactory6 = new Tfactory((YyLexer) this, "LBRACE", new TCreator(yycs0tokens.LBRACE_factory)); + Tfactory tfactory7 = new Tfactory((YyLexer) this, "RBRACE", new TCreator(yycs0tokens.RBRACE_factory)); + Tfactory tfactory8 = new Tfactory((YyLexer) this, "LPAREN", new TCreator(yycs0tokens.LPAREN_factory)); + Tfactory tfactory9 = new Tfactory((YyLexer) this, "SEMICOLON", new TCreator(yycs0tokens.SEMICOLON_factory)); + Tfactory tfactory10 = new Tfactory((YyLexer) this, "LBRACK", new TCreator(yycs0tokens.LBRACK_factory)); + Tfactory tfactory11 = new Tfactory((YyLexer) this, "RBRACK", new TCreator(yycs0tokens.RBRACK_factory)); + Tfactory tfactory12 = new Tfactory((YyLexer) this, "COLON", new TCreator(yycs0tokens.COLON_factory)); + Tfactory tfactory13 = new Tfactory((YyLexer) this, "RPAREN", new TCreator(yycs0tokens.RPAREN_factory)); + } + + public static object ANY_factory(Lexer yyl) + { + return (object) new ANY(yyl); + } + + public static object NEW_factory(Lexer yyl) + { + return (object) new NEW(yyl); + } + + public static object THIS_factory(Lexer yyl) + { + return (object) new THIS(yyl); + } + + public static object ID_factory(Lexer yyl) + { + return (object) new ID(yyl); + } + + public static object BASE_factory(Lexer yyl) + { + return (object) new BASE(yyl); + } + + public static object LBRACE_factory(Lexer yyl) + { + return (object) new LBRACE(yyl); + } + + public static object RBRACE_factory(Lexer yyl) + { + return (object) new RBRACE(yyl); + } + + public static object LPAREN_factory(Lexer yyl) + { + return (object) new LPAREN(yyl); + } + + public static object SEMICOLON_factory(Lexer yyl) + { + return (object) new SEMICOLON(yyl); + } + + public static object LBRACK_factory(Lexer yyl) + { + return (object) new LBRACK(yyl); + } + + public static object RBRACK_factory(Lexer yyl) + { + return (object) new RBRACK(yyl); + } + + public static object COLON_factory(Lexer yyl) + { + return (object) new COLON(yyl); + } + + public static object RPAREN_factory(Lexer yyl) + { + return (object) new RPAREN(yyl); + } + + public override TOKEN OldAction( + Lexer yym, + ref string yytext, + int action, + ref bool reject) + { + int num = action; + switch (num + 1) + { + case 0: + case 3: +label_5: + return (TOKEN) null; + default: + switch (num) + { + case 8: + yytext = "yym.yy_begin"; + return (TOKEN) new ANY(yym); + case 55: + yytext = "((" + ((cs0tokens) yym).Out + ")yym)"; + return (TOKEN) new ANY(yym); + case 74: + yytext = "((" + ((cs0tokens) yym).Out + ")yyq)"; + return (TOKEN) new ANY(yym); + default: + goto label_5; + } + } + } + } +} diff --git a/LibreMetaverse.sln b/LibreMetaverse.sln index 158da8bd..d6e7946e 100644 --- a/LibreMetaverse.sln +++ b/LibreMetaverse.sln @@ -54,6 +54,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GridAccountant", "Programs\ {27C70F3A-0000-0000-0000-000000000000} = {27C70F3A-0000-0000-0000-000000000000} EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.LslTools", "LibreMetaverse.LslTools\LibreMetaverse.LslTools.csproj", "{989E5E15-D99B-4CF1-AF64-90C568FC979A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -262,6 +264,18 @@ Global {6DE58F9A-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x64 {6DE58F9A-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64 {6DE58F9A-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.ActiveCfg = Debug|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.Build.0 = Debug|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.ActiveCfg = Debug|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.Build.0 = Debug|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.ActiveCfg = Release|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.Build.0 = Release|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.ActiveCfg = Release|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.Build.0 = Release|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.ActiveCfg = Release|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.Build.0 = Release|x64 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.ActiveCfg = Release|x86 + {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE