public static void InitGrammar()
        {
            //Program rule
            Grammar.Add(new GrammarReplaceRule(TokenEnum.Program, new CompositeToken
            {
                TokenEnum.ProgramName,
                TokenEnum.NewLine(),
                TokenEnum.String("var"),
                TokenEnum.DefList1,
                TokenEnum.NewLine(),
                TokenEnum.String("begin"),
                TokenEnum.StatementList1,
                TokenEnum.String("end")
            }));

            //Definition list
            DefinitionList();

            //Statement list
            StatementList();

            //Unlabeled operator
            UnlabeledOperator();

            IdList();

            //Expression
            FillExpression();

            FillLogicalExpression();
        }
        private static void StatementList()
        {
            Grammar.Add(new GrammarReplaceRule(TokenEnum.StatementList, new CompositeToken
            {
                TokenEnum.StatementList,
                TokenEnum.NewLine(),
                TokenEnum.Statement
            }));
            Grammar.Add(new GrammarReplaceRule(TokenEnum.StatementList, new CompositeToken
            {
                TokenEnum.NewLine(),
                TokenEnum.Statement
            }));
            Grammar.Add(new GrammarReplaceRule(TokenEnum.Statement, new CompositeToken
            {
                TokenEnum.UnlabeledStatement
            }));
            Grammar.Add(new GrammarReplaceRule(TokenEnum.Statement, new CompositeToken
            {
                TokenEnum.Label(),
                TokenEnum.String(":"),
                TokenEnum.UnlabeledStatement
            }));


            Grammar.Add(new GrammarReplaceRule(TokenEnum.StatementList1, new CompositeToken
            {
                TokenEnum.StatementList,
                TokenEnum.NewLine()
            }));
        }