// @formatter:off private Rules <object> InitRules() { return(new Rules <object>(new List <Rule <object> > { R(Parser, /**/ pl.HashLex, Lexer, pl.HashAST, Ast, pl.HashGrammar, Grammar, pl.END).C(l => ((RegexLexer)l[1], FinalizeAst(l[3]), FinalizeGrammar(l[5]))), R(Lexer, /**/ LexemeList).C(l => FinalizeLexer(l[0])), R(LexemeList, /**/ Lexeme, LexemeList).ArrayAdd <object>(1, 0), R(LexemeList /**/).C(l => new List <object>()), R(Lexeme, /**/ pl.Name, pl.Eq, pl.Regex).C(l => MakeLexeme(l[0], l[2], SymbolType.Terminal)), R(Lexeme, /**/ pl.Semicolon, pl.Name, pl.Eq, pl.Regex).C(l => MakeLexeme(l[1], l[3], SymbolType.Comment)), R(Ast, /**/ AstNode, Ast).ArrayAdd <object>(1, 0), R(Ast /**/).C(l => new List <object>()), R(AstNode, /**/ pl.Name, pl.LeftBrace, Fields, pl.RightBrace).C(l => MakeNode(l[0], "Object", l[2])), R(AstNode, /**/ pl.Name, pl.Colon, pl.Name, pl.LeftBrace, Fields, pl.RightBrace).C(l => MakeNode(l[0], l[2], l[4])), R(Fields, /**/ Field, Fields).ArrayAdd <object>(1, 0), R(Fields /**/).MakeArray <object>(), R(Field, /**/ pl.Name, pl.Colon, FieldType, pl.Semicolon).C(l => (l[0] as string, l[2] as string)), R(FieldType, /**/ pl.Name).C(l => l[0] as string), R(FieldType, /**/ pl.Star, pl.Name).C(l => '*' + (l[1] as string)), R(Grammar, /**/ Rule, Grammar).ArrayAdd <object>(1, 0), R(Grammar /**/).MakeArray <object>(), R(Rule, /**/ NonTerminal, pl.ArrowRight, RuleRights).C(l => FinalizeRule(l[0], l[2])), R(RuleRights, /**/ RuleRight, pl.Bar, RuleRights).ArrayAdd <object>(2, 0), R(RuleRights, /**/ RuleRight).MakeArray <object>(0), R(RuleRight, /**/ SymbolSequence, Callback).C(l => ((List <int>)l[0], (RuleCallback)l[1])), R(SymbolSequence, /**/ Symbol, SymbolSequence).ArrayAdd <int>(1, 0), R(SymbolSequence /**/).MakeArray <int>(), R(Symbol, /**/ NonTerminal).C(l => l[0]), R(Symbol, /**/ pl.Name).C(l => resultSd[(string)l[0], SymbolType.Terminal]), R(Symbol, /**/ pl.Regex).C(l => resultLexer.MatchOneToken(ParseRegexToken(l[0]))), R(NonTerminal, /**/ pl.LeftAngle, pl.Name, pl.RightAngle).C(l => resultSd.GetOrRegister((string)l[1], SymbolType.NonTerminal)), R(Callback, /**/ pl.LeftBrace, Statements, pl.RightBrace).C(l => new RuleCallback((List <RuleCallback.Instruction>)l[1])), R(Statements, /**/ Statement, Statements).ArrayAdd <RuleCallback.Instruction>(1, 0), R(Statements /**/).MakeArray <RuleCallback.Instruction>(), R(Statement, /**/ pl.Return, Expression, pl.Semicolon).C(l => NewReturn(l[1])), R(Statement, /**/ Expression, pl.ArrowLeft, Expression, pl.Semicolon).C(l => NewAdd(l[0], l[2])), R(Expression, /**/ pl.DollarVar, Getters).C(l => NewGetter(l[0], l[1])), R(Expression, /**/ FieldType, pl.LeftPar, ExprList, pl.RightPar).C(l => NewConstructor(l[0], l[2])), R(Getters, /**/ pl.Dot, pl.Name, Getters).ArrayAdd <string>(2, 1), R(Getters /**/).MakeArray <string>(), R(ExprList, /**/ Expression, pl.Coma, ExprList).ArrayAdd <RuleCallback.Expr>(2, 0), R(ExprList, /**/ Expression).MakeArray <RuleCallback.Expr>(0), R(ExprList /**/).MakeArray <RuleCallback.Expr>(), }));