这个(f)lex片段中的语法错误在哪里?

时间:2010-01-18 05:19:36

标签: lex

我正在玩一个使用flex的词法分析器。问题是,我的代码编辑器没有为文件的语法着色,似乎我的规则中有错误。由于我不太确定如何在间隔内使用单引号和双引号,我想我会与你分享该片段:

[^\\\'\n]+
{
    wchar_t* string;
    utf8_decode(yytext, &string);
    yyextra->append(string);
    free(string);
}

Flex告诉我utf8_decode行上存在“无法识别的规则”。如果我删除整个规则,事情看起来又好了。

谁能告诉我这里做错了什么?

1 个答案:

答案 0 :(得分:2)

动作必须与模式在同一行开始。所以使用

[^\\\'\n]+ {
    wchar_t* string;
    utf8_decode(yytext, &string);
    yyextra->append(string);
    free(string);
}