使用Javacc解析抽象语法树中的嵌套括号

时间:2013-04-11 16:28:00

标签: expression grammar abstract-syntax-tree javacc

我正在尝试解析我的解析器中的a*(4+5)等表达式来构建抽象语法树。

void addSub() : {}
{
    mulDiv() ((<ADD> mulDiv()  )| (<SUB> mulDiv() ) )*
}
void mulDiv()  : {}
{
    factor() ((<MUL> factor() )|( <DIV> factor() ))*
}
void factor() : {}
{
     (numeralLit() | booleanLit() | LOOKAHEAD(2) functionCallExp() | idUse())
     //TODO add () support
}

但是,如果我添加一个表达式,如

void parantheses() :{}
{
<LPAR>
addSub()
<RPAR>
}

并将其放在factor()中,我收到一个错误,说明发生了递归(parantheses使用addSub())。我如何进行结构以防止递归呢?

0 个答案:

没有答案