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: 无法识别的规则

如果我取消注释第二个版本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 回答