如果我爲具有一系列語句的類C語言編寫語法,那麼定義語法的最常用方法是什麼?用於語句順序的BNF語法
我的想法是做這樣的事情:
<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儘可能地乾淨。
我喜歡這個。我唯一的問題是我不確定大多數解析器生成器(我使用TinyPG)是否支持/ *空* /生產。我的印象是它不那麼猶太教。 – captncraig 2009-11-04 18:02:50
沒關係。在看完C語法後,艾登發佈了它可以是: :: = | –
captncraig
2009-11-04 18:05:44
我一直在使用我的Bison語法:-)實際上,我從O'Reilly的書籍* lex和yacc *中獲得它,作者系統地使用/ * empty * /來強調空的規則真的存在爲了某件事。如果您的解析器生成器不支持這種評論,那麼您當然可以放棄它。 – 2009-11-04 18:13:51