If statement javacc if语句
我用javacc编写了if语句,如果条件为false,我不知道如何忽略主体 首先声明两个对象类标记和布尔变量,然后检查返回方法condition(),然后在condition为false时跳过块的其余部分。怎么做If statement javacc if语句,if-statement,javacc,If Statement,Javacc,我用javacc编写了if语句,如果条件为false,我不知道如何忽略主体 首先声明两个对象类标记和布尔变量,然后检查返回方法condition(),然后在condition为false时跳过块的其余部分。怎么做 void ifElse() : { Token start; Token next; boolean cond = false; }
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 >)?
}
void ifElse():
{
令牌启动;
下一步;
布尔cond=false;
}
{
{
开始=令牌;
}
cond=condition()
{
如果(cond==false)
{
字符串tok=(字符串)token.image;
而(tok.equals(“}”))
{
token=token.next;
}
}
}
(
ifElse()
|声明()
)*
我已重新配置了您的代码,它几乎可以正常工作。避开身体但不停止
`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 >)?
}`
`void ifElse():
{
布尔cond=false;
}
{
cond=condition()
{
如果(cond==false)
{
而(!token.image.equals(“}”))
{
token=getNextToken();
}
}
}
(
ifElse()
|声明()
)*
()?
}`
不,您不需要,您需要编译它。您正在解析,而不是执行。@EJP您能更清楚地告诉我吗?我知道这会构建一个解析,但它不能正常工作。只有在您认为它应该“在条件为false时跳过块的其余部分”的情况下。您将解析与执行混为一谈。解析器必须处理整个程序,而不仅仅是您喜欢的位。我不知道怎么说得更清楚。