Exemple #1
0
 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;
     }
Exemple #2
0
 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;
     }
Exemple #3
0
 public void ChangeNodeType(int newType)
     {
     NadirToken token = new NadirToken(this.Token);
     token.Type = newType;
     token.Text = NadirParser.tokenNames[newType];
     this.token = token;
     }
Exemple #4
0
 public void ChangeNodeType(int newType, string text)
     {
     NadirToken token = new NadirToken(this.Token);
     token.Type = newType;
     token.Text = text;
     this.token = token;
     }
Exemple #5
0
    // $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;
    }