【问题标题】:javacc if statementjavacc if 语句
【发布时间】:2012-06-01 14:39:24
【问题描述】:

我在javacc中写了if语句,如果条件为假,不知道如何忽略body 首先我声明了两个对象类 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 >)?
            }

【问题讨论】:

  • 不,你不需要,你想编译它。你是在解析,而不是在执行。
  • @EJP 你能告诉我更清楚吗?我知道这会构建一个解析,但它不能正常工作。
  • 仅当您认为它应该“在条件为假时跳过块的其余部分”。您将解析与执行混淆了。解析器必须处理整个程序,而不仅仅是您喜欢的部分。我不知道如何说得更清楚。

标签: if-statement javacc


【解决方案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 >)?
        }`

【讨论】:

    猜你喜欢
    • 2013-12-29
    • 1970-01-01
    • 2015-02-06
    • 2016-03-26
    • 1970-01-01
    • 2016-03-02
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多