LPEG - ошибка "Правило может быть леворекурсивной", несмотря на то, что это грамматика, которую можно прекратить
Я пытаюсь использовать LPEG для создания препроцессора для GLSL. Мне удалось заставить работать операторы #define и #undef без проблем, но мои проблемы возникают, когда я пытаюсь работать с операторами #ifdef.
Я думал, что смогу создать правило, которое будет инкапсулировать шейдер, ограниченный операторами #ifdef и #endif, например:
S -> include | define | ifdef | code
ifdef -> "#ifdef" + var + S + "#endif"
Ясно, что эта грамматика может быть прекращена, поскольку правило ifdef требует записи #ifdef и имени макроса перед рекурсивным вызовом. Однако LPEG не согласен, утверждая, что это правило "может быть рекурсивным".
Кто-нибудь знает, что я могу с этим сделать?
Благодарю.