我必须使用javaCC制作一个JavaScript解释器,我写了所有的语法规则,但是选择冲突太多了!!我试过LOOKAHEAD,但我读到了LOOKAHEAD并不总能解决问题,所以我该怎么办?它真的很糟糕我的意思是我想要声明一个变量..就像(var x;)例如,它不起作用..我很确定选择冲突是问题所在。 例如:
void FunctionDeclaration():
{
}
{
< FUNCTION > Identifier() "(" (ParameterList())? ")" "{" (FunctionBody())? "}"
}
void FunctionBody():
{
}
{
LOOKAHEAD(3) FunctionDeclaration()
| (Statement())+
}
void Statement():
{
}
{
LOOKAHEAD(3)
Block()
| VariableStatement()
| EmptyStatement()
| LOOKAHEAD(2) ExpressionStatement()
| IfStatement()
| FunctionCall()
| IterationStatement()
| ContinueStatement()
| BreakStatement()
| ReturnStatement()
| WithStatement()
| LabelledStatement()
| SwitchStatement()
| ThrowStatement()
| TryStatement()
| DebuggerStatement()
}
由于这个原因,我不能在这里写一个ReturnStatement。
我该怎么办?
我已经在这里尝试了LOOKAHEAD ..没有用。