NCalcParser.logicalExpression C# (CSharp) Method

logicalExpression() public method

public logicalExpression ( ) : NCalcParser.logicalExpression_return,
return NCalcParser.logicalExpression_return,
    public NCalcParser.logicalExpression_return logicalExpression()
    {
        NCalcParser.logicalExpression_return retval = new NCalcParser.logicalExpression_return();
        retval.Start = input.LT(1);

        CommonTree root_0 = null;

        IToken char_literal3 = null;
        IToken char_literal4 = null;
        NCalcParser.conditionalExpression_return left = null;

        NCalcParser.conditionalExpression_return middle = null;

        NCalcParser.conditionalExpression_return right = null;

        CommonTree char_literal3_tree=null;
        CommonTree char_literal4_tree=null;

        try
        {
            // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:82:2: (left= conditionalExpression ( '?' middle= conditionalExpression ':' right= conditionalExpression )? )
            // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:82:4: left= conditionalExpression ( '?' middle= conditionalExpression ':' right= conditionalExpression )?
            {
                root_0 = (CommonTree)adaptor.GetNilNode();

                PushFollow(FOLLOW_conditionalExpression_in_logicalExpression78);
                left = conditionalExpression();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, left.Tree);
                 retval.value =  ((left != null) ? left.value : null);
                // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:82:57: ( '?' middle= conditionalExpression ':' right= conditionalExpression )?
                int alt1 = 2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0 == 19) )
                {
                    alt1 = 1;
                }
                switch (alt1)
                {
                    case 1 :
                        // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:82:59: '?' middle= conditionalExpression ':' right= conditionalExpression
                        {
                            char_literal3=(IToken)Match(input,19,FOLLOW_19_in_logicalExpression84);
                                char_literal3_tree = (CommonTree)adaptor.Create(char_literal3);
                                adaptor.AddChild(root_0, char_literal3_tree);

                            PushFollow(FOLLOW_conditionalExpression_in_logicalExpression88);
                            middle = conditionalExpression();
                            state.followingStackPointer--;

                            adaptor.AddChild(root_0, middle.Tree);
                            char_literal4=(IToken)Match(input,20,FOLLOW_20_in_logicalExpression90);
                                char_literal4_tree = (CommonTree)adaptor.Create(char_literal4);
                                adaptor.AddChild(root_0, char_literal4_tree);

                            PushFollow(FOLLOW_conditionalExpression_in_logicalExpression94);
                            right = conditionalExpression();
                            state.followingStackPointer--;

                            adaptor.AddChild(root_0, right.Tree);
                             retval.value =  new TernaryExpression(((left != null) ? left.value : null), ((middle != null) ? middle.value : null), ((right != null) ? right.value : null));

                        }
                        break;

                }

            }

            retval.Stop = input.LT(-1);

                retval.Tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        // Conversion of the second argument necessary, but harmless
        retval.Tree = (CommonTree)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally
        {
        }
        return retval;
    }