public override IToken NextToken() { IToken token = base.NextToken(); if (token != null && token.Type == EOF) { Debug.Assert(!(token is NadirToken)); token = new NadirToken(token); } return token; }
public override IToken LT(int k) { IToken token = base.LT(k); if (token != null && token.Type == NadirLexer.EOF) { Debug.Assert(!(token is NadirToken)); token = new NadirToken(token); } return token; }
public void ChangeNodeType(int newType) { NadirToken token = new NadirToken(this.Token); token.Type = newType; token.Text = NadirParser.tokenNames[newType]; this.token = token; }
public void ChangeNodeType(int newType, string text) { NadirToken token = new NadirToken(this.Token); token.Type = newType; token.Text = text; this.token = token; }
// $ANTLR start "oneVariableDefinition" // C:\\nadir\\nadir\\Nadir\\Parsing\\Nadir.g:240:1: oneVariableDefinition[NadirToken constSpec, typeSpec_return rTypeSpec] : ID ( '=' e= expression )? ->; public NadirParser.oneVariableDefinition_return oneVariableDefinition(NadirToken constSpec, typeSpec_return rTypeSpec) // throws RecognitionException [1] { NadirParser.oneVariableDefinition_return retval = new NadirParser.oneVariableDefinition_return(); retval.Start = input.LT(1); NadirAST root_0 = null; NadirToken ID89 = null; NadirToken char_literal90 = null; NadirParser.expression_return e = default(NadirParser.expression_return); NadirAST ID89_tree=null; NadirAST char_literal90_tree=null; RewriteRuleTokenStream stream_ID = new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleTokenStream stream_176 = new RewriteRuleTokenStream(adaptor,"token 176"); RewriteRuleSubtreeStream stream_expression = new RewriteRuleSubtreeStream(adaptor,"rule expression"); try { // C:\\nadir\\nadir\\Nadir\\Parsing\\Nadir.g:241:9: ( ID ( '=' e= expression )? ->) // C:\\nadir\\nadir\\Nadir\\Parsing\\Nadir.g:241:13: ID ( '=' e= expression )? { ID89=(NadirToken)Match(input,ID,FOLLOW_ID_in_oneVariableDefinition4830); if (state.failed) return retval; if ( (state.backtracking==0) ) stream_ID.Add(ID89); // C:\\nadir\\nadir\\Nadir\\Parsing\\Nadir.g:241:16: ( '=' e= expression )? int alt21 = 2; int LA21_0 = input.LA(1); if ( (LA21_0 == 176) ) { alt21 = 1; } switch (alt21) { case 1 : // C:\\nadir\\nadir\\Nadir\\Parsing\\Nadir.g:241:17: '=' e= expression { char_literal90=(NadirToken)Match(input,176,FOLLOW_176_in_oneVariableDefinition4833); if (state.failed) return retval; if ( (state.backtracking==0) ) stream_176.Add(char_literal90); PushFollow(FOLLOW_expression_in_oneVariableDefinition4837); e = expression(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) stream_expression.Add(e.Tree); } break; } // AST REWRITE // elements: // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: if ( (state.backtracking==0) ) { retval.Tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); root_0 = (NadirAST)adaptor.GetNilNode(); // 241:77: -> { adaptor.AddChild(root_0, NewVariableDefinition(ID89, constSpec, rTypeSpec, e) ); } retval.Tree = root_0;retval.Tree = root_0;} } retval.Stop = input.LT(-1); if ( (state.backtracking==0) ) { retval.Tree = (NadirAST)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);} } // We do this manually to specifically catch the NON RecognitionExceptions that might // be thrown, like RewriteEarlyExitExceptions. Note we use 're' as the exception variable name // as that's what Antlr has been using all along, and thus won't conflict with other locals. catch (NadirRuntimeException re) { throw new LocatedRuntimeException(re, (IToken)retval.Start, input.LT(-1)); // input.LT(-1) is inspired by the clause below } catch (RecognitionException re) { ReportError(re); Recover(input,re); // The following is taken verbatim from what was being emitted automatically before // we took over manual control here. We're not certain what it does. // // "Conversion of the second argument necessary, but harmless" retval.Tree = (NadirAST)adaptor.ErrorNode(input, /*token start*/(IToken)retval.Start, /*token stop*/input.LT(-1), re); } catch (Exception re) { throw new LocatedException(re, (IToken)retval.Start, input.LT(-1)); // input.LT(-1) is inspired by the clause above } finally { } return retval; }