令牌在Antlr4中被忽略

时间:2015-08-13 14:13:42

标签: parsing preprocessor antlr

我目前正在尝试使用Antlr解析c文件中的preprocessor defines。目前我只想获取定义namevalue(如果有的话)。

这大概是我当前代码的样子......

statement : ppdefine (LINEBREAK | defValue);
defValue : DEFINEVALUE;
ppdefine : PREPROCESS ;

DEFINEVALUE : VALUE;
PREPROCESS : PPDEFINE;            
PPDEFINE : PP  WS* DEFINER WS+ VALUE;

//Some basic types...
TEXT : (VALUE|STAR|LETTERSIGN|WS)+ -> skip;
LINEBREAK : [\r]? [\n] ->skip;
PP : [#] -> skip;
DEFINER : 'define';
VALUE : (LETTER|NUMBER)+ -> skip;

....  //Several more lines that look similar

当我在我的文件上运行此操作时,我只会收到"#define" + name作为令牌,如果有值,则会丢失该值。如何在另一个令牌中收到该值?

如果您想要一个示例文件,请尝试:

#define DEF1 1
#define DEF2 2   

0 个答案:

没有答案