Macros ANTLR,C样式的宏定义

Macros ANTLR,C样式的宏定义,macros,antlr,Macros,Antlr,在ANTLR中实现宏定义最简单(或最好)的方法是什么? 我想要的是一种类似于C/C++语言中的机制: #define FUNCTION(a, b) a+b #define PI 3.1415 我应该如何以及何时执行替换?如果您正在以C的方式执行预处理器,那么您将需要为预处理执行单独的第一个过程(这就是这个术语的意思——在标准lex/parse过程之前的处理过程) 具体如何传递取决于您-您可以将输入文本传递给antlr中的一个语法,将结果传递给另一个语法,等等 或者,您可以创建单独的程序,这些程

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

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

我应该如何以及何时执行替换?

如果您正在以C的方式执行预处理器,那么您将需要为预处理执行单独的第一个过程(这就是这个术语的意思——在标准lex/parse过程之前的处理过程)

具体如何传递取决于您-您可以将输入文本传递给antlr中的一个语法,将结果传递给另一个语法,等等

或者,您可以创建单独的程序,这些程序能够在
stdin
上进行输入并输出到
stdout
,或者在管道之间传递文本,等等


一旦你解决了这个问题,它是一个简单的问题,寻找你的关键字。对照
#define
s表检查您看到的每个标记,如果匹配,则用您拥有的定义替换它。您还必须能够解析函数参数,但这不会增加太多工作。

为什么不使用现有的预处理器,如M4?