// $ANTLR 3.1.2 BuildOptions\\DebugGrammar.g3 2009-09-30 13:18:13 // The variable 'variable' is assigned but its value is never used. #pragma warning disable 219 // Unreachable code detected. #pragma warning disable 162 using System.Collections.Generic; using Antlr.Runtime; using Stack = System.Collections.Generic.Stack; using List = System.Collections.IList; using ArrayList = System.Collections.Generic.List; using Antlr.Runtime.Debug; using IOException = System.IO.IOException; using Antlr.Runtime.Tree; using RewriteRuleITokenStream = Antlr.Runtime.Tree.RewriteRuleTokenStream; [System.CodeDom.Compiler.GeneratedCode("ANTLR", "3.1.2")] [System.CLSCompliant(false)] public partial class DebugGrammarParser : DebugParser { internal static readonly string[] tokenNames = new string[] { "", "", "", "", "CALL", "FUNC", "ID", "INT", "NEWLINE", "WS", "'-'", "'%'", "'('", "')'", "'*'", "'/'", "'+'", "'='" }; public const int EOF=-1; public const int T__10=10; public const int T__11=11; public const int T__12=12; public const int T__13=13; public const int T__14=14; public const int T__15=15; public const int T__16=16; public const int T__17=17; public const int CALL=4; public const int FUNC=5; public const int ID=6; public const int INT=7; public const int NEWLINE=8; public const int WS=9; // delegates // delegators public static readonly string[] ruleNames = new string[] { "invalidRule", "atom", "expr", "formalPar", "func", "multExpr", "prog", "stat" }; int ruleLevel = 0; public virtual int RuleLevel { get { return ruleLevel; } } public virtual void IncRuleLevel() { ruleLevel++; } public virtual void DecRuleLevel() { ruleLevel--; } public DebugGrammarParser( ITokenStream input ) : this( input, DebugEventSocketProxy.DefaultDebuggerPort, new RecognizerSharedState() ) { } public DebugGrammarParser( ITokenStream input, int port, RecognizerSharedState state ) : base( input, state ) { InitializeTreeAdaptor(); if ( TreeAdaptor == null ) TreeAdaptor = new CommonTreeAdaptor(); DebugEventSocketProxy proxy = new DebugEventSocketProxy( this, port, adaptor ); DebugListener = proxy; TokenStream = new DebugTokenStream( input, proxy ); try { proxy.Handshake(); } catch ( IOException ioe ) { ReportError( ioe ); } ITreeAdaptor adap = new CommonTreeAdaptor(); TreeAdaptor = adap; proxy.TreeAdaptor = adap; } public DebugGrammarParser( ITokenStream input, IDebugEventListener dbg ) : base( input, dbg ) { InitializeTreeAdaptor(); if ( TreeAdaptor == null ) TreeAdaptor = new CommonTreeAdaptor(); ITreeAdaptor adap = new CommonTreeAdaptor(); TreeAdaptor = adap; } protected virtual bool EvalPredicate( bool result, string predicate ) { dbg.SemanticPredicate( result, predicate ); return result; } // Implement this function in your helper file to use a custom tree adaptor partial void InitializeTreeAdaptor(); protected DebugTreeAdaptor adaptor; public ITreeAdaptor TreeAdaptor { get { return adaptor; } set { this.adaptor = new DebugTreeAdaptor(dbg,adaptor); } } public override string[] TokenNames { get { return DebugGrammarParser.tokenNames; } } public override string GrammarFileName { get { return "BuildOptions\\DebugGrammar.g3"; } } #region Rules public class prog_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "prog" // BuildOptions\\DebugGrammar.g3:50:0: prog : ( stat )* ; private DebugGrammarParser.prog_return prog( ) { DebugGrammarParser.prog_return retval = new DebugGrammarParser.prog_return(); retval.start = input.LT(1); CommonTree root_0 = null; DebugGrammarParser.stat_return stat1 = default(DebugGrammarParser.stat_return); try { dbg.EnterRule( GrammarFileName, "prog" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 50, -1 ); try { // BuildOptions\\DebugGrammar.g3:50:7: ( ( stat )* ) dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:50:7: ( stat )* { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 50, 6 ); // BuildOptions\\DebugGrammar.g3:50:7: ( stat )* try { dbg.EnterSubRule( 1 ); for ( ; ; ) { int alt1=2; try { dbg.EnterDecision( 1 ); int LA1_0 = input.LA(1); if ( ((LA1_0>=ID && LA1_0<=NEWLINE)||LA1_0==12) ) { alt1=1; } } finally { dbg.ExitDecision( 1 ); } switch ( alt1 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:50:9: stat { dbg.Location( 50, 8 ); PushFollow(Follow._stat_in_prog53); stat1=stat(); state._fsp--; adaptor.AddChild(root_0, stat1.Tree); } break; default: goto loop1; } } loop1: ; } finally { dbg.ExitSubRule( 1 ); } } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(51, 4); } finally { dbg.ExitRule( GrammarFileName, "prog" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "prog" public class stat_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "stat" // BuildOptions\\DebugGrammar.g3:53:0: stat : ( expr NEWLINE -> expr | ID '=' expr NEWLINE -> ^( '=' ID expr ) | func NEWLINE -> func | NEWLINE ->); private DebugGrammarParser.stat_return stat( ) { DebugGrammarParser.stat_return retval = new DebugGrammarParser.stat_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken NEWLINE3=null; IToken ID4=null; IToken char_literal5=null; IToken NEWLINE7=null; IToken NEWLINE9=null; IToken NEWLINE10=null; DebugGrammarParser.expr_return expr2 = default(DebugGrammarParser.expr_return); DebugGrammarParser.expr_return expr6 = default(DebugGrammarParser.expr_return); DebugGrammarParser.func_return func8 = default(DebugGrammarParser.func_return); CommonTree NEWLINE3_tree=null; CommonTree ID4_tree=null; CommonTree char_literal5_tree=null; CommonTree NEWLINE7_tree=null; CommonTree NEWLINE9_tree=null; CommonTree NEWLINE10_tree=null; RewriteRuleITokenStream stream_NEWLINE=new RewriteRuleITokenStream(adaptor,"token NEWLINE"); RewriteRuleITokenStream stream_ID=new RewriteRuleITokenStream(adaptor,"token ID"); RewriteRuleITokenStream stream_17=new RewriteRuleITokenStream(adaptor,"token 17"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); RewriteRuleSubtreeStream stream_func=new RewriteRuleSubtreeStream(adaptor,"rule func"); try { dbg.EnterRule( GrammarFileName, "stat" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 53, -1 ); try { // BuildOptions\\DebugGrammar.g3:53:9: ( expr NEWLINE -> expr | ID '=' expr NEWLINE -> ^( '=' ID expr ) | func NEWLINE -> func | NEWLINE ->) int alt2=4; try { dbg.EnterDecision( 2 ); try { isCyclicDecision = true; alt2 = dfa2.Predict(input); } catch ( NoViableAltException nvae ) { dbg.RecognitionException( nvae ); throw nvae; } } finally { dbg.ExitDecision( 2 ); } switch ( alt2 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:53:9: expr NEWLINE { dbg.Location( 53, 8 ); PushFollow(Follow._expr_in_stat70); expr2=expr(); state._fsp--; stream_expr.Add(expr2.Tree); dbg.Location( 53, 13 ); NEWLINE3=(IToken)Match(input,NEWLINE,Follow._NEWLINE_in_stat72); stream_NEWLINE.Add(NEWLINE3); { // AST REWRITE // elements: expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 53:41: -> expr { dbg.Location( 53, 43 ); adaptor.AddChild(root_0, stream_expr.NextTree()); } retval.tree = root_0; } } break; case 2: dbg.EnterAlt( 2 ); // BuildOptions\\DebugGrammar.g3:54:9: ID '=' expr NEWLINE { dbg.Location( 54, 8 ); ID4=(IToken)Match(input,ID,Follow._ID_in_stat105); stream_ID.Add(ID4); dbg.Location( 54, 11 ); char_literal5=(IToken)Match(input,17,Follow._17_in_stat107); stream_17.Add(char_literal5); dbg.Location( 54, 15 ); PushFollow(Follow._expr_in_stat109); expr6=expr(); state._fsp--; stream_expr.Add(expr6.Tree); dbg.Location( 54, 20 ); NEWLINE7=(IToken)Match(input,NEWLINE,Follow._NEWLINE_in_stat111); stream_NEWLINE.Add(NEWLINE7); { // AST REWRITE // elements: 17, ID, expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 54:41: -> ^( '=' ID expr ) { dbg.Location( 54, 43 ); // BuildOptions\\DebugGrammar.g3:54:44: ^( '=' ID expr ) { CommonTree root_1 = (CommonTree)adaptor.Nil(); dbg.Location( 54, 45 ); root_1 = (CommonTree)adaptor.BecomeRoot(stream_17.NextNode(), root_1); dbg.Location( 54, 49 ); adaptor.AddChild(root_1, stream_ID.NextNode()); dbg.Location( 54, 52 ); adaptor.AddChild(root_1, stream_expr.NextTree()); adaptor.AddChild(root_0, root_1); } } retval.tree = root_0; } } break; case 3: dbg.EnterAlt( 3 ); // BuildOptions\\DebugGrammar.g3:55:9: func NEWLINE { dbg.Location( 55, 8 ); PushFollow(Follow._func_in_stat143); func8=func(); state._fsp--; stream_func.Add(func8.Tree); dbg.Location( 55, 13 ); NEWLINE9=(IToken)Match(input,NEWLINE,Follow._NEWLINE_in_stat145); stream_NEWLINE.Add(NEWLINE9); { // AST REWRITE // elements: func // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 55:41: -> func { dbg.Location( 55, 43 ); adaptor.AddChild(root_0, stream_func.NextTree()); } retval.tree = root_0; } } break; case 4: dbg.EnterAlt( 4 ); // BuildOptions\\DebugGrammar.g3:56:9: NEWLINE { dbg.Location( 56, 8 ); NEWLINE10=(IToken)Match(input,NEWLINE,Follow._NEWLINE_in_stat178); stream_NEWLINE.Add(NEWLINE10); { // AST REWRITE // elements: // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 56:41: -> { dbg.Location( 57, 4 ); root_0 = null; } retval.tree = root_0; } } break; } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(57, 4); } finally { dbg.ExitRule( GrammarFileName, "stat" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "stat" public class func_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "func" // BuildOptions\\DebugGrammar.g3:59:0: func : ID '(' formalPar ')' '=' expr -> ^( FUNC ID formalPar expr ) ; private DebugGrammarParser.func_return func( ) { DebugGrammarParser.func_return retval = new DebugGrammarParser.func_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken ID11=null; IToken char_literal12=null; IToken char_literal14=null; IToken char_literal15=null; DebugGrammarParser.formalPar_return formalPar13 = default(DebugGrammarParser.formalPar_return); DebugGrammarParser.expr_return expr16 = default(DebugGrammarParser.expr_return); CommonTree ID11_tree=null; CommonTree char_literal12_tree=null; CommonTree char_literal14_tree=null; CommonTree char_literal15_tree=null; RewriteRuleITokenStream stream_ID=new RewriteRuleITokenStream(adaptor,"token ID"); RewriteRuleITokenStream stream_12=new RewriteRuleITokenStream(adaptor,"token 12"); RewriteRuleITokenStream stream_13=new RewriteRuleITokenStream(adaptor,"token 13"); RewriteRuleITokenStream stream_17=new RewriteRuleITokenStream(adaptor,"token 17"); RewriteRuleSubtreeStream stream_formalPar=new RewriteRuleSubtreeStream(adaptor,"rule formalPar"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { dbg.EnterRule( GrammarFileName, "func" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 59, -1 ); try { // BuildOptions\\DebugGrammar.g3:59:9: ( ID '(' formalPar ')' '=' expr -> ^( FUNC ID formalPar expr ) ) dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:59:9: ID '(' formalPar ')' '=' expr { dbg.Location( 59, 8 ); ID11=(IToken)Match(input,ID,Follow._ID_in_func219); stream_ID.Add(ID11); dbg.Location( 59, 12 ); char_literal12=(IToken)Match(input,12,Follow._12_in_func222); stream_12.Add(char_literal12); dbg.Location( 59, 16 ); PushFollow(Follow._formalPar_in_func224); formalPar13=formalPar(); state._fsp--; stream_formalPar.Add(formalPar13.Tree); dbg.Location( 59, 26 ); char_literal14=(IToken)Match(input,13,Follow._13_in_func226); stream_13.Add(char_literal14); dbg.Location( 59, 30 ); char_literal15=(IToken)Match(input,17,Follow._17_in_func228); stream_17.Add(char_literal15); dbg.Location( 59, 34 ); PushFollow(Follow._expr_in_func230); expr16=expr(); state._fsp--; stream_expr.Add(expr16.Tree); { // AST REWRITE // elements: ID, formalPar, expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 59:41: -> ^( FUNC ID formalPar expr ) { dbg.Location( 59, 43 ); // BuildOptions\\DebugGrammar.g3:59:44: ^( FUNC ID formalPar expr ) { CommonTree root_1 = (CommonTree)adaptor.Nil(); dbg.Location( 59, 45 ); root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(FUNC, "FUNC"), root_1); dbg.Location( 59, 50 ); adaptor.AddChild(root_1, stream_ID.NextNode()); dbg.Location( 59, 53 ); adaptor.AddChild(root_1, stream_formalPar.NextTree()); dbg.Location( 59, 63 ); adaptor.AddChild(root_1, stream_expr.NextTree()); adaptor.AddChild(root_0, root_1); } } retval.tree = root_0; } } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { functionDefinitions.Add(((CommonTree)retval.Tree)); } dbg.Location(60, 4); } finally { dbg.ExitRule( GrammarFileName, "func" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "func" public class formalPar_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "formalPar" // BuildOptions\\DebugGrammar.g3:65:0: formalPar : ( ID | INT ); private DebugGrammarParser.formalPar_return formalPar( ) { DebugGrammarParser.formalPar_return retval = new DebugGrammarParser.formalPar_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken set17=null; CommonTree set17_tree=null; try { dbg.EnterRule( GrammarFileName, "formalPar" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 65, -1 ); try { // BuildOptions\\DebugGrammar.g3:66:9: ( ID | INT ) dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3: { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 66, 8 ); set17=(IToken)input.LT(1); if ( (input.LA(1)>=ID && input.LA(1)<=INT) ) { input.Consume(); adaptor.AddChild(root_0, (CommonTree)adaptor.Create(set17)); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); dbg.RecognitionException( mse ); throw mse; } } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(68, 1); } finally { dbg.ExitRule( GrammarFileName, "formalPar" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "formalPar" public class expr_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "expr" // BuildOptions\\DebugGrammar.g3:73:0: expr : multExpr ( ( '+' | '-' ) multExpr )* ; private DebugGrammarParser.expr_return expr( ) { DebugGrammarParser.expr_return retval = new DebugGrammarParser.expr_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken char_literal19=null; IToken char_literal20=null; DebugGrammarParser.multExpr_return multExpr18 = default(DebugGrammarParser.multExpr_return); DebugGrammarParser.multExpr_return multExpr21 = default(DebugGrammarParser.multExpr_return); CommonTree char_literal19_tree=null; CommonTree char_literal20_tree=null; try { dbg.EnterRule( GrammarFileName, "expr" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 73, -1 ); try { // BuildOptions\\DebugGrammar.g3:73:9: ( multExpr ( ( '+' | '-' ) multExpr )* ) dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:73:9: multExpr ( ( '+' | '-' ) multExpr )* { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 73, 8 ); PushFollow(Follow._multExpr_in_expr288); multExpr18=multExpr(); state._fsp--; adaptor.AddChild(root_0, multExpr18.Tree); dbg.Location( 73, 17 ); // BuildOptions\\DebugGrammar.g3:73:18: ( ( '+' | '-' ) multExpr )* try { dbg.EnterSubRule( 4 ); for ( ; ; ) { int alt4=2; try { dbg.EnterDecision( 4 ); int LA4_0 = input.LA(1); if ( (LA4_0==10||LA4_0==16) ) { alt4=1; } } finally { dbg.ExitDecision( 4 ); } switch ( alt4 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:73:19: ( '+' | '-' ) multExpr { dbg.Location( 73, 18 ); // BuildOptions\\DebugGrammar.g3:73:19: ( '+' | '-' ) int alt3=2; try { dbg.EnterSubRule( 3 ); try { dbg.EnterDecision( 3 ); int LA3_0 = input.LA(1); if ( (LA3_0==16) ) { alt3=1; } else if ( (LA3_0==10) ) { alt3=2; } else { NoViableAltException nvae = new NoViableAltException("", 3, 0, input); dbg.RecognitionException( nvae ); throw nvae; } } finally { dbg.ExitDecision( 3 ); } switch ( alt3 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:73:20: '+' { dbg.Location( 73, 22 ); char_literal19=(IToken)Match(input,16,Follow._16_in_expr292); char_literal19_tree = (CommonTree)adaptor.Create(char_literal19); root_0 = (CommonTree)adaptor.BecomeRoot(char_literal19_tree, root_0); } break; case 2: dbg.EnterAlt( 2 ); // BuildOptions\\DebugGrammar.g3:73:25: '-' { dbg.Location( 73, 27 ); char_literal20=(IToken)Match(input,10,Follow._10_in_expr295); char_literal20_tree = (CommonTree)adaptor.Create(char_literal20); root_0 = (CommonTree)adaptor.BecomeRoot(char_literal20_tree, root_0); } break; } } finally { dbg.ExitSubRule( 3 ); } dbg.Location( 73, 30 ); PushFollow(Follow._multExpr_in_expr299); multExpr21=multExpr(); state._fsp--; adaptor.AddChild(root_0, multExpr21.Tree); } break; default: goto loop4; } } loop4: ; } finally { dbg.ExitSubRule( 4 ); } } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(74, 4); } finally { dbg.ExitRule( GrammarFileName, "expr" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "expr" public class multExpr_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "multExpr" // BuildOptions\\DebugGrammar.g3:76:0: multExpr : atom ( ( '*' | '/' | '%' ) atom )* ; private DebugGrammarParser.multExpr_return multExpr( ) { DebugGrammarParser.multExpr_return retval = new DebugGrammarParser.multExpr_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken set23=null; DebugGrammarParser.atom_return atom22 = default(DebugGrammarParser.atom_return); DebugGrammarParser.atom_return atom24 = default(DebugGrammarParser.atom_return); CommonTree set23_tree=null; try { dbg.EnterRule( GrammarFileName, "multExpr" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 76, -1 ); try { // BuildOptions\\DebugGrammar.g3:77:9: ( atom ( ( '*' | '/' | '%' ) atom )* ) dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:77:9: atom ( ( '*' | '/' | '%' ) atom )* { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 77, 8 ); PushFollow(Follow._atom_in_multExpr320); atom22=atom(); state._fsp--; adaptor.AddChild(root_0, atom22.Tree); dbg.Location( 77, 13 ); // BuildOptions\\DebugGrammar.g3:77:14: ( ( '*' | '/' | '%' ) atom )* try { dbg.EnterSubRule( 5 ); for ( ; ; ) { int alt5=2; try { dbg.EnterDecision( 5 ); int LA5_0 = input.LA(1); if ( (LA5_0==11||(LA5_0>=14 && LA5_0<=15)) ) { alt5=1; } } finally { dbg.ExitDecision( 5 ); } switch ( alt5 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:77:15: ( '*' | '/' | '%' ) atom { dbg.Location( 77, 27 ); set23=(IToken)input.LT(1); set23=(IToken)input.LT(1); if ( input.LA(1)==11||(input.LA(1)>=14 && input.LA(1)<=15) ) { input.Consume(); root_0 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(set23), root_0); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); dbg.RecognitionException( mse ); throw mse; } dbg.Location( 77, 29 ); PushFollow(Follow._atom_in_multExpr332); atom24=atom(); state._fsp--; adaptor.AddChild(root_0, atom24.Tree); } break; default: goto loop5; } } loop5: ; } finally { dbg.ExitSubRule( 5 ); } } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(78, 4); } finally { dbg.ExitRule( GrammarFileName, "multExpr" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "multExpr" public class atom_return : ParserRuleReturnScope { internal CommonTree tree; public override object Tree { get { return tree; } } } // $ANTLR start "atom" // BuildOptions\\DebugGrammar.g3:80:0: atom : ( INT | ID | '(' expr ')' -> expr | ID '(' expr ')' -> ^( CALL ID expr ) ); private DebugGrammarParser.atom_return atom( ) { DebugGrammarParser.atom_return retval = new DebugGrammarParser.atom_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken INT25=null; IToken ID26=null; IToken char_literal27=null; IToken char_literal29=null; IToken ID30=null; IToken char_literal31=null; IToken char_literal33=null; DebugGrammarParser.expr_return expr28 = default(DebugGrammarParser.expr_return); DebugGrammarParser.expr_return expr32 = default(DebugGrammarParser.expr_return); CommonTree INT25_tree=null; CommonTree ID26_tree=null; CommonTree char_literal27_tree=null; CommonTree char_literal29_tree=null; CommonTree ID30_tree=null; CommonTree char_literal31_tree=null; CommonTree char_literal33_tree=null; RewriteRuleITokenStream stream_12=new RewriteRuleITokenStream(adaptor,"token 12"); RewriteRuleITokenStream stream_13=new RewriteRuleITokenStream(adaptor,"token 13"); RewriteRuleITokenStream stream_ID=new RewriteRuleITokenStream(adaptor,"token ID"); RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr"); try { dbg.EnterRule( GrammarFileName, "atom" ); if ( RuleLevel == 0 ) { dbg.Commence(); } IncRuleLevel(); dbg.Location( 80, -1 ); try { // BuildOptions\\DebugGrammar.g3:80:9: ( INT | ID | '(' expr ')' -> expr | ID '(' expr ')' -> ^( CALL ID expr ) ) int alt6=4; try { dbg.EnterDecision( 6 ); switch ( input.LA(1) ) { case INT: { alt6=1; } break; case ID: { int LA6_2 = input.LA(2); if ( (LA6_2==12) ) { alt6=4; } else if ( (LA6_2==NEWLINE||(LA6_2>=10 && LA6_2<=11)||(LA6_2>=13 && LA6_2<=16)) ) { alt6=2; } else { NoViableAltException nvae = new NoViableAltException("", 6, 2, input); dbg.RecognitionException( nvae ); throw nvae; } } break; case 12: { alt6=3; } break; default: { NoViableAltException nvae = new NoViableAltException("", 6, 0, input); dbg.RecognitionException( nvae ); throw nvae; } } } finally { dbg.ExitDecision( 6 ); } switch ( alt6 ) { case 1: dbg.EnterAlt( 1 ); // BuildOptions\\DebugGrammar.g3:80:9: INT { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 80, 8 ); INT25=(IToken)Match(input,INT,Follow._INT_in_atom348); INT25_tree = (CommonTree)adaptor.Create(INT25); adaptor.AddChild(root_0, INT25_tree); } break; case 2: dbg.EnterAlt( 2 ); // BuildOptions\\DebugGrammar.g3:81:9: ID { root_0 = (CommonTree)adaptor.Nil(); dbg.Location( 81, 8 ); ID26=(IToken)Match(input,ID,Follow._ID_in_atom358); ID26_tree = (CommonTree)adaptor.Create(ID26); adaptor.AddChild(root_0, ID26_tree); } break; case 3: dbg.EnterAlt( 3 ); // BuildOptions\\DebugGrammar.g3:82:9: '(' expr ')' { dbg.Location( 82, 8 ); char_literal27=(IToken)Match(input,12,Follow._12_in_atom368); stream_12.Add(char_literal27); dbg.Location( 82, 12 ); PushFollow(Follow._expr_in_atom370); expr28=expr(); state._fsp--; stream_expr.Add(expr28.Tree); dbg.Location( 82, 17 ); char_literal29=(IToken)Match(input,13,Follow._13_in_atom372); stream_13.Add(char_literal29); { // AST REWRITE // elements: expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 82:25: -> expr { dbg.Location( 82, 27 ); adaptor.AddChild(root_0, stream_expr.NextTree()); } retval.tree = root_0; } } break; case 4: dbg.EnterAlt( 4 ); // BuildOptions\\DebugGrammar.g3:83:9: ID '(' expr ')' { dbg.Location( 83, 8 ); ID30=(IToken)Match(input,ID,Follow._ID_in_atom389); stream_ID.Add(ID30); dbg.Location( 83, 11 ); char_literal31=(IToken)Match(input,12,Follow._12_in_atom391); stream_12.Add(char_literal31); dbg.Location( 83, 15 ); PushFollow(Follow._expr_in_atom393); expr32=expr(); state._fsp--; stream_expr.Add(expr32.Tree); dbg.Location( 83, 20 ); char_literal33=(IToken)Match(input,13,Follow._13_in_atom395); stream_13.Add(char_literal33); { // AST REWRITE // elements: ID, expr // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (CommonTree)adaptor.Nil(); // 83:25: -> ^( CALL ID expr ) { dbg.Location( 83, 27 ); // BuildOptions\\DebugGrammar.g3:83:28: ^( CALL ID expr ) { CommonTree root_1 = (CommonTree)adaptor.Nil(); dbg.Location( 83, 29 ); root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(CALL, "CALL"), root_1); dbg.Location( 83, 34 ); adaptor.AddChild(root_1, stream_ID.NextNode()); dbg.Location( 83, 37 ); adaptor.AddChild(root_1, stream_expr.NextTree()); adaptor.AddChild(root_0, root_1); } } retval.tree = root_0; } } break; } retval.stop = input.LT(-1); retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop); } catch ( RecognitionException re ) { ReportError(re); Recover(input,re); retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re); } finally { } dbg.Location(84, 4); } finally { dbg.ExitRule( GrammarFileName, "atom" ); DecRuleLevel(); if ( RuleLevel == 0 ) { dbg.Terminate(); } } return retval; } // $ANTLR end "atom" #endregion Rules #region DFA DFA2 dfa2; protected override void InitDFAs() { base.InitDFAs(); dfa2 = new DFA2( this ); } class DFA2 : DFA { const string DFA2_eotS = "\xA\xFFFF"; const string DFA2_eofS = "\xA\xFFFF"; const string DFA2_minS = "\x1\x6\x1\xFFFF\x1\x8\x1\xFFFF\x1\x6\x1\xFFFF\x2\xA\x1\x8\x1\xFFFF"; const string DFA2_maxS = "\x1\xC\x1\xFFFF\x1\x11\x1\xFFFF\x1\xC\x1\xFFFF\x2\x10\x1\x11\x1\xFFFF"; const string DFA2_acceptS = "\x1\xFFFF\x1\x1\x1\xFFFF\x1\x4\x1\xFFFF\x1\x2\x3\xFFFF\x1\x3"; const string DFA2_specialS = "\xA\xFFFF}>"; static readonly string[] DFA2_transitionS = { "\x1\x2\x1\x1\x1\x3\x3\xFFFF\x1\x1", "", "\x1\x1\x1\xFFFF\x2\x1\x1\x4\x1\xFFFF\x3\x1\x1\x5", "", "\x1\x7\x1\x6\x4\xFFFF\x1\x1", "", "\x2\x1\x1\xFFFF\x1\x8\x3\x1", "\x3\x1\x1\x8\x3\x1", "\x1\x1\x1\xFFFF\x2\x1\x2\xFFFF\x3\x1\x1\x9", "" }; static readonly short[] DFA2_eot = DFA.UnpackEncodedString(DFA2_eotS); static readonly short[] DFA2_eof = DFA.UnpackEncodedString(DFA2_eofS); static readonly char[] DFA2_min = DFA.UnpackEncodedStringToUnsignedChars(DFA2_minS); static readonly char[] DFA2_max = DFA.UnpackEncodedStringToUnsignedChars(DFA2_maxS); static readonly short[] DFA2_accept = DFA.UnpackEncodedString(DFA2_acceptS); static readonly short[] DFA2_special = DFA.UnpackEncodedString(DFA2_specialS); static readonly short[][] DFA2_transition; static DFA2() { int numStates = DFA2_transitionS.Length; DFA2_transition = new short[numStates][]; for ( int i=0; i < numStates; i++ ) { DFA2_transition[i] = DFA.UnpackEncodedString(DFA2_transitionS[i]); } } public DFA2( BaseRecognizer recognizer ) { this.recognizer = recognizer; this.decisionNumber = 2; this.eot = DFA2_eot; this.eof = DFA2_eof; this.min = DFA2_min; this.max = DFA2_max; this.accept = DFA2_accept; this.special = DFA2_special; this.transition = DFA2_transition; } public override string GetDescription() { return "53:0: stat : ( expr NEWLINE -> expr | ID '=' expr NEWLINE -> ^( '=' ID expr ) | func NEWLINE -> func | NEWLINE ->);"; } public override void Error( NoViableAltException nvae ) { ((DebugParser)recognizer).dbg.RecognitionException( nvae ); } } #endregion DFA #region Follow sets private static class Follow { public static readonly BitSet _stat_in_prog53 = new BitSet(new ulong[]{0x11C2UL}); public static readonly BitSet _expr_in_stat70 = new BitSet(new ulong[]{0x100UL}); public static readonly BitSet _NEWLINE_in_stat72 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _ID_in_stat105 = new BitSet(new ulong[]{0x20000UL}); public static readonly BitSet _17_in_stat107 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _expr_in_stat109 = new BitSet(new ulong[]{0x100UL}); public static readonly BitSet _NEWLINE_in_stat111 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _func_in_stat143 = new BitSet(new ulong[]{0x100UL}); public static readonly BitSet _NEWLINE_in_stat145 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _NEWLINE_in_stat178 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _ID_in_func219 = new BitSet(new ulong[]{0x1000UL}); public static readonly BitSet _12_in_func222 = new BitSet(new ulong[]{0xC0UL}); public static readonly BitSet _formalPar_in_func224 = new BitSet(new ulong[]{0x2000UL}); public static readonly BitSet _13_in_func226 = new BitSet(new ulong[]{0x20000UL}); public static readonly BitSet _17_in_func228 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _expr_in_func230 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _set_in_formalPar267 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _multExpr_in_expr288 = new BitSet(new ulong[]{0x10402UL}); public static readonly BitSet _16_in_expr292 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _10_in_expr295 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _multExpr_in_expr299 = new BitSet(new ulong[]{0x10402UL}); public static readonly BitSet _atom_in_multExpr320 = new BitSet(new ulong[]{0xC802UL}); public static readonly BitSet _set_in_multExpr323 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _atom_in_multExpr332 = new BitSet(new ulong[]{0xC802UL}); public static readonly BitSet _INT_in_atom348 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _ID_in_atom358 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _12_in_atom368 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _expr_in_atom370 = new BitSet(new ulong[]{0x2000UL}); public static readonly BitSet _13_in_atom372 = new BitSet(new ulong[]{0x2UL}); public static readonly BitSet _ID_in_atom389 = new BitSet(new ulong[]{0x1000UL}); public static readonly BitSet _12_in_atom391 = new BitSet(new ulong[]{0x10C0UL}); public static readonly BitSet _expr_in_atom393 = new BitSet(new ulong[]{0x2000UL}); public static readonly BitSet _13_in_atom395 = new BitSet(new ulong[]{0x2UL}); } #endregion Follow sets }