parsing - 如何在简单语法中添加括号作为最高优先级?

标签 parsing grammar context-free-grammar parentheses operator-precedence

我正在尝试在我的语法中添加两件事:

  1. 一元减号,即“-”,和

  2. 括号

这是到目前为止我的语法:

<comp>  ::= <expr> | <comp> <op0> <expr>
<expr>  ::= <term> | <expr> <op1> <term>
<term>  ::= <darg> | <term> <op2> <darg>
<darg>  ::= <digit> | <darg> <digit>
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<op0>   ::= > | < | =< | => | =
<op1>   ::= + | -
<op2>   ::= * | /

我已经尝试了一切,但无法解决这个问题。如何使一元减号处于最高优先级,然后是括号,然后是所描述的其余运算符?

最佳答案

更改<term>使用<fred>而不是<darg>并定义

<fred> ::= -<fred> | (<comp>) | <darg>

关于parsing - 如何在简单语法中添加括号作为最高优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554752/

相关文章:

javascript - Firefox DOM解析器问题

ruby - 以编程方式从字符串派生正则表达式

grammar - 如何检查这个语法是否有歧义?

parsing - 左关联运算符能否以自上而下的 LL(1) 解析器可以理解的方式表达?

html - 使用 hxselect 在 HTML 中按 ID 标签搜索

ruby-on-rails - 用于处理 RSS/ATOM 提要的 Rails 库?

java - XmlPullParser 解析内部标记

javascript - 如何允许用户通过检查文本框中的某些规则来插入语法方程

computer-science - 非正规语言与正规语言的串联总是不正规吗?

haskell - Haskell 中的谓词逻辑