私はXTextでプリプロセッサ命令のルールを書こうとしています。現在、私はこの方法のようにそれを実装: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';
私は本当にこのソリューションを好きではないが、それは私が試したすべてのものの作品だけです。プリプロセッサの命令のためのルールを書くよりスマートな方法がありますか?
プリプロセッサの命令タイプ(#define)とその値を区別するためにPREPROCESSOR_DEFINE_TYPEルールを分割する方法を教えてください。
おかげで、私はこれらのルールをキャプチャしたいものをたくさん
EDIT
は、典型的なプリプロセッサ命令です。たとえば、次のように持っていいだろう何
#include "fileName"
#import <fileName>
#define IDENTIFIER
#define IDENTIFIER WHATEVER + YOU - WANT !
#undef IDENTIFIER
#else
#endif
は
ラファエロ全て異なる場合に、その値からプリプロセッサタイプを分割することです。
具体的な構文の例をいくつか記述してください。少なくともこの文法の断片では、何を達成したいのか分かりにくいです。 –