左递归定义(BNF)

时间:2018-12-21 11:02:22

标签: parsing grammar superpower

我正在尝试使用Superpower创建ANSI C解析器,但是我在使用某些解析器(特别是递归解析器)方面费了很多力气。

例如,我要遵循的ANSI C语法定义:

<unary-expression> ::= <postfix-expression>
                     | ++ <unary-expression>
                     | -- <unary-expression> 
                     | <unary-operator> <cast-expression>
                     | sizeof <unary-expression>
                     | sizeof <type-name>

<postfix-expression> ::= <primary-expression>
                       | <postfix-expression> [ <expression> ]
                       | <postfix-expression> ( {<assignment-expression>}* )
                       | <postfix-expression> . <identifier>
                       | <postfix-expression> -> <identifier>
                       | <postfix-expression> ++
                       | <postfix-expression> --

<primary-expression> ::= <identifier>
                       | <constant>
                       | <string>
                       | ( <expression> )

是否存在为此类表达创建组合子的一般规则?

我要遵循的语法是:ANSI C Grammar in BNF

0 个答案:

没有答案