我正在玩一个使用flex的词法分析器。问题是,我的代码编辑器没有为文件的语法着色,似乎我的规则中有错误。由于我不太确定如何在间隔内使用单引号和双引号,我想我会与你分享该片段:
[^\\\'\n]+
{
wchar_t* string;
utf8_decode(yytext, &string);
yyextra->append(string);
free(string);
}
Flex告诉我utf8_decode
行上存在“无法识别的规则”。如果我删除整个规则,事情看起来又好了。
谁能告诉我这里做错了什么?
答案 0 :(得分:2)
动作必须与模式在同一行开始。所以使用
[^\\\'\n]+ {
wchar_t* string;
utf8_decode(yytext, &string);
yyextra->append(string);
free(string);
}