2

以下では:

space           ([ \t\f\r])+         
opt_space       ([ \t\f\r])*         
cpp             ^{opt_space}#{opt_space} 
word            [A-Za-z_][A-Za-z_0-9]*
arg_macro       {cpp}define{space}{word}
/*arg_macro       ^{opt_space}#{opt_space}define{space}{word}*/

%%
{arg_macro}     ;
%%

エラー メッセージが表示される

test.l:9: 認識されないルール

の 2 番目のバージョンのコメントを外しarg_macro、最初のバージョンのコメントを外すと、エラー メッセージは消えます。

理由はありますか?

4

1 に答える 1

1

cpp 定義からを削除^し、arg_macro 定義に配置すると、問題ありません。

space           ([ \t\f\r])+
opt_space       ([ \t\f\r])*
cpp             {opt_space}#{opt_space}
word            [A-Za-z_][A-Za-z_0-9]*
arg_macro       ^{cpp}define{space}{word}
于 2010-07-14T21:58:40.093 に答える