public void switch_statement(Block container)
 {
     IToken token = null;
     IToken token2 = null;
     IToken token3 = null;
     IToken token4 = null;
     try
     {
         Block block;
         MacroStatement statement4;
         Block block2;
         token = this.LT(1);
         this.match(0x31);
         Expression expression = this.paren_expression();
         if (base.inputState.guessing == 0)
         {
             MacroStatement statement;
             MacroStatement statement1 = statement = new MacroStatement(ToLexicalInfo(token));
             statement.set_Name(this.MacroName(token.getText()));
             MacroStatement statement2 = statement;
             statement2.get_Arguments().Add(expression);
             block = statement2.get_Body();
             container.Add(statement2);
         }
         this.match(0x3d);
     Label_0088:
         if (this.LA(1) == 50)
         {
             token2 = this.LT(1);
             this.match(50);
             expression = this.expression();
             this.match(0x42);
             if (base.inputState.guessing == 0)
             {
                 MacroStatement statement3;
                 MacroStatement statement6 = statement3 = new MacroStatement(ToLexicalInfo(token2));
                 statement3.set_Name(token2.getText());
                 statement4 = statement3;
                 statement4.get_Arguments().Add(expression);
                 block2 = statement4.get_Body();
                 block.Add(statement4);
             }
             while (this.LA(1) == 50)
             {
                 token3 = this.LT(1);
                 this.match(50);
                 expression = this.expression();
                 this.match(0x42);
                 if (base.inputState.guessing == 0)
                 {
                     statement4.get_Arguments().Add(expression);
                 }
             }
             int num = 0;
             while (true)
             {
                 if (tokenSet_2_.member(this.LA(1)))
                 {
                     this.statement(block2);
                 }
                 else
                 {
                     if (num < 1)
                     {
                         throw new NoViableAltException(this.LT(1), this.getFilename());
                     }
                     goto Label_0088;
                 }
                 num++;
             }
         }
         int num2 = this.LA(1);
         if (num2 == 0x33)
         {
             token4 = this.LT(1);
             this.match(0x33);
             this.match(0x42);
             if (base.inputState.guessing == 0)
             {
                 MacroStatement statement5;
                 MacroStatement statement7 = statement5 = new MacroStatement(ToLexicalInfo(token4));
                 statement5.set_Name(token4.getText());
                 statement4 = statement5;
                 block2 = statement4.get_Body();
                 block.Add(statement4);
             }
             int num3 = 0;
             while (true)
             {
                 if (tokenSet_2_.member(this.LA(1)))
                 {
                     this.statement(block2);
                 }
                 else
                 {
                     if (num3 < 1)
                     {
                         throw new NoViableAltException(this.LT(1), this.getFilename());
                     }
                     goto Label_02C9;
                 }
                 num3++;
             }
         }
         if (num2 != 0x3e)
         {
             throw new NoViableAltException(this.LT(1), this.getFilename());
         }
     Label_02C9:
         this.match(0x3e);
         while ((this.LA(1) == 0x4d) && tokenSet_15_.member(this.LA(2)))
         {
             this.match(0x4d);
         }
     }
     catch (RecognitionException exception)
     {
         if (base.inputState.guessing != 0)
         {
             throw;
         }
         this.reportError(exception);
         this.recover(exception, tokenSet_15_);
     }
 }
 public void macro_application_block(Block container)
 {
     MacroStatement statement = new MacroStatement();
     ExpressionCollection ec = statement.get_Arguments();
     Block b = statement.get_Body();
     try
     {
         Token token = this.member();
         bool flag = false;
         if ((this.LA(1) == 0x3d) && tokenSet_13_.member(this.LA(2)))
         {
             int num = this.mark();
             flag = true;
             base.inputState.guessing++;
             try
             {
                 this.match(0x3d);
             }
             catch (RecognitionException)
             {
                 flag = false;
             }
             this.rewind(num);
             base.inputState.guessing--;
         }
         if (flag)
         {
             this.compound_statement(b);
         }
         else
         {
             if (!tokenSet_16_.member(this.LA(1)) || !tokenSet_44_.member(this.LA(2)))
             {
                 throw new NoViableAltException(this.LT(1), this.getFilename());
             }
             this.expression_list(ec);
             this.compound_statement(b);
         }
         if (base.inputState.guessing == 0)
         {
             statement.set_LexicalInfo(ToLexicalInfo(token));
             statement.set_Name(token.getText());
             container.Add(statement);
         }
     }
     catch (RecognitionException exception2)
     {
         if (base.inputState.guessing != 0)
         {
             throw;
         }
         this.reportError(exception2);
         this.recover(exception2, tokenSet_15_);
     }
 }