Я пытаюсь создать синтаксический анализатор ANSI C, используя Superpower , но я много борюсь с некоторыми синтаксическими анализаторами, особенно с рекурсивными.
Например,Грамматика 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 грамматика в BNF