如果我正在为具有一系列语句的类 c 语言制作语法,那么定义语法的最标准方法是什么?
我的想法是做这样的事情:
<program> ::= <statement>
<statement> ::= <statement-head><statement-tail>
<statement-head> ::= <if-statement> | <var-declaration> | <assignment> | <whatever>
<statement-tail> ::= ; | ;<statement>
但这对我来说有点笨拙。我也考虑过制作
<program> ::= <statement>*
或者
<statement> ::= <statement-head> ; | <sequence>
<sequence> ::= <statement> <statement>
类型制作。
是否有标准或公认的方式来做到这一点。我希望我的 AST 尽可能干净。