我正在编写一种语法,需要一些用目标语言编写的自定义代码。添加例如相当容易。
@parser::members {
}
问题是我的目标是多种语言,而且我还没有找到一种方法来定位多种语言而无需复制+粘贴整个语法。
有没有办法不使用复制+粘贴或外部预处理器?
答案 0 :(得分:1)
我担心没有解决方案。根据定义,动作代码是用目标语言编写的,因为它直接从语法复制到生成的文件中。如果您有目标语言都可以处理#ifdef #endif
(例如,C,C ++和Obj-C),那么您可以使用它来分隔单个代码部分。否则,您可以使用带有占位符的基本语法,并在预编译步骤(生成解析器/词法分析器)中处理,并用实际目标代码替换占位符。这甚至使语法更清晰。