ANTLR,C风格的宏定义

时间:2010-07-27 18:31:35

标签: macros antlr

在ANTLR中实现宏定义的最简单(或最好)方法是什么? 我想要的是一种类似于C / C ++语言中存在的机制:

#define FUNCTION(a, b) a+b
#define PI 3.1415

我应该如何以及何时进行更换?

1 个答案:

答案 0 :(得分:1)

如果您正在使用C风格的预处理器,那么您将需要单独进行预处理(这是该术语的含义 - 在您的标准lex / parse传递之前的处理过程)

你究竟是怎么做传递取决于你 - 你可以将你的输入文本传递给antlr中的一个语法,取结果并将其交给另一个语法等。

或者你可以创建单独的程序,它们可以在stdin上输入并输出到stdout,或者在管道之间传递文本等。

一旦解决了问题,只需查看关键字即可。检查您在#define表中看到的每个令牌,如果匹配,请将其替换为您拥有的定义。您还必须能够解析函数参数,但这不应该增加太多的工作量。