0

我在 javacc 中写了 if 语句,如果条件为假,不知道如何忽略主体首先我声明了两个对象类 Token 和布尔变量,接下来我检查什么返回方法条件(),接下来我想跳过块的其余部分当条件为假时。怎么做?

void ifElse() :
            {
              Token start;
              Token next;
              boolean cond = false;
            }
            {
              {
                start = token;
              }
              < IF > < LB> cond = condition() < RB> < LP>
              {
                if (cond == false)
                {
                  String tok = (String) token.image;
                  while (tok.equals("}"))
                  {
                    token = token.next;
                  }

                }
              }
              (
                ifElse()
              | declaration()
              )*

              < RP> 
              (< ELSE > < LP> < RP >)?
            }
4

1 回答 1

1

我已经重新配置了您的代码,它几乎可以正常工作。避开身体但不停止。

 `void ifElse() :
        {
          boolean cond = false;
        }
        {
          < IF > < LB> cond = condition() < RB> < LP>
          {
            if (cond == false)
            {

              while (!token.image.equals("}"))
              {
                token = getNextToken();
              }

            }
          }
          (
            ifElse()
          | declaration()
          )*

          < RP> 
          (< ELSE > < LP> < RP >)?
        }`
于 2012-06-06T10:56:45.280 回答