Я пытаюсь написать спецификацию EBNF для простого выражения условия утверждений аналогично тому, что в случае испытаний заявления, например: aaa = "xxx"
или aaa != "xxx" AND bbb = "yyy"
или более сложного со скобками, как aaa = "xxx" AND bbb = "yyy" AND (ccc = "zzz" OR ddd = "www")
EBNF для простых условий
The spec, я до сих пор придумал это, и мой вопрос - это правильно?
<cond> ::= <id> <rel_op> <value>
| <cond> <op> <cond>
| "(" <cond> ")"
<op> ::= AND
| OR
<rel_op> ::= "="
| "!="
<value> ::= <quot> <char>* <quot>
<quot> ::= "
Побочное примечание - я новичок в E/BNF и планирование по реализации синтаксического анализатора в C# на основе этой спецификации, чтобы заменить старый анализатор, который как спагетти и воняет.