Flex/Lex 无法识别的括号规则
Flex/Lex unrecognized rule for paranthesis'
%{
%}
%%
'*' {return 0;}
'(' {return 1;}
')' {return 2;}
%%
int yywrap(){}
上面的示例代码。它给出的错误消息为:
zort.l:7: unrecognized rule
zort.l:8: unrecognized rule
zort.l:8: unrecognized rule
zort.l:8: unrecognized rule
它只给出括号字符的错误。不会给其他字符任何错误。是什么原因? paranthesis 是例外吗?如何解决?
对于flex
模式,单引号和双引号是不一样的。当前,您的第一条规则表示您要匹配单引号 ('
)、零次或多次 (*
),然后是另一个单引号 '
。其他规则没有意义。
假设您想要匹配文字星号和括号,请尝试使用双引号:
%%
"*" {return 0;}
"(" {return 1;}
")" {return 2;}
%%
manual 有更多关于什么可以指定为模式(它是正则表达式的扩展形式)的信息。
%{
%}
%%
'*' {return 0;}
'(' {return 1;}
')' {return 2;}
%%
int yywrap(){}
上面的示例代码。它给出的错误消息为:
zort.l:7: unrecognized rule
zort.l:8: unrecognized rule
zort.l:8: unrecognized rule
zort.l:8: unrecognized rule
它只给出括号字符的错误。不会给其他字符任何错误。是什么原因? paranthesis 是例外吗?如何解决?
对于flex
模式,单引号和双引号是不一样的。当前,您的第一条规则表示您要匹配单引号 ('
)、零次或多次 (*
),然后是另一个单引号 '
。其他规则没有意义。
假设您想要匹配文字星号和括号,请尝试使用双引号:
%%
"*" {return 0;}
"(" {return 1;}
")" {return 2;}
%%
manual 有更多关于什么可以指定为模式(它是正则表达式的扩展形式)的信息。