EBNF适用于简单条件

时间:2015-04-15 12:10:59

标签: bnf ebnf

我正在尝试为if语句测试中的条件语句的简单表达式编写EBNF规范,例如:aaa = "xxx"aaa != "xxx" AND bbb = "yyy"或更复杂的括号,如{{ 1}}

到目前为止我提出的规范是这个,而我的问题是 - 这是正确的吗?

aaa = "xxx" AND bbb = "yyy" AND ( ccc = "zzz" OR ddd = "www" )

旁注 - 我是E / BNF的新手,并计划在C#中基于此规范实现解析器,以替换类似意大利面条和臭味的旧解析器。

1 个答案:

答案 0 :(得分:1)

这就是我提出的,并且也成功实施了:

<cond> := <rel_cond> {<op> <cond>} 
    | <parenth_cond> {<op> <cond>}

<rel_cond> := <id> <rel_op> <value>

<rel_op> := "=" | "!=" | "~" | "!~"

<parenth_cond> := "(" <cond> ")"

<op> := AND | OR

<id> := <char>* 

<value> := <quot> <char>* <quot>

<quot> := "