Java杯,如何在生成的解析器文件中每次减少后注入函数



我使用.cup文件根据特定的派生规则生成解析器。

每次reduce之后,我都想调用一个函数,是否可以在.cup文件中的任何位置定义它,以便在每次reduce后将其注入生成的代码中?

显然如此,如果您在github上使用Jochen Hoenecke维护的Java CUP版本。引用手册(来自该版本,第2.2节末尾(:

after reduce {: ... :};

定义每当减少生产规则时执行的代码。数组符号包含当前生成规则的所有终端符号和非终端符号。RESULT可用于访问和修改由生成规则创建的非终结符的值。示例用法:


after reduce {:
int lineNumber = symbols[0].left + 1;
if (RESULT instanceof AST_Node) {
((AST_Node) RESULT).lineNumber = lineNumber
}
:}

根据更改日志,该功能于2019年添加。

相关内容

  • 没有找到相关文章

最新更新