我刚接触lex并且想尝试看看我是否可以尝试制作一个使用正则表达式在C文件中查找注释的文件。
%%
(/\*([^*]|[^]|(\*+([^*/]|[^])))*\*+/)|(//.*){
return 5;
}
. ;
%%
int yywrap(void)
{
return1;
}
所以这里的想法是,每次评论时,它都会“返回5”,否则,没有任何反应。
问题是,正则表达式未被识别,我遇到错误:
第3行:无法识别的规则 第3行:无法识别的规则 第3行:无法识别的规则 第3行:无法识别的规则 ...等
任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:1)
在(f)lex正则表达式中,与标准Posix正则表达式一样,您可以在字符类中包含] 作为类中的第一个字符。 (无论你是否使用正([...]
)或否定([^...]
)字符类,都是如此。)
所以第一个[^]
启动一个字符类,然后由下一个]
终止,下一个字符类未终止。我不清楚你期望[^]
的意思,所以我无法提供其他建议。
此外,在操作之前需要一个空格,以便定义正则表达式的结尾。