【发布时间】: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