我想制作一个解析器/词法分析器来编译我的模板引擎。我正在使用PHP_ParserGenerator和PHP_LexerGenerator。正如他们的文档中所解释的,我已经创建了一个词法分析器并且它正在工作。但是当尝试编写解析器时,我还没有理解他们的文档。我阅读了 Lemon 解析器文档,但我的代码仍然无法正常工作。:(
我发现这个示例包含词法分析器/解析器的“Hello world”,我阅读了 XenForo、vBulletin、Smarty 的解析器/词法分析器。在“Hello world”示例中,它很简单,但是当我尝试像在 Xenforo 中那样对语法规则进行分组时,TAG_OPEN tag_attributes TAG_SELF_CLOSE
我的解析器无法正常工作。
/* 0 */ "start ::= in",
/* 1 */ "in ::= in PLAIN_TEXT",
/* 2 */ "in ::= in curly",
/* 3 */ "in ::= in tag",
/* 4 */ "in ::= in TAG_COMMENT",
/* 5 */ "in ::= in TAG_CLOSE",
/* 6 */ "in ::=",
/* 7 */ "tag ::= TAG_OPEN tag_attributes TAG_SELF_CLOSE",
/* 8 */ "tag ::= TAG_OPEN tag_attributes TAG_END",
/* 9 */ "tag_attributes ::= tag_attributes TAG_ATTRIBUTE DOUBLE_QUOTE quoted_inner DOUBLE_QUOTE",
/* 10 */ "tag_attributes ::= tag_attributes TAG_ATTRIBUTE SINGLE_QUOTE quoted_inner SINGLE_QUOTE",
这是Smarty的y文件:smarty_internal_templateparser.y
您能否帮助我了解如何像 Xenforo 一样对语法规则进行分组?
这是柠檬解析器文档