【发布时间】:2015-04-15 12:10:59
【问题描述】:
我正在尝试为类似于 if 语句测试中的条件语句的简单表达式编写 EBNF 规范,例如:aaa = "xxx" 或 aaa != "xxx" AND bbb = "yyy" 或更复杂的括号,如 aaa = "xxx" AND bbb = "yyy" AND ( ccc = "zzz" OR ddd = "www" )
到目前为止我提出的规范是这样的,我的问题是 - 它是否正确?
<cond> ::= <id> <rel_op> <value>
| <cond> <op> <cond>
| "(" <cond> ")"
<op> ::= AND
| OR
<rel_op> ::= "="
| "!="
<value> ::= <quot> <char>* <quot>
<quot> ::= "
旁注 - 我是 E/BNF 的新手,并计划根据此规范在 C# 中实现解析器,以替换像意大利面条一样臭的旧解析器。
【问题讨论】: