我正在尝试为 XText 中的预处理器指令编写规则。目前我是这样实现的:
preproc:
type=PREPROCESSOR_INCLUDE_TYPE val=(STRING | PREPROCESSOR_INCLUDE_VAL)|
type=PREPROCESSOR_DEFINE_TYPE |
type=PREPROCESSOR_SINGLE_PARAM_TYPE val=ID|
type=PREPROCESSOR_NONE_PARAM_TYPE
;
terminal PREPROCESSOR_INCLUDE_TYPE: '#include'| '#import';
terminal PREPROCESSOR_INCLUDE_VAL: ' '+ '<'->'>';
terminal PREPROCESSOR_DEFINE_TYPE: '#define' -> '\n';
terminal PREPROCESSOR_SINGLE_PARAM_TYPE: '#undef' |'#ifdef' |'#ifndef' |'#pragma';
terminal PREPROCESSOR_NONE_PARAM_TYPE: '#else' | '#endif';
我不是很喜欢这个解决方案,但它是我尝试过的所有解决方案中唯一有效的解决方案。有一种更聪明的方法可以为预处理器指令编写规则吗?
我如何拆分 PREPROCESSOR_DEFINE_TYPE 规则以将预处理器指令类型(#define)与其值分开?
多谢
编辑
我想用这些规则捕捉的是典型的预处理器指令。例如:
#include "fileName"
#import <fileName>
#define IDENTIFIER
#define IDENTIFIER WHATEVER + YOU - WANT !
#undef IDENTIFIER
#else
#endif
在所有不同的情况下,最好将预处理器类型与其值分开
拉斐尔。