/** * Tests a simple grammar loop. */ public void TestSimpleGrammarLoop() { Parser parser = CreateParser(); pattern = new ProductionPattern(P1, "P1"); alt = new ProductionPatternAlternative(); alt.AddProduction(P2, 1, 1); AddAlternative(pattern, alt); AddPattern(parser, pattern); pattern = new ProductionPattern(P2, "P2"); alt = new ProductionPatternAlternative(); alt.AddProduction(P1, 1, 1); AddAlternative(pattern, alt); AddPattern(parser, pattern); FailPrepareParser(parser); }
/** * Tests a resolvable production conflict in the tail of a * production alternative. */ public void TestResolvableElementTailConflict() { Parser parser = CreateParser(); pattern = new ProductionPattern(P1, "P1"); alt = new ProductionPatternAlternative(); alt.AddProduction(P2, 1, 1); alt.AddToken(T2, 1, 1); AddAlternative(pattern, alt); AddPattern(parser, pattern); pattern = new ProductionPattern(P2, "P2"); alt = new ProductionPatternAlternative(); alt.AddToken(T1, 1, 1); alt.AddToken(T2, 0, 1); AddAlternative(pattern, alt); AddPattern(parser, pattern); PrepareParser(parser); }
private static ProductionPattern GetLogicalOptionsPattern() { var pattern = new ProductionPattern((int)FormulaConstants.LOGICAL_OP, "LogicalOp"); var alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.EQ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.GT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.LT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.GTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.LTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)FormulaConstants.NE, 1, 1); pattern.AddAlternative(alt); return(pattern); }
private void CreatePatterns() { ProductionPattern pattern = default(ProductionPattern); ProductionPatternAlternative alt = default(ProductionPatternAlternative); pattern = new ProductionPattern((int)ExpressionConstants.EXPRESSION, "Expression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.OR_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.OR_EXPRESSION, "OrExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.AND_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.AND_EXPRESSION, "AndExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.NOT_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.NOT_EXPRESSION, "NotExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.NOT, 0, 1); alt.AddProduction((int)ExpressionConstants.BETWEEN_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.BETWEEN_EXPRESSION, "BetweenExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.IN_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.IN_EXPRESSION, "InExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.COMPARE_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.IN_TARGET_EXPRESSION, "InTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.IN_LIST_TARGET_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.IN_LIST_TARGET_EXPRESSION, "InListTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)ExpressionConstants.ARGUMENT_LIST, 1, 1); alt.AddToken((int)ExpressionConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.COMPARE_EXPRESSION, "CompareExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.ADDITIVE_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_6, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.ADDITIVE_EXPRESSION, "AdditiveExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_8, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION, "MultiplicativeExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.POWER_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_10, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.POWER_EXPRESSION, "PowerExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.NEGATE_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_11, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.NEGATE_EXPRESSION, "NegateExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.SUB, 0, 1); alt.AddProduction((int)ExpressionConstants.MEMBER_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.MEMBER_EXPRESSION, "MemberExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.BASIC_EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_12, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.MEMBER_ACCESS_EXPRESSION, "MemberAccessExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.DOT, 1, 1); alt.AddProduction((int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.BASIC_EXPRESSION, "BasicExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.LITERAL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.EXPRESSION_GROUP, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION, "MemberFunctionExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.FUNCTION_CALL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION, "FieldPropertyExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.INDEX_EXPRESSION, "IndexExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.LEFT_BRACE, 1, 1); alt.AddProduction((int)ExpressionConstants.ARGUMENT_LIST, 1, 1); alt.AddToken((int)ExpressionConstants.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.FUNCTION_CALL_EXPRESSION, "FunctionCallExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.IDENTIFIER, 1, 1); alt.AddToken((int)ExpressionConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)ExpressionConstants.ARGUMENT_LIST, 0, 1); alt.AddToken((int)ExpressionConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.ARGUMENT_LIST, "ArgumentList"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_13, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.LITERAL_EXPRESSION, "LiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.INTEGER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.REAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.STRING_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.HEX_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.CHAR_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.NULL_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.DATETIME, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.TIMESPAN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION, "BooleanLiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.TRUE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.FALSE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ExpressionConstants.EXPRESSION_GROUP, "ExpressionGroup"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)ExpressionConstants.EXPRESSION, 1, 1); alt.AddToken((int)ExpressionConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.OR, 1, 1); alt.AddProduction((int)ExpressionConstants.AND_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.AND, 1, 1); alt.AddProduction((int)ExpressionConstants.NOT_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.BETWEEN, 1, 1); alt.AddProduction((int)ExpressionConstants.LITERAL_EXPRESSION, 1, 1); alt.AddToken((int)ExpressionConstants.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)ExpressionConstants.LITERAL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.IN, 1, 1); alt.AddProduction((int)ExpressionConstants.IN_TARGET_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.EQ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.GT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.LT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.GTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.LTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.NE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_6, "Subproduction6"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 1, 1); alt.AddProduction((int)ExpressionConstants.ADDITIVE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_7, "Subproduction7"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.SUB, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_8, "Subproduction8"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_7, 1, 1); alt.AddProduction((int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_9, "Subproduction9"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.MUL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.DIV, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.MOD, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_10, "Subproduction10"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_9, 1, 1); alt.AddProduction((int)ExpressionConstants.POWER_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_11, "Subproduction11"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.POWER, 1, 1); alt.AddProduction((int)ExpressionConstants.NEGATE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_12, "Subproduction12"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.MEMBER_ACCESS_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ExpressionConstants.INDEX_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_13, "Subproduction13"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)ExpressionConstants.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)ExpressionConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/// <summary>Initializes the parser by creating all the production /// patterns.</summary> /// /// <exception cref='ParserCreationException'>if the parser /// couldn't be initialized correctly</exception> private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)ArithmeticConstants.EXPRESSION, "Expression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ArithmeticConstants.TERM, 1, 1); alt.AddProduction((int)ArithmeticConstants.EXPRESSION_REST, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ArithmeticConstants.EXPRESSION_REST, "ExpressionRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.ADD, 1, 1); alt.AddProduction((int)ArithmeticConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.SUB, 1, 1); alt.AddProduction((int)ArithmeticConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ArithmeticConstants.TERM, "Term"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ArithmeticConstants.FACTOR, 1, 1); alt.AddProduction((int)ArithmeticConstants.TERM_REST, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ArithmeticConstants.TERM_REST, "TermRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.MUL, 1, 1); alt.AddProduction((int)ArithmeticConstants.TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.DIV, 1, 1); alt.AddProduction((int)ArithmeticConstants.TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ArithmeticConstants.FACTOR, "Factor"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)ArithmeticConstants.ATOM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)ArithmeticConstants.EXPRESSION, 1, 1); alt.AddToken((int)ArithmeticConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)ArithmeticConstants.ATOM, "Atom"); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)ArithmeticConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)KropConstants.PROGRAM, "program"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.STATEMENT, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STATEMENT, "statement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.DECLARATION_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.INSTRUCTION_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.IF_ELSE_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.WHILE_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.DIRE_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.SET_VAR_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.DECLARATION_STATEMENT, "declarationStatement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.INT_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.STRING_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.INSTRUCTION_STATEMENT, "instructionStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INSTRUCTION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.IF_ELSE_STATEMENT, "ifElseStatement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.IF_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.ELSE_STATEMENT, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.IF_STATEMENT, "ifStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.IF, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.CONDITON_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.LEFT_BRACE, 1, 1); alt.AddProduction((int)KropConstants.PROGRAM, 1, 1); alt.AddToken((int)KropConstants.RIGHT_BRACE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.ELSE_STATEMENT, "elseStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.ELSE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.LEFT_BRACE, 1, 1); alt.AddProduction((int)KropConstants.PROGRAM, 1, 1); alt.AddToken((int)KropConstants.RIGHT_BRACE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.WHILE_STATEMENT, "whileStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.WHILE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.CONDITON_STATEMENT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.LEFT_BRACE, 1, 1); alt.AddProduction((int)KropConstants.PROGRAM, 1, 1); alt.AddToken((int)KropConstants.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.DIRE_STATEMENT, "direStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.DIRE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.DIRE_VALUE, 1, 1); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.INT_STATEMENT, "intStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 1, -1); alt.AddToken((int)KropConstants.WORD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.EGAL, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.INT_VAR_VALUE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_STATEMENT, "stringStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.STRING, 1, 1); alt.AddToken((int)KropConstants.SPACE, 1, -1); alt.AddToken((int)KropConstants.WORD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.EGAL, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.STRING_VAR_VALUE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.SET_VAR_STATEMENT, "setVarStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.WORD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.EGAL, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.SET_VAR_VALUE, 1, 1); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.CONDITON_STATEMENT, "conditonStatement"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.CONDITION_EXPR, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.CONDITION_REST, 0, -1); alt.AddToken((int)KropConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.CONDITION_REST, "conditionRest"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.LOGICAL_OPERATOR, 1, 1); alt.AddToken((int)KropConstants.SPACE, 1, -1); alt.AddProduction((int)KropConstants.CONDITION_EXPR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.CONDITION_EXPR, "conditionExpr"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, 1); alt.AddProduction((int)KropConstants.CONDITION_PARAMETER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.CONDITION_PARAMETER, "conditionParameter"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.CONDITION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.TRUE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.FALSE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.BOOLEAN_EXPRESSION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.BOOLEAN_EXPRESSION, "booleanExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.BOOLEAN_EXPRESSION_REST, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.BOOLEAN_EXPRESSION_REST, "booleanExpressionRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.EGAL, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.BIGGER, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SMALLER, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.INT_VAR_VALUE, "IntVarValue"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INPUT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_VAR_VALUE, "StringVarValue"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.STRING_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INPUT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.SET_VAR_VALUE, "setVarValue"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INPUT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.STRING_VALUE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.DIRE_VALUE, "direValue"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.STRING_EXPRESSION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.INPUT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_VALUE, "stringValue"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.APOSTROPHE, 1, 1); alt.AddProduction((int)KropConstants.STRING_CHARACTER, 1, -1); alt.AddToken((int)KropConstants.APOSTROPHE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.QUOTE, 1, 1); alt.AddProduction((int)KropConstants.STRING_CHARACTER, 1, -1); alt.AddToken((int)KropConstants.QUOTE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.EXPRESSION, "expression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.TERM, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION_REST, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_EXPRESSION, "stringExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.STRING_VALUE, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.STRING_EXPRESSION_REST, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.WORD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.STRING_EXPRESSION_REST, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.EXPRESSION_REST, "expressionRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.ADD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SUB, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_EXPRESSION_REST, "stringExpressionRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.ADD, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.STRING_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.TERM, "term"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.FACTOR, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.TERM_REST, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.TERM_REST, "termRest"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.MUL, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.DIV, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.FACTOR, "factor"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.ATOM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddProduction((int)KropConstants.EXPRESSION, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); alt.AddToken((int)KropConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.ATOM, "atom"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SUB, 0, 1); alt.AddToken((int)KropConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.WORD, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.STRING_CHARACTER, "stringCharacter"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.WORD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SPACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)KropConstants.SPECIAL_CHAR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.SPECIAL_CHAR, "specialChar"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.DOT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.EXCLAMATION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.QUESTION_MARK, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.COLON, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.COMMA, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SUB, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.MUL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.DIV, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.LEFT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.LEFT_BRACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.BACKSLASH_APOSTROPHE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SEMICOLON, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.EGAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.BIGGER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.SMALLER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)KropConstants.LOGICAL_OPERATOR, "logicalOperator"); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.AND, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.OR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)KropConstants.NOT, 1, 1); alt.AddToken((int)KropConstants.SPACE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)Arch4Constants.PROGRAM, "Program"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.SEPARATOR, 0, 1); alt.AddProduction((int)Arch4Constants.ORIGIN, 0, 1); alt.AddProduction((int)Arch4Constants.LINES, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.SEPARATOR, "Separator"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.ENTER, 1, 1); alt.AddToken((int)Arch4Constants.ENTER, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.ORIGIN, "Origin"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.ORG, 1, 1); alt.AddToken((int)Arch4Constants.DEC_NUMBER, 1, 1); alt.AddProduction((int)Arch4Constants.SEPARATOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.LINES, "Lines"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.LINE, 1, 1); alt.AddProduction((int)Arch4Constants.LINE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.LINE, "Line"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, 1); alt.AddProduction((int)Arch4Constants.INSTRUCTION, 1, 1); alt.AddProduction((int)Arch4Constants.SEPARATOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.IMMED, "IMMED"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.HASH, 1, 1); alt.AddToken((int)Arch4Constants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.HASH, 1, 1); alt.AddToken((int)Arch4Constants.SIGN, 0, 1); alt.AddToken((int)Arch4Constants.DEC_NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.HASH, 1, 1); alt.AddToken((int)Arch4Constants.SIGN, 0, 1); alt.AddToken((int)Arch4Constants.HEX_NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.MEMDIR, "MEMDIR"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.DEC_NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.REGDIR, "REGDIR"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R0, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R3, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R4, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R5, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R6, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R7, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R8, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R9, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R10, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R11, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R12, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R13, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R14, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.R15, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.REGIND, "REGIND"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R0, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R1, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R2, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R3, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R4, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R5, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R6, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R7, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R8, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R9, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R10, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R11, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R12, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R13, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R14, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LEFT_PAREN, 1, 1); alt.AddToken((int)Arch4Constants.R15, 1, 1); alt.AddToken((int)Arch4Constants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.PCREL, "PCREL"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.DEC_NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.LD1, "ld1"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LD, 1, 1); alt.AddProduction((int)Arch4Constants.REGDIR, 1, 1); alt.AddToken((int)Arch4Constants.COMMA, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.LD2, "ld2"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.LD, 1, 1); alt.AddProduction((int)Arch4Constants.REGDIR, 1, 1); alt.AddToken((int)Arch4Constants.COMMA, 1, 1); alt.AddProduction((int)Arch4Constants.REGIND, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.JMP1, "jmp1"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.JMP, 1, 1); alt.AddProduction((int)Arch4Constants.PCREL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.HALT1, "halt1"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.HALT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Arch4Constants.INSTRUCTION, "Instruction"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.LD1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.LD2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.JMP1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.HALT1, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)Arch4Constants.IDENTIFIER, 1, 1); alt.AddToken((int)Arch4Constants.COLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.MEMDIR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Arch4Constants.IMMED, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)IRConstants.PROGRAM, "Program"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.BLOCK, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.BLOCK, "Block"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.DATA, "Data"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.DATA_DECL, 1, 1); alt.AddToken((int)IRConstants.ID, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.DATA_SIZE, "DataSize"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.NUM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.DATA_CONTENT, "DataContent"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.EQUALS, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.DATA_STRING, "DataString"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.STR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.DATA_BUFFER, "DataBuffer"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_BRACKET, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 0, -1); alt.AddToken((int)IRConstants.NUM, 1, 1); alt.AddToken((int)IRConstants.RIGHT_BRACKET, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_BRACKET, 1, 1); alt.AddToken((int)IRConstants.RIGHT_BRACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.CODE, "Code"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.CODE_HEADER, 1, 1); alt.AddToken((int)IRConstants.ID, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_6, 0, -1); alt.AddToken((int)IRConstants.CODE_FOOTER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.INSTR, "Instr"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.OP_CODE, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 1, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.OP_CODE, 1, 1); alt.AddProduction((int)IRConstants.OPERAND, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 1, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.OP_CODE, 1, 1); alt.AddProduction((int)IRConstants.OPERAND, 1, 1); alt.AddToken((int)IRConstants.COMMA, 1, 1); alt.AddProduction((int)IRConstants.OPERAND, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.OP_CODE, "OpCode"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.ID, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.OPERAND, "Operand"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.REGISTER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.POINTER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_BRACE, 1, 1); alt.AddProduction((int)IRConstants.REFERENCE, 1, 1); alt.AddToken((int)IRConstants.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.NUMBER, "Number"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_7, 0, 1); alt.AddToken((int)IRConstants.NUM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.REGISTER, "Register"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_8, 0, 1); alt.AddToken((int)IRConstants.REG, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.POINTER, "Pointer"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_9, 0, 1); alt.AddToken((int)IRConstants.LEFT_BRACKET, 1, 1); alt.AddProduction((int)IRConstants.REGISTER, 1, 1); alt.AddProduction((int)IRConstants.POINTER_OFFSET, 0, 1); alt.AddToken((int)IRConstants.RIGHT_BRACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.POINTER_OFFSET, "PointerOffset"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_10, 1, 1); alt.AddToken((int)IRConstants.NUM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.REFERENCE, "Reference"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.ID, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.TYPE, "Type"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.ASTTYPE, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_11, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.RAW_TYPE, "RawType"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.ID, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.TYPE_REF_DECL, "TypeRefDecl"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.TYPE_DECL, 1, 1); alt.AddToken((int)IRConstants.ID, 1, 1); alt.AddProduction((int)IRConstants.TYPE_REF, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.METHOD_REF_DECL, "MethodRefDecl"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.METHOD_DECL, 1, 1); alt.AddToken((int)IRConstants.ID, 1, 1); alt.AddProduction((int)IRConstants.METHOD_REF, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.TYPE_REF, "TypeRef"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.STR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.METHOD_REF, "MethodRef"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.INSTANCE, 0, 1); alt.AddProduction((int)IRConstants.METHOD_RET_TYPE, 1, 1); alt.AddProduction((int)IRConstants.TYPE_REF, 1, 1); alt.AddToken((int)IRConstants.DELIM, 1, 1); alt.AddToken((int)IRConstants.STR, 1, 1); alt.AddProduction((int)IRConstants.METHOD_PARAMS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.METHOD_RET_TYPE, "MethodRetType"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.TYPE_REF, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)IRConstants.METHOD_PARAMS, "MethodParams"); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)IRConstants.TYPE_REF, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_12, 0, -1); alt.AddToken((int)IRConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)IRConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.COMMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.DATA, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.CODE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.TYPE_REF_DECL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.METHOD_REF_DECL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)IRConstants.DATA_SIZE, 1, 1); alt.AddToken((int)IRConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.DATA_CONTENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.DATA_BUFFER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.DATA_STRING, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.NUM, 1, 1); alt.AddToken((int)IRConstants.COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.COMMENT, 1, 1); alt.AddToken((int)IRConstants.NEWLINE, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_6, "Subproduction6"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.INSTR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_7, "Subproduction7"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.TYPE, 1, 1); alt.AddToken((int)IRConstants.COLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_8, "Subproduction8"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.TYPE, 1, 1); alt.AddToken((int)IRConstants.COLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_9, "Subproduction9"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)IRConstants.TYPE, 1, 1); alt.AddToken((int)IRConstants.COLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_10, "Subproduction10"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.PLUS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.MINUS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_11, "Subproduction11"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)IRConstants.RAW_TYPE, 1, 1); alt.AddToken((int)IRConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_12, "Subproduction12"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)IRConstants.COMMA, 1, 1); alt.AddProduction((int)IRConstants.TYPE_REF, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int) HlslConstants.FILE, "File"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_1, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.TECHNIQUE_DECLARATION, "Technique_Declaration"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TECHNIQUE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_2, 0, -1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PASS_DECLARATION, "Pass_Declaration"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PASS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_3, 0, -1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PASS_INSTRUCTIONS, "Pass_Instructions"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.EQUAL, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_4, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_5, 1, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.STRUCT_DECLARATION, "Struct_Declaration"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.STRUCT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_6, 1, -1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FUNCTION_OR_VARIABLE_DECLARATION, "Function_OR_Variable_Declaration"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_7, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_8, 0, 1); alt.AddProduction((int) HlslConstants.TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_9, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VARIABLE_DECLARATION_PART, "Variable_Declaration_PART"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_10, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_12, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_14, 0, -1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_15, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FUNCTION_PART, "Function_PART"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PARAMETERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_16, 0, 1); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.FUNCTION_BODY, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PARAMETERS, "Parameters"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_17, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.LIST_OF_PARAMS, "List_Of_Params"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FUNCTION_PARAM, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_18, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FUNCTION_PARAM, "Function_Param"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_19, 0, 1); alt.AddProduction((int) HlslConstants.VARIABLE_DECLARATION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FUNCTION_BODY, "Function_Body"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_20, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.STATEMENT, "Statement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.RETURN_STATEMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FLOW_CONTROL_WORDS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.DO_STATEMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IF_SWITCH_ATTRIBUTES, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_21, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WHILE_FOR_ATTRIBUTES, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_22, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PRE_PROCESSOR_DIRECTIVES, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IF_STATEMENT, "IF_Statement"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IF, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.CONDITION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_23, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_24, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.SWITCH_STATEMENT, "Switch_Statement"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SWITCH, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_25, 1, -1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.CASE_STATEMENT, "Case_Statement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_26, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOUBLE_DOT, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_27, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.WHILE_STATEMENT, "While_Statement"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WHILE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.CONDITION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.DO_STATEMENT, "Do_Statement"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DO, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.WHILE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.CONDITION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FOR_STATEMENT, "For_Statement"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_28, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_29, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_30, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PRE_PROCESSOR_DIRECTIVES, "Pre_Processor_Directives"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_31, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.STATEMENT_SCOPE, "Statement_Scope"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.FUNCTION_BODY, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FUNCTION_BODY, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VARIABLE_DECLARATION, "Variable_Declaration"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_32, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_33, 0, 1); alt.AddProduction((int) HlslConstants.TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_34, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_36, 0, -1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_37, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.RETURN_STATEMENT, "Return_Statement"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_38, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VARIABLE_ASSIGNMENT, "Variable_Assignment"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IDENTIFIER_COMPOSED, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_39, 0, 1); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VARIABLE_ASSIGNMENT_WITHOUT_DOT_COMMA, "Variable_Assignment_WithoutDotComma"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IDENTIFIER_COMPOSED, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_40, 0, 1); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.CONDITION, "Condition"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.COMPARISON_OPERATORS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.INITIALIZERS, "Initializers"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NOT, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.EXPRESSION, "Expression"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SUB, 0, 1); alt.AddProduction((int) HlslConstants.TERM, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_41, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.EXPRESSION_TAIL, "ExpressionTail"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_42, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.TERM, "Term"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FACTOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.TERM_TAIL, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.TERM_TAIL, "TermTail"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_43, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FACTOR, "Factor"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.ATOM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.COMPOSE_IDENTIFIER, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.ATOM, "Atom"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FUNCTION_CONSTRUCTOR_CALL_OR_VARIABLE_DECLARATION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PREFIX_POSTFIX_OPERATORS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.IDENTIFIER_COMPOSED, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_44, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IDENTIFIER_COMPOSED_REQUIRED, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_45, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_47, 1, 1); alt.AddProduction((int) HlslConstants.TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.PART_OF_VARIABLE_DECLARATION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FUNCTION_CONSTRUCTOR_CALL_OR_VARIABLE_DECLARATION, "Function_Constructor_Call_OR_Variable_Declaration"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_48, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PART_OF_PROPERTY_SPECIFICATION, "PartOf_Property_Specification"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_BREACKET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_49, 1, -1); alt.AddToken((int) HlslConstants.CLOSE_BREACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PART_OF_CONSTRUCTOR_CALL, "PartOf_Constructor_Call"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_51, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.COMPOSE_IDENTIFIER, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PART_OF_VARIABLE_DECLARATION, "PartOf_Variable_Declaration"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_52, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_54, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_56, 0, -1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_57, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PART_OF_VARIABLE_ASSIGNMENT, "PartOf_Variable_Assignment"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_58, 0, 1); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.STORAGE_CLASS, "Storage_Class"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.EXTERN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.STATIC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NOINTERPOLATION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SHARED, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.UNIFORM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VOLATILE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.TYPE_MODIFIER, "Type_Modifier"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.CONST, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.ROW_MAJOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COLUMN_MAJOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.TYPE, "Type"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_FLOAT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FLOAT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_INT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.INT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_UINT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_HALF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.HALF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_DOUBLE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOUBLE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_BOOL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BOOL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VECTOR_EXP, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.MATRIX_EXP, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLER1D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLER2D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLER3D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLERCUBE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SAMPLER_STATE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXTURE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXTURE1D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXTURE2D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXTURE3D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXTURECUBE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VOID, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VECTOR_EXP, "VectorExp"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VECTOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.MINOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_59, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.MAJOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VECTOR_EXP_TYPE, "VectorExp_Type"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.BASIC_TYPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VECTOR_EXP_NUMBER, "VectorExp_Number"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NUMBER_2_4, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.VECTOR_EXP_TYPE_NUMBER, "VectorExp_Type_Number"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.BASIC_TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.MATRIX_EXP, "MatrixExp"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MATRIX, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.MINOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.BASIC_TYPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER_1_4, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER_1_4, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.MAJOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.BASIC_TYPE, "Basic_Type"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_FLOAT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_INT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_HALF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_DOUBLE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BASIC_BOOL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.SEMANTICAL_PARAMETERS, "SemanticalParameters"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.INPUT_SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.OUTPUT_SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IN_OUT_SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.SEMANTIC_MATRIXES, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.INPUT_SEMANTICAL_PARAMETERS, "InputSemanticalParameters"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BINORMAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BLENDINDICES, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BLENDWEIGHT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NORMAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.POSITIONT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TANGENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VFACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VPOS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.OUTPUT_SEMANTICAL_PARAMETERS, "OutputSemanticalParameters"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FOG, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TESSFACTOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DEPTH, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IN_OUT_SEMANTICAL_PARAMETERS, "InOutSemanticalParameters"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.POSITION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXCOORD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TEXUNIT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COLOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PSIZE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.ASSIGNMENT_OPERATOR, "Assignment_Operator"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.ADD_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SUB_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MULT_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DIV_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MOD_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MINOR_MINOR_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MAJOR_MAJOR_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.AND_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OR_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.POT_EQUAL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PREFIX_POSTFIX_OPERATORS, "Prefix_Postfix_Operators"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.ADD_ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SUB_SUB, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.COMPARISON_OPERATORS, "Comparison_Operators"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MINOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MAJOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.EQUAL_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DIFF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.LESS_EQUAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MORE_EQUAL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.BOOLEAN_OPERATORS, "Boolean_Operators"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.AND_AND, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OR_OR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NOT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IN_OUT_INOUT, "In_out_inout"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OUT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.INOUT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.REGISTER_FUNC, "Register_Func"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.REGISTER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.PACKOFFSET_FUNC, "Packoffset_Func"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PACKOFFSET, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.IDENTIFIER_COMPOSED, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IDENTIFIER_COMPOSED, "Identifier_Composed"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.COMPOSE_IDENTIFIER, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.COMPOSE_IDENTIFIER, "Compose_Identifier"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_60, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IDENTIFIER_COMPOSED_REQUIRED, "Identifier_Composed_Required"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.COMPOSE_IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.FLOW_CONTROL_WORDS, "Flow_Control_Words"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_61, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.WHILE_FOR_ATTRIBUTES, "While_For_Attributes"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.UNROLL, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.OPEN_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_PAREN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.LOOP, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.IF_SWITCH_ATTRIBUTES, "IF_Switch_Attributes"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.CALL, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FORCECASE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FLATTEN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BRANCH, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.SEMANTIC_MATRIXES, "SemanticMatrixes"); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WORLDVIEWPROJ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WORLDVIEW, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WORLDPROJ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VIEWPROJ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WORLD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.VIEW, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PROJ, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) HlslConstants.WS, "WS"); alt = new ProductionPatternAlternative(); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_62, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FUNCTION_OR_VARIABLE_DECLARATION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STRUCT_DECLARATION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TECHNIQUE_DECLARATION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PRE_PROCESSOR_DIRECTIVES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PASS_DECLARATION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PASS_INSTRUCTIONS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMPILE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_6, "Subproduction6"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VARIABLE_DECLARATION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.DOT_COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_7, "Subproduction7"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STORAGE_CLASS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_8, "Subproduction8"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TYPE_MODIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_9, "Subproduction9"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FUNCTION_PART, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VARIABLE_DECLARATION_PART, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_10, "Subproduction10"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_11, "Subproduction11"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_12, "Subproduction12"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_11, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_13, "Subproduction13"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.REGISTER_FUNC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PACKOFFSET_FUNC, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_14, "Subproduction14"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOUBLE_DOT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_13, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_15, "Subproduction15"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_16, "Subproduction16"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOUBLE_DOT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.SEMANTICAL_PARAMETERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_17, "Subproduction17"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.LIST_OF_PARAMS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_18, "Subproduction18"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.FUNCTION_PARAM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_19, "Subproduction19"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IN_OUT_INOUT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_20, "Subproduction20"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STATEMENT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_21, "Subproduction21"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.SWITCH_STATEMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.IF_STATEMENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_22, "Subproduction22"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.FOR_STATEMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WHILE_STATEMENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_23, "Subproduction23"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_24, "Subproduction24"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.ELSE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_25, "Subproduction25"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.CASE_STATEMENT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_26, "Subproduction26"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.CASE, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DEFAULT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_27, "Subproduction27"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.STATEMENT_SCOPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_28, "Subproduction28"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_29, "Subproduction29"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.CONDITION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_30, "Subproduction30"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_31, "Subproduction31"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_DEFINE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_IF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_ELSEIF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_ENDIF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_IFDEF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_IFNDEF, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_ERROR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_INCLUDE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_LINE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.PRE_PRAGMA, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_32, "Subproduction32"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STORAGE_CLASS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_33, "Subproduction33"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TYPE_MODIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_34, "Subproduction34"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_35, "Subproduction35"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.REGISTER_FUNC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PACKOFFSET_FUNC, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_36, "Subproduction36"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOUBLE_DOT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_35, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_37, "Subproduction37"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_38, "Subproduction38"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.RETURN, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_39, "Subproduction39"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_40, "Subproduction40"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_41, "Subproduction41"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION_TAIL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_42, "Subproduction42"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.SUB, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_43, "Subproduction43"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MULT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DIV, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.MOD, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_44, "Subproduction44"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.PREFIX_POSTFIX_OPERATORS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_45, "Subproduction45"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PREFIX_POSTFIX_OPERATORS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PART_OF_VARIABLE_ASSIGNMENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_46, "Subproduction46"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TYPE_MODIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_47, "Subproduction47"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.STORAGE_CLASS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_46, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.TYPE_MODIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_48, "Subproduction48"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PREFIX_POSTFIX_OPERATORS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PART_OF_CONSTRUCTOR_CALL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PART_OF_VARIABLE_DECLARATION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PART_OF_PROPERTY_SPECIFICATION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PART_OF_VARIABLE_ASSIGNMENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_49, "Subproduction49"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VARIABLE_ASSIGNMENT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_50, "Subproduction50"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_51, "Subproduction51"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.EXPRESSION, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_50, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_52, "Subproduction52"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_53, "Subproduction53"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_54, "Subproduction54"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMMA, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_53, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_55, "Subproduction55"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.SEMANTICAL_PARAMETERS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.REGISTER_FUNC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.PACKOFFSET_FUNC, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_56, "Subproduction56"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOUBLE_DOT, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) SynteticPatterns.SUBPRODUCTION_55, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_57, "Subproduction57"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.ASSIGNMENT_OPERATOR, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddProduction((int) HlslConstants.INITIALIZERS, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_58, "Subproduction58"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.OPEN_COLCHETES, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.NUMBER, 1, 1); alt.AddProduction((int) HlslConstants.WS, 0, 1); alt.AddToken((int) HlslConstants.CLOSE_COLCHETES, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_59, "Subproduction59"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VECTOR_EXP_TYPE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VECTOR_EXP_TYPE_NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int) HlslConstants.VECTOR_EXP_NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_60, "Subproduction60"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOT, 1, 1); alt.AddToken((int) HlslConstants.XYZW, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOT, 1, 1); alt.AddToken((int) HlslConstants.RGBA, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DOT, 1, 1); alt.AddToken((int) HlslConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_61, "Subproduction61"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.STOP, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.CONTINUE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.BREAK, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.DISCARD, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int) SynteticPatterns.SUBPRODUCTION_62, "Subproduction62"); pattern.SetSyntetic(true); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.WHITESPACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.TAB, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NEWLINE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NEWLINE2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.NEWLINE3, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.FORMFEED, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMMENT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int) HlslConstants.COMMENTCPP, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)RegexpConstants.EXPR, "Expr"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)RegexpConstants.TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.TERM, "Term"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)RegexpConstants.FACT, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.FACT, "Fact"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)RegexpConstants.ATOM, 1, 1); alt.AddProduction((int)RegexpConstants.ATOM_MODIFIER, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.ATOM, "Atom"); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.CHAR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.COMMA, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.DOT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)RegexpConstants.EXPR, 1, 1); alt.AddToken((int)RegexpConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_BRACKET, 1, 1); alt.AddProduction((int)RegexpConstants.CHARACTER_SET, 1, 1); alt.AddToken((int)RegexpConstants.RIGHT_BRACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.ATOM_MODIFIER, "AtomModifier"); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.QUESTION, 1, 1); alt.AddToken((int)RegexpConstants.QUESTION, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.ASTERISK, 1, 1); alt.AddToken((int)RegexpConstants.QUESTION, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.PLUS, 1, 1); alt.AddToken((int)RegexpConstants.QUESTION, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_BRACE, 1, 1); alt.AddToken((int)RegexpConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 0, 1); alt.AddToken((int)RegexpConstants.RIGHT_BRACE, 1, 1); alt.AddToken((int)RegexpConstants.QUESTION, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.CHARACTER_SET, "CharacterSet"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)RegexpConstants.CHARACTER, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)RegexpConstants.CHARACTER, "Character"); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.CHAR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.COMMA, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.DOT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.VERTICAL_BAR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.PLUS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.ASTERISK, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.QUESTION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_BRACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.LEFT_BRACKET, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.VERTICAL_BAR, 1, 1); alt.AddProduction((int)RegexpConstants.EXPR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)RegexpConstants.COMMA, 1, 1); alt.AddToken((int)RegexpConstants.NUMBER, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)PicoConstants.PROGRAM, "Program"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.SEPARATOR, 0, 1); alt.AddProduction((int)PicoConstants.SYMBOLS, 1, 1); alt.AddProduction((int)PicoConstants.ORIGIN, 1, 1); alt.AddProduction((int)PicoConstants.LINES, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.SEPARATOR, "Separator"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.ENTER, 1, 1); alt.AddToken((int)PicoConstants.ENTER, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.SYMBOLS, "Symbols"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.SYMBOL, 1, 1); alt.AddProduction((int)PicoConstants.SYMBOL, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.SYMBOL, "Symbol"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.IDENTIFIER, 1, 1); alt.AddToken((int)PicoConstants.EQUALS, 1, 1); alt.AddProduction((int)PicoConstants.INTEGER, 1, 1); alt.AddProduction((int)PicoConstants.SEPARATOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.INTEGER, "Integer"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.SIGN, 0, 1); alt.AddToken((int)PicoConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ORIGIN, "Origin"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.ORG, 1, 1); alt.AddToken((int)PicoConstants.NUMBER, 1, 1); alt.AddProduction((int)PicoConstants.SEPARATOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.LINES, "Lines"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.LINE, 1, 1); alt.AddProduction((int)PicoConstants.LINE, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.LINE, "Line"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, 1); alt.AddProduction((int)PicoConstants.INSTRUCTION, 1, 1); alt.AddProduction((int)PicoConstants.SEPARATOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.INSTRUCTION, "Instruction"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.MOVE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARITHMETIC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.BRANCH, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.IO, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.CALL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.RETURN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.END, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.MOVE, "Move"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.MOV, 1, 1); alt.AddProduction((int)PicoConstants.MOVE_ARGS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARITHMETIC, "Arithmetic"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 1, 1); alt.AddProduction((int)PicoConstants.ARITHMETIC_ARGS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.BRANCH, "Branch"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 1, 1); alt.AddProduction((int)PicoConstants.BRANCH_ARGS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.IO, "IO"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 1, 1); alt.AddProduction((int)PicoConstants.IOARGS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.CALL, "Call"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.JSR, 1, 1); alt.AddProduction((int)PicoConstants.ARG3, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.RETURN, "Return"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.RTS, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.END, "End"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.STOP, 1, 1); alt.AddProduction((int)PicoConstants.END_ARGS, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.MOVE_ARGS, "MoveArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARITHMETIC_ARGS, "ArithmeticArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_6, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.BRANCH_ARGS, "BranchArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_8, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.IOARGS, "IOArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_9, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.END_ARGS, "EndArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_11, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG12, "Arg12"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG2, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG34, "Arg34"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG3, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG4, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG123, "Arg123"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG3, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG1234, "Arg1234"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG3, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG4, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG1, "Arg1"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.INTEGER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG2, "Arg2"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.HASH, 1, 1); alt.AddToken((int)PicoConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG3, "Arg3"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)PicoConstants.ARG4, "Arg4"); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)PicoConstants.IDENTIFIER, 1, 1); alt.AddToken((int)PicoConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.IDENTIFIER, 1, 1); alt.AddToken((int)PicoConstants.COLON, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.SUB, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.MUL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.DIV, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.BEQ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.BGT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.IN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.OUT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1234, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG123, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_6, "Subproduction6"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG1234, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG12, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_7, "Subproduction7"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_8, "Subproduction8"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_7, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)PicoConstants.ARG1, 1, 1); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_9, "Subproduction9"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG1234, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_10, "Subproduction10"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_11, "Subproduction11"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)PicoConstants.COMMA, 1, 1); alt.AddProduction((int)PicoConstants.ARG34, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_10, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)DefConstants.ROOT, "Root"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.OPERATOR, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.SCOPE, "Scope"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.IDENTIFIER_OR_CALL, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.FUNC_SCOPE, "FuncScope"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.IDENTIFIER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.IDENTIFIER_OR_CALL, "IdentifierOrCall"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.IDENTIFIER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.CALL_ARGS, "CallArgs"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.EXPRESSION, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.OPERATOR, "Operator"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.SCOPE, 1, 1); alt.AddToken((int)DefConstants.EQUALS, 1, 1); alt.AddProduction((int)DefConstants.CONTEXT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.CONTEXT, "Context"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.OPEN_TABLE, 1, 1); alt.AddProduction((int)DefConstants.LIST, 1, 1); alt.AddToken((int)DefConstants.CLOSE_TABLE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.LIST, "List"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_6, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.DECIMAL, "Decimal"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_8, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.ATOM, "Atom"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.DECIMAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.TRUE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.FALSE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.STRING, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.FACTOR, "Factor"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_9, 0, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_11, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.MUL_TERM, "MulTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.FACTOR, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_12, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.ADD_TERM, "AddTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.MUL_TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_13, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.RELATE_TERM, "RelateTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.ADD_TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_14, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.EQ_TERM, "EqTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.RELATE_TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_15, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.AND_TERM, "AndTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.EQ_TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_16, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.OR_TERM, "OrTerm"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.AND_TERM, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_17, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DefConstants.EXPRESSION, "Expression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.OR_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.DOT, 1, 1); alt.AddProduction((int)DefConstants.IDENTIFIER_OR_CALL, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.DOT, 1, 1); alt.AddToken((int)DefConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.OPEN_PARENT, 1, 1); alt.AddProduction((int)DefConstants.CALL_ARGS, 0, 1); alt.AddToken((int)DefConstants.CLOSE_PARENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.DELIMITER, 1, 1); alt.AddProduction((int)DefConstants.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.EQUALS, 1, 1); alt.AddProduction((int)DefConstants.CONTEXT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_6, "Subproduction6"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.SCOPE, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 0, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.ATOM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.OPEN_TABLE, 1, 1); alt.AddProduction((int)DefConstants.LIST, 1, 1); alt.AddToken((int)DefConstants.CLOSE_TABLE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_7, "Subproduction7"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.NUMBEREND, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_8, "Subproduction8"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.DOT, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_7, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_9, "Subproduction9"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.SUB, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.NOT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_10, "Subproduction10"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.ATOM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DefConstants.SCOPE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_11, "Subproduction11"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_10, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.OPEN_PARENT, 1, 1); alt.AddProduction((int)DefConstants.EXPRESSION, 1, 1); alt.AddToken((int)DefConstants.CLOSE_PARENT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_12, "Subproduction12"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.MUL, 1, 1); alt.AddProduction((int)DefConstants.FACTOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.DIV, 1, 1); alt.AddProduction((int)DefConstants.FACTOR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_13, "Subproduction13"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.ADD, 1, 1); alt.AddProduction((int)DefConstants.MUL_TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.SUB, 1, 1); alt.AddProduction((int)DefConstants.MUL_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_14, "Subproduction14"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.MORE, 1, 1); alt.AddProduction((int)DefConstants.ADD_TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.LESS, 1, 1); alt.AddProduction((int)DefConstants.ADD_TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.MOREOREQUALS, 1, 1); alt.AddProduction((int)DefConstants.ADD_TERM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.LESSOREQUALS, 1, 1); alt.AddProduction((int)DefConstants.ADD_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_15, "Subproduction15"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.EQUALS, 1, 1); alt.AddProduction((int)DefConstants.RELATE_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_16, "Subproduction16"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.AND, 1, 1); alt.AddProduction((int)DefConstants.EQ_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_17, "Subproduction17"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DefConstants.OR, 1, 1); alt.AddProduction((int)DefConstants.AND_TERM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
private void CreatePatterns() { var pattern = new ProductionPattern((int)Token.EXPRESSION, "Expression"); var alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.XOR_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.XOR_EXPRESSION, "XorExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.OR_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_1, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.OR_EXPRESSION, "OrExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.AND_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_2, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.AND_EXPRESSION, "AndExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.NOT_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_3, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.NOT_EXPRESSION, "NotExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.NOT, 0, 1); alt.AddProduction((int)Token.IN_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.IN_EXPRESSION, "InExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.COMPARE_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_4, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.IN_TARGET_EXPRESSION, "InTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.FIELD_PROPERTY_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.IN_LIST_TARGET_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.IN_LIST_TARGET_EXPRESSION, "InListTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LEFT_PAREN, 1, 1); alt.AddProduction((int)Token.ARGUMENT_LIST, 1, 1); alt.AddToken((int)Token.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.COMPARE_EXPRESSION, "CompareExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.SHIFT_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_6, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.SHIFT_EXPRESSION, "ShiftExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.ADDITIVE_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_8, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.ADDITIVE_EXPRESSION, "AdditiveExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.MULTIPLICATIVE_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_10, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.MULTIPLICATIVE_EXPRESSION, "MultiplicativeExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.POWER_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_12, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.POWER_EXPRESSION, "PowerExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.NEGATE_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_13, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.NEGATE_EXPRESSION, "NegateExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.SUB, 0, 1); alt.AddProduction((int)Token.MEMBER_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.MEMBER_EXPRESSION, "MemberExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.BASIC_EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_14, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.MEMBER_ACCESS_EXPRESSION, "MemberAccessExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.DOT, 1, 1); alt.AddProduction((int)Token.MEMBER_FUNCTION_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.BASIC_EXPRESSION, "BasicExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.LITERAL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.EXPRESSION_GROUP, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.MEMBER_FUNCTION_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.SPECIAL_FUNCTION_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.MEMBER_FUNCTION_EXPRESSION, "MemberFunctionExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.FIELD_PROPERTY_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.FUNCTION_CALL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.FIELD_PROPERTY_EXPRESSION, "FieldPropertyExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.SPECIAL_FUNCTION_EXPRESSION, "SpecialFunctionExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.IF_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.CAST_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.IF_EXPRESSION, "IfExpression"); //if(expr;expr;expr) alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.IF, 1, 1); alt.AddToken((int)Token.LEFT_PAREN, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddToken((int)Token.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddToken((int)Token.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddToken((int)Token.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.CAST_EXPRESSION, "CastExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.CAST, 1, 1); alt.AddToken((int)Token.LEFT_PAREN, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddToken((int)Token.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)Token.CAST_TYPE_EXPRESSION, 1, 1); alt.AddToken((int)Token.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.CAST_TYPE_EXPRESSION, "CastTypeExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.IDENTIFIER, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_15, 0, -1); alt.AddToken((int)Token.ARRAY_BRACES, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.INDEX_EXPRESSION, "IndexExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LEFT_BRACE, 1, 1); alt.AddProduction((int)Token.ARGUMENT_LIST, 1, 1); alt.AddToken((int)Token.RIGHT_BRACE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.FUNCTION_CALL_EXPRESSION, "FunctionCallExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.IDENTIFIER, 1, 1); alt.AddToken((int)Token.LEFT_PAREN, 1, 1); alt.AddProduction((int)Token.ARGUMENT_LIST, 0, 1); alt.AddToken((int)Token.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.ARGUMENT_LIST, "ArgumentList"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_16, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.LITERAL_EXPRESSION, "LiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.INTEGER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.REAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.STRING_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.BOOLEAN_LITERAL_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.HEX_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.CHAR_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.NULL_LITERAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.DATETIME, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.TIMESPAN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.BOOLEAN_LITERAL_EXPRESSION, "BooleanLiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.TRUE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.FALSE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)Token.EXPRESSION_GROUP, "ExpressionGroup"); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LEFT_PAREN, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); alt.AddToken((int)Token.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_1, "Subproduction1") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.XOR, 1, 1); alt.AddProduction((int)Token.OR_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_2, "Subproduction2") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.OR, 1, 1); alt.AddProduction((int)Token.AND_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_3, "Subproduction3") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.AND, 1, 1); alt.AddProduction((int)Token.NOT_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_4, "Subproduction4") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.IN, 1, 1); alt.AddProduction((int)Token.IN_TARGET_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_5, "Subproduction5") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.EQ, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.GT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.GTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.NE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_6, "Subproduction6") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_5, 1, 1); alt.AddProduction((int)Token.SHIFT_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_7, "Subproduction7") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.LEFT_SHIFT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.RIGHT_SHIFT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_8, "Subproduction8") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_7, 1, 1); alt.AddProduction((int)Token.ADDITIVE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_9, "Subproduction9") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.ADD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.SUB, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_10, "Subproduction10") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_9, 1, 1); alt.AddProduction((int)Token.MULTIPLICATIVE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_11, "Subproduction11") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.MUL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.DIV, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.MOD, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_12, "Subproduction12") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddProduction((int)SyntheticPatterns.SUBPRODUCTION_11, 1, 1); alt.AddProduction((int)Token.POWER_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_13, "Subproduction13") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.POWER, 1, 1); alt.AddProduction((int)Token.NEGATE_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_14, "Subproduction14") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.MEMBER_ACCESS_EXPRESSION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)Token.INDEX_EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_15, "Subproduction15") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.DOT, 1, 1); alt.AddToken((int)Token.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SyntheticPatterns.SUBPRODUCTION_16, "Subproduction16") { Synthetic = true }; alt = new ProductionPatternAlternative(); alt.AddToken((int)Token.ARGUMENT_SEPARATOR, 1, 1); alt.AddProduction((int)Token.EXPRESSION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)DokiScriptConstants.DOKI, "Doki"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.PART, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.PART, "Part"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.BLOCK, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.FLAG, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.OPTION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.JUMP, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.BLOCK, "Block"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.WORLD, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 1, -1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.RETURN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 1, -1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.RETURN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.ACTION, "Action"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TAB, 1, 1); alt.AddProduction((int)DokiScriptConstants.VOICE_ACTION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TAB, 1, 1); alt.AddProduction((int)DokiScriptConstants.OTHER_ACTION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TAB, 1, 1); alt.AddToken((int)DokiScriptConstants.TEXT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.VOICE_ACTION, "VoiceAction"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.VOICE, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 0, -1); alt.AddToken((int)DokiScriptConstants.TEXT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.OTHER_ACTION, "OtherAction"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.TAG, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 0, -1); alt.AddToken((int)DokiScriptConstants.SEMICOLON, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.TAG, "Tag"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.BACKGROUND, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.WEATHER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.SOUND, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.BGM, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.VIDEO, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.MOVE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.POSTURE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.ROLE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.OTHER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.KEY, "Key"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.SRC, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TRANSITION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TIME, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TYPE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.LEVEL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.MODE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.POSITION, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.NAME, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.ANCHOR, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.TAG_PARAMETER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY3, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY4, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY5, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY6, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY7, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY8, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.KEY9, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.LIVE2D, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.ZOOM, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.VALUE, "Value"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.PARENTHESE_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.COMMA, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.COMMA, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_RIGHT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.PARENTHESE_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.COMMA, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_RIGHT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.DECIMAL, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.QUOTED_TEXT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.FLAG, "Flag"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.SQUARE_BRACKET_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.QUOTED_TEXT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.COMMA, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_RIGHT, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 0, -1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.SQUARE_BRACKET_RIGHT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.RETURN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.OPTION, "Option"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.ANGLE_BRACKET_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.CLICK, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.RETURN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)DokiScriptConstants.JUMP, "Jump"); alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.PARENTHESE_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_RIGHT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.RETURN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.RETURN, 0, 1); alt.AddProduction((int)DokiScriptConstants.ACTION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.RETURN, 0, 1); alt.AddProduction((int)DokiScriptConstants.ACTION, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.KEY, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.EQUAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddProduction((int)DokiScriptConstants.VALUE, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction((int)DokiScriptConstants.KEY, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.EQUAL, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddProduction((int)DokiScriptConstants.VALUE, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.OR, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.QUOTED_TEXT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_LEFT, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.COMMA, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.IDENTIFIER, 1, 1); alt.AddToken((int)DokiScriptConstants.SPACE, 0, 1); alt.AddToken((int)DokiScriptConstants.PARENTHESE_RIGHT, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)LogicalConstants.FORMULE, "FORMULE"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.NOT, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.FORALL, 1, 1); alt.AddToken((int)LogicalConstants.VAR, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EXISTS, 1, 1); alt.AddToken((int)LogicalConstants.VAR, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)LogicalConstants.PREDICAT, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE_PRED, 0, -1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE_BIN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.FORMULE_PRED, "FORMULE_PRED"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AND, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.OR, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.IMPLY, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.FORMULE_BIN, "FORMULE_BIN"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AND, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.OR, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.IMPLY, 1, 1); alt.AddProduction((int)LogicalConstants.FORMULE, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.ATOM, "ATOM"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.CSTE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.VAR, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.PREDICAT, "PREDICAT"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)LogicalConstants.PRED1, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)LogicalConstants.PRED2, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)LogicalConstants.PRED3, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.PRED1, "PRED1"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.ROSE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.PAQUERETTE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.TULIPE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_GRAND, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_MOYEN, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_PETIT, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_ROUGE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_ROSE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_BLANC, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.A_L_EST, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.A_L_OUEST, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AU_SUD, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AU_NORD, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.PRED2, "PRED2"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.A_L_EST_DE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.A_L_OUEST_DE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AU_SUD_DE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.AU_NORD_DE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.MEME_LONGITUDE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.MEME_LATITUDE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.PLUS_GRAND_QUE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.PLUS_PETIT_QUE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.MEME_TAILLE_QUE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.MEME_COULEUR_QUE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EGAL, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)LogicalConstants.PRED3, "PRED3"); alt = new ProductionPatternAlternative(); alt.AddToken((int)LogicalConstants.EST_ENTRE, 1, 1); alt.AddToken((int)LogicalConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.COMMA, 1, 1); alt.AddProduction((int)LogicalConstants.ATOM, 1, 1); alt.AddToken((int)LogicalConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); }
private void CreatePatterns() { var pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.EXPRESSION), "Expression"); var alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.XOR_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.XOR_EXPRESSION), "XorExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.OR_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_1), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.OR_EXPRESSION), "OrExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.AND_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_2), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.AND_EXPRESSION), "AndExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.NOT_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_3), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.NOT_EXPRESSION), "NotExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.NOT), 0, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.IN_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.IN_EXPRESSION), "InExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.COMPARE_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_4), 0, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.IN_TARGET_EXPRESSION), "InTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.FIELD_PROPERTY_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.IN_LIST_TARGET_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.IN_LIST_TARGET_EXPRESSION), "InListTargetExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_PAREN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.ARGUMENT_LIST), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_PAREN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.COMPARE_EXPRESSION), "CompareExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.SHIFT_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_6), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.SHIFT_EXPRESSION), "ShiftExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.ADDITIVE_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_8), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.ADDITIVE_EXPRESSION), "AdditiveExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MULTIPLICATIVE_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_10), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.MULTIPLICATIVE_EXPRESSION), "MultiplicativeExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.POWER_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_12), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.POWER_EXPRESSION), "PowerExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.NEGATE_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_13), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.NEGATE_EXPRESSION), "NegateExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.SUB), 0, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MEMBER_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.MEMBER_EXPRESSION), "MemberExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.BASIC_EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_14), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.MEMBER_ACCESS_EXPRESSION), "MemberAccessExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.DOT), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MEMBER_FUNCTION_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.BASIC_EXPRESSION), "BasicExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.LITERAL_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION_GROUP), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MEMBER_FUNCTION_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.SPECIAL_FUNCTION_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.MEMBER_FUNCTION_EXPRESSION), "MemberFunctionExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.FIELD_PROPERTY_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.FUNCTION_CALL_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.FIELD_PROPERTY_EXPRESSION), "FieldPropertyExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.IDENTIFIER), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.SPECIAL_FUNCTION_EXPRESSION), "SpecialFunctionExpression"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.IF_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.CAST_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.IF_EXPRESSION), "IfExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.IF), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_PAREN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.ARGUMENT_SEPARATOR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.ARGUMENT_SEPARATOR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_PAREN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.CAST_EXPRESSION), "CastExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.CAST), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_PAREN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.ARGUMENT_SEPARATOR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.CAST_TYPE_EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_PAREN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.CAST_TYPE_EXPRESSION), "CastTypeExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.IDENTIFIER), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_15), 0, -1); alt.AddToken(Convert.ToInt32(ExpressionConstants.ARRAY_BRACES), 0, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.INDEX_EXPRESSION), "IndexExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_BRACE), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.ARGUMENT_LIST), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_BRACE), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.FUNCTION_CALL_EXPRESSION), "FunctionCallExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.IDENTIFIER), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_PAREN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.ARGUMENT_LIST), 0, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_PAREN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.ARGUMENT_LIST), "ArgumentList"); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_16), 0, -1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.LITERAL_EXPRESSION), "LiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.INTEGER), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.REAL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.STRING_LITERAL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.HEX_LITERAL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.CHAR_LITERAL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.NULL_LITERAL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.DATETIME), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.TIMESPAN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION), "BooleanLiteralExpression"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.TRUE), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.FALSE), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(ExpressionConstants.EXPRESSION_GROUP), "ExpressionGroup"); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_PAREN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_PAREN), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_1), "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.XOR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.OR_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_2), "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.OR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.AND_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_3), "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.AND), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.NOT_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_4), "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.IN), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.IN_TARGET_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_5), "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.EQ), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.GT), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LT), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.GTE), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LTE), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.NE), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_6), "Subproduction6"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_5), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.SHIFT_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_7), "Subproduction7"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.LEFT_SHIFT), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.RIGHT_SHIFT), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_8), "Subproduction8"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_7), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.ADDITIVE_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_9), "Subproduction9"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.ADD), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.SUB), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_10), "Subproduction10"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_9), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MULTIPLICATIVE_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_11), "Subproduction11"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.MUL), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.DIV), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.MOD), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_12), "Subproduction12"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_11), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.POWER_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_13), "Subproduction13"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.POWER), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.NEGATE_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_14), "Subproduction14"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.MEMBER_ACCESS_EXPRESSION), 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction(Convert.ToInt32(ExpressionConstants.INDEX_EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_15), "Subproduction15"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.DOT), 1, 1); alt.AddToken(Convert.ToInt32(ExpressionConstants.IDENTIFIER), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); pattern = new ProductionPattern(Convert.ToInt32(SynteticPatterns.SUBPRODUCTION_16), "Subproduction16"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken(Convert.ToInt32(ExpressionConstants.ARGUMENT_SEPARATOR), 1, 1); alt.AddProduction(Convert.ToInt32(ExpressionConstants.EXPRESSION), 1, 1); pattern.AddAlternative(alt); this.AddPattern(pattern); }
/** * <summary>Initializes the parser by creating all the production * patterns.</summary> * * <exception cref='ParserCreationException'>if the parser * couldn't be initialized correctly</exception> */ private void CreatePatterns() { ProductionPattern pattern; ProductionPatternAlternative alt; pattern = new ProductionPattern((int)VendingMachineConstants.SCRIPT, "Script"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.COMMAND, 1, -1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.COMMAND, "Command"); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.CREATE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.CONFIGURE, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.COIN_LOAD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.POP_LOAD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.UNLOAD, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.EXTRACT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.INSERT, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.PRESS, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.CHECK_DELIVERY, 1, 1); pattern.AddAlternative(alt); alt = new ProductionPatternAlternative(); alt.AddProduction((int)VendingMachineConstants.CHECK_TEARDOWN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.CREATE, "Create"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.CREATE_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_1, 0, -1); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.CONFIGURE, "Configure"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.CONFIGURE_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_2, 0, -1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.COIN_LOAD, "CoinLoad"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.COIN_LOAD_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.POP_LOAD, "PopLoad"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.POP_LOAD_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.UNLOAD, "Unload"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.UNLOAD_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.EXTRACT, "Extract"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.EXTRACT_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.INSERT, "Insert"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.INSERT_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.PRESS, "Press"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.PRESS_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddProduction((int)VendingMachineConstants.VMSELECTION, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.CHECK_DELIVERY, "CheckDelivery"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.CHECK_DELIVERY_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_3, 0, -1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.CHECK_TEARDOWN, "CheckTeardown"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.CHECK_TEARDOWN_COMMAND, 1, 1); alt.AddToken((int)VendingMachineConstants.LEFT_PAREN, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_5, 0, -1); alt.AddToken((int)VendingMachineConstants.RIGHT_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.VMSELECTION, "VMSelection"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.LEFT_SQUARE_PAREN, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); alt.AddToken((int)VendingMachineConstants.RIGHT_SQUARE_PAREN, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)VendingMachineConstants.POP_STRING, "PopString"); alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.QUOTATION_MARK, 1, 1); alt.AddToken((int)VendingMachineConstants.STRING, 1, 1); alt.AddToken((int)VendingMachineConstants.QUOTATION_MARK, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_1, "Subproduction1"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_2, "Subproduction2"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddToken((int)VendingMachineConstants.NUMBER, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_3, "Subproduction3"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_4, "Subproduction4"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.COMMA, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); pattern.AddAlternative(alt); AddPattern(pattern); pattern = new ProductionPattern((int)SynteticPatterns.SUBPRODUCTION_5, "Subproduction5"); pattern.Synthetic = true; alt = new ProductionPatternAlternative(); alt.AddToken((int)VendingMachineConstants.SEMI_COLON, 1, 1); alt.AddProduction((int)VendingMachineConstants.POP_STRING, 1, 1); alt.AddProduction((int)SynteticPatterns.SUBPRODUCTION_4, 0, -1); pattern.AddAlternative(alt); AddPattern(pattern); }