【发布时间】:2018-12-04 06:59:05
【问题描述】:
我知道求幂比一元减号具有更高的优先级。但是,如果我基于它构建一个表达式解析器,我仍然无法解析像 2—-3 这样的表达式。为了处理这些问题,我发现我还需要在要素生产规则中添加一元减处理,该规则比指数高一个优先级。这是通常如何处理一元减号和幂运算的方式吗?我没有在网上或书中找到任何关于这种特殊情况的内容。我想知道使幂运算和一元运算符具有相同的优先级是否有帮助?
我正在手工制作一个递归下降解析器,我尝试将幂和一元生产规则合并在一起,但它似乎不起作用。以下 EBNF 起作用的是什么
factor = '(' expression ')' | variable | number | '-' factor
power = factor { '^' factor }
unaryTerm = ['-' | '+'] power
term = unaryTerm { factorOp unaryTerm }
expression = term { termOp term }
termOp = '+' | '-'
factorOp = '*' | '/'
【问题讨论】:
标签: expression context-free-grammar ebnf