コード例 #1
0
    /**
     * 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);
    }
コード例 #2
0
    /**
     * 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);
    }
コード例 #3
0
ファイル: FormulaParser.cs プロジェクト: ngsandbox/mvcSandbox
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /**
         * <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);
        }
コード例 #7
0
        /**
         * <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);
        }
コード例 #8
0
ファイル: IRParser.cs プロジェクト: hmyit/KoiVM-1
        /**
         * <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);
        }
コード例 #9
0
ファイル: HlslParser.cs プロジェクト: SickheadGames/HL2GLSL
    /**
     * <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);
    }
コード例 #10
0
ファイル: RegexpParser.cs プロジェクト: pawels17/MUTDOD
        /**
         * <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);
        }
コード例 #11
0
ファイル: PicoParser.cs プロジェクト: lazanet/messylab
        /**
         * <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);
        }
コード例 #12
0
        /**
         * <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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
    /**
     * <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);
    }
コード例 #15
0
    /**
     * <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);
    }
コード例 #16
0
ファイル: ExpressionParser.cs プロジェクト: jblacker/Flee
        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);
        }
コード例 #17
0
        /**
         * <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);
        }