语法分析师的优先级

时间:2015-07-13 16:06:05

标签: syntax antlr4

<exp> → <term> ASSIGN <exp> | <term> 
<term> → <term> EXPONENT <fact> | <term> ADDOP <fact> | <fact> 
<fact> → <opeand> RELOP <operand> | <operand> 
<operand> → LB <exp> RB | ID 

那么在这种情况下,哪一个具有最高,最低优先级,哪一个具有与另一个运算符相同的优先级? (ASSIGN,EXPONENT,ADDOP,RELOP)

1 个答案:

答案 0 :(得分:0)

Antlr规则没有定义运算符优先级,因为它的规则匹配只是从提供的输入文本的文字序列开始。

相反,运算符优先级通常在用于分析生成的分析树时应用的用户提供的逻辑中定义。也就是说,给定一个表示解析器规则的解析树节点,例如,匹配表单

x = a * b + c 

节点的存在仅表示已匹配必要的符号序列。然后,访问该节点的解析树访问者中实现的逻辑可以自由定义任何所需的相对运算符优先级。