我目前正在尝试使用Antlr解析c文件中的preprocessor defines
。目前我只想获取定义name
和value
(如果有的话)。
这大概是我当前代码的样子......
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