LPEG - "规则可以是左递归的"错误,尽管是一个可终止的语法

时间:2018-04-21 13:33:39

标签: preprocessor left-recursion lpeg

我试图使用LPEG为GLSL构建预处理器。我设法让#define和#undef语句没有问题,但是当我尝试使用#ifdef语句时,我的问题出现了。

我的想法是我可以构建一个封装着色器的规则,以#ifdef和#endif语句为边界,如下所示:

S -> include | define | ifdef | code
ifdef -> "#ifdef" + var + S + "#endif"

显然这个语法是可终止的,因为ifdef规则需要在递归调用之前捕获#ifdef和宏名称。然而,LPEG不同意,声称这条规则可以保留递归"。

有谁知道我能做些什么呢?

感谢。

0 个答案:

没有答案