2009-05-29 2 views

ответ

1

От spirit introduction:

шаблоны выражений позволяют аппроксимировать синтаксис расширенного Backus-нормальной форме (EBNF) полностью в C++.

Таким образом, вы можете почти записи равнине EBNF, нет необходимости в переводчика.

Я не так хорошо знаком с духом, чтобы знать, как именно синтаксис отличается, но если различия духа C++ EBNF и реального EBNF незначительны простого sed сценарий может быть достаточно.
Если вы не правы, вы можете написать парсер для духа, который понимает EBNF, а затем использовать AST для создания кода на C++, который является представлением о духе этого AST.

+2

Для больших EBNF (http://grammatica.percederberg.net/grammar/asn1/asn1.grammar), даже если вы почти идентичны, это все равно боль. Нет необходимости иметь его, но это было бы полезно. – chila

+1

Если ваша грамматика такая большая, вы, вероятно, не хотите использовать для нее Дух;) –

+0

@Bill: почему бы и нет? –