// throws RecognitionException [1] // $ANTLR start conditionalExpression // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1261:1: conditionalExpression : ( logicalOrExpression -> logicalOrExpression ) ( QUESTION conditionalSubExpression -> ^( QUESTION $conditionalExpression conditionalSubExpression ) )? ; public conditionalExpression_return conditionalExpression() { conditionalExpression_return retval = new conditionalExpression_return(); retval.start = input.LT(1); int conditionalExpression_StartIndex = input.Index(); CommonTree root_0 = null; CommonToken QUESTION232 = null; logicalOrExpression_return logicalOrExpression231 = null; conditionalSubExpression_return conditionalSubExpression233 = null; CommonTree QUESTION232_tree=null; RewriteRuleTokenStream stream_QUESTION = new RewriteRuleTokenStream(adaptor,"token QUESTION"); RewriteRuleSubtreeStream stream_logicalOrExpression = new RewriteRuleSubtreeStream(adaptor,"rule logicalOrExpression"); RewriteRuleSubtreeStream stream_conditionalSubExpression = new RewriteRuleSubtreeStream(adaptor,"rule conditionalSubExpression"); try { if ( (backtracking > 0) && AlreadyParsedRule(input, 89) ) { return retval; } // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1262:4: ( ( logicalOrExpression -> logicalOrExpression ) ( QUESTION conditionalSubExpression -> ^( QUESTION $conditionalExpression conditionalSubExpression ) )? ) // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1262:4: ( logicalOrExpression -> logicalOrExpression ) ( QUESTION conditionalSubExpression -> ^( QUESTION $conditionalExpression conditionalSubExpression ) )? { // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1262:4: ( logicalOrExpression -> logicalOrExpression ) // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1262:5: logicalOrExpression { PushFollow(FOLLOW_logicalOrExpression_in_conditionalExpression4317); logicalOrExpression231 = logicalOrExpression(); followingStackPointer_--; if (failed) return retval; if ( backtracking==0 ) stream_logicalOrExpression.Add(logicalOrExpression231.Tree); // AST REWRITE // elements: logicalOrExpression // token labels: // rule labels: retval // token list labels: // rule list labels: if ( backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null)); root_0 = (CommonTree)adaptor.GetNilNode(); // 1262:25: -> logicalOrExpression { adaptor.AddChild(root_0, stream_logicalOrExpression.Next()); } } } // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1263:3: ( QUESTION conditionalSubExpression -> ^( QUESTION $conditionalExpression conditionalSubExpression ) )? int alt68 = 2; int LA68_0 = input.LA(1); if ( (LA68_0 == QUESTION) ) { alt68 = 1; } switch (alt68) { case 1 : // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1264:4: QUESTION conditionalSubExpression { QUESTION232 = (CommonToken)input.LT(1); Match(input,QUESTION,FOLLOW_QUESTION_in_conditionalExpression4331); if (failed) return retval; if ( backtracking==0 ) stream_QUESTION.Add(QUESTION232); if ( backtracking == 0 ) { if(options.SpaceBetweenOperators) buffer.Append(" "); buffer.Append("?"); if(options.SpaceBetweenOperators) buffer.Append(" "); } PushFollow(FOLLOW_conditionalSubExpression_in_conditionalExpression4338); conditionalSubExpression233 = conditionalSubExpression(); followingStackPointer_--; if (failed) return retval; if ( backtracking==0 ) stream_conditionalSubExpression.Add(conditionalSubExpression233.Tree); // AST REWRITE // elements: conditionalSubExpression, QUESTION, conditionalExpression // token labels: // rule labels: retval // token list labels: // rule list labels: if ( backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "token retval", (retval!=null ? retval.Tree : null)); root_0 = (CommonTree)adaptor.GetNilNode(); // 1270:4: -> ^( QUESTION $conditionalExpression conditionalSubExpression ) { // C:\\Users\\sephiroth\\Documents\\Visual Studio 2005\\Projects\\CodeReformatter\\CodeReformatter\\AS.g:1270:7: ^( QUESTION $conditionalExpression conditionalSubExpression ) { CommonTree root_1 = (CommonTree)adaptor.GetNilNode(); root_1 = (CommonTree)adaptor.BecomeRoot(stream_QUESTION.Next(), root_1); adaptor.AddChild(root_1, stream_retval.Next()); adaptor.AddChild(root_1, stream_conditionalSubExpression.Next()); adaptor.AddChild(root_0, root_1); } } } } break; } } retval.stop = input.LT(-1); if ( backtracking==0 ) { retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, retval.start, retval.stop); } } catch (NoViableAltException e) { Debug.WriteLine("NoValiable alt: token=" + e.Token + " (decision=" + e.decisionNumber + " state " + e.stateNumber + ")" + " decision=<<" + e.grammarDecisionDescription + ">>"); throw e; } catch (MismatchedTokenException e) { Debug.WriteLine("[" + e.Line + ":" + e.Index + "]: " + e.Message + ". Unexpected " + e.UnexpectedType.ToString() + "( expecting: "+ e.expecting + " )"); throw e; } catch(RecognitionException e) { Debug.WriteLine("RecognitionException: " + e); throw e; } finally { if ( backtracking > 0 ) { Memoize(input, 89, conditionalExpression_StartIndex); } } return retval; }
// $ANTLR start conditionalExpression // C:\\Documents and Settings\\Sébastien Ros\\Mes documents\\Développement\\NLinq\\NLinq.g:73:1: conditionalExpression returns [Expression value] : left= booleanAndExpression ( '||' right= booleanAndExpression )* ; public conditionalExpression_return conditionalExpression() // throws RecognitionException [1] { conditionalExpression_return retval = new conditionalExpression_return(); retval.start = input.LT(1); CommonTree root_0 = null; IToken string_literal9 = null; booleanAndExpression_return left = null; booleanAndExpression_return right = null; CommonTree string_literal9_tree=null; BinaryExpressionType type = BinaryExpressionType.Unknown; try { // C:\\Documents and Settings\\Sébastien Ros\\Mes documents\\Développement\\NLinq\\NLinq.g:77:2: (left= booleanAndExpression ( '||' right= booleanAndExpression )* ) // C:\\Documents and Settings\\Sébastien Ros\\Mes documents\\Développement\\NLinq\\NLinq.g:77:4: left= booleanAndExpression ( '||' right= booleanAndExpression )* { root_0 = (CommonTree)adaptor.GetNilNode(); PushFollow(FOLLOW_booleanAndExpression_in_conditionalExpression151); left = booleanAndExpression(); followingStackPointer_--; adaptor.AddChild(root_0, left.Tree); retval.value = left.value; // C:\\Documents and Settings\\Sébastien Ros\\Mes documents\\Développement\\NLinq\\NLinq.g:77:56: ( '||' right= booleanAndExpression )* do { int alt3 = 2; int LA3_0 = input.LA(1); if ( (LA3_0 == 19) ) { alt3 = 1; } switch (alt3) { case 1 : // C:\\Documents and Settings\\Sébastien Ros\\Mes documents\\Développement\\NLinq\\NLinq.g:78:4: '||' right= booleanAndExpression { string_literal9 = (IToken)input.LT(1); Match(input,19,FOLLOW_19_in_conditionalExpression160); string_literal9_tree = (CommonTree)adaptor.Create(string_literal9); adaptor.AddChild(root_0, string_literal9_tree); type = BinaryExpressionType.Or; PushFollow(FOLLOW_booleanAndExpression_in_conditionalExpression170); right = booleanAndExpression(); followingStackPointer_--; adaptor.AddChild(root_0, right.Tree); retval.value = new BinaryExpression(type, retval.value, right.value); } break; default: goto loop3; } } while (true); loop3: ; // Stops C# compiler whinging that label 'loop3' has no statements } 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); } finally { } return retval; }