public Statement for_c(Block container)
        {
            Statement statement = null;
            try
            {
                Expression expression;
                Expression expression2;
                WhileStatement statement3;
                Block block;
                string str;
                switch (this.LA(1))
                {
                    case 0x2d:
                        this.declaration_statement(container);
                        if (base.inputState.guessing == 0)
                        {
                            statement = container.get_Statements().get_Item(-1) as DeclarationStatement;
                            if (statement != null)
                            {
                                statement.Annotate("PrivateScope");
                            }
                        }
                        break;

                    case 12:
                    case 15:
                    case 0x13:
                    case 0x1b:
                    case 0x1d:
                    case 0x27:
                    case 40:
                    case 0x2a:
                    case 0x2c:
                    case 0x3b:
                    case 60:
                    case 0x3d:
                    case 0x3f:
                    case 0x44:
                    case 0x4f:
                    case 80:
                    case 0x52:
                    case 0x58:
                    case 0x67:
                    case 0x69:
                    case 0x6a:
                    case 0x6b:
                    case 0x6c:
                    case 0x6d:
                        this.expression_statement(container);
                        break;

                    case 0x4d:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                this.match(0x4d);
                switch (this.LA(1))
                {
                    case 12:
                    case 15:
                    case 0x13:
                    case 0x1b:
                    case 0x1d:
                    case 0x27:
                    case 40:
                    case 0x2a:
                    case 0x2c:
                    case 0x3b:
                    case 60:
                    case 0x3d:
                    case 0x3f:
                    case 0x44:
                    case 0x4f:
                    case 80:
                    case 0x52:
                    case 0x58:
                    case 0x67:
                    case 0x69:
                    case 0x6a:
                    case 0x6b:
                    case 0x6c:
                    case 0x6d:
                        expression = this.expression();
                        break;

                    case 0x4d:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                this.match(0x4d);
                switch (this.LA(1))
                {
                    case 12:
                    case 15:
                    case 0x13:
                    case 0x1b:
                    case 0x1d:
                    case 0x27:
                    case 40:
                    case 0x2a:
                    case 0x2c:
                    case 0x3b:
                    case 60:
                    case 0x3d:
                    case 0x3f:
                    case 0x44:
                    case 0x4f:
                    case 80:
                    case 0x52:
                    case 0x58:
                    case 0x67:
                    case 0x69:
                    case 0x6a:
                    case 0x6b:
                    case 0x6c:
                    case 0x6d:
                        expression2 = this.assignment_expression();
                        break;

                    case 0x40:
                        break;

                    default:
                        throw new NoViableAltException(this.LT(1), this.getFilename());
                }
                if (base.inputState.guessing == 0)
                {
                    WhileStatement statement2;
                    WhileStatement statement1 = statement2 = new WhileStatement();
                    statement2.set_Condition(expression);
                    statement3 = statement2;
                    if (expression == null)
                    {
                        BoolLiteralExpression expression3;
                        BoolLiteralExpression expression1 = expression3 = new BoolLiteralExpression();
                        expression3.set_Value(true);
                        statement3.set_Condition(expression3);
                    }
                    block = statement3.get_Block();
                    statement = statement3;
                    str = this.SetUpLoopLabel(statement3);
                    container.Add(statement);
                    this.EnterLoop(statement3);
                }
                this.match(0x40);
                this.compound_or_single_stmt(block);
                if (base.inputState.guessing != 0)
                {
                    return statement;
                }
                this.LeaveLoop(statement3);
                if (this.IsLabelInUse(statement3))
                {
                    LabelStatement statement4;
                    LabelStatement statement5 = statement4 = new LabelStatement();
                    statement4.set_Name(str);
                    block.Add(statement4);
                }
                if (expression2 != null)
                {
                    block.Add(expression2);
                }
            }
            catch (RecognitionException exception)
            {
                if (base.inputState.guessing != 0)
                {
                    throw;
                }
                this.reportError(exception);
                this.recover(exception, tokenSet_15_);
                return statement;
            }
            return statement;
        }
        public BoolLiteralExpression bool_literal()
        {
            BoolLiteralExpression expression = null;
            IToken token = null;
            IToken token2 = null;
            try
            {
                switch (this.LA(1))
                {
                    case 0x2a:
                        token = this.LT(1);
                        this.match(0x2a);
                        if (base.inputState.guessing == 0)
                        {
                            BoolLiteralExpression expression2;
                            BoolLiteralExpression expression1 = expression2 = new BoolLiteralExpression(ToLexicalInfo(token));
                            expression2.set_Value(true);
                            expression = expression2;
                        }
                        return expression;

                    case 15:
                        token2 = this.LT(1);
                        this.match(15);
                        if (base.inputState.guessing == 0)
                        {
                            BoolLiteralExpression expression3;
                            BoolLiteralExpression expression4 = expression3 = new BoolLiteralExpression(ToLexicalInfo(token2));
                            expression3.set_Value(false);
                            expression = expression3;
                        }
                        return expression;
                }
                throw new NoViableAltException(this.LT(1), this.getFilename());
            }
            catch (RecognitionException exception)
            {
                if (base.inputState.guessing != 0)
                {
                    throw;
                }
                this.reportError(exception);
                this.recover(exception, tokenSet_20_);
                return expression;
            }
            return expression;
        }