0

我在使用 flex 做词法分析器时玩得很开心。问题是,我的代码编辑器没有为文件的语法着色,而且我的规则似乎有错误。由于我不太确定如何在区间内使用单引号和双引号,我想我会与您分享该片段:

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

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

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

4

1 回答 1

2

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

[^\\\'\n]+ {
    wchar_t* string;
    utf8_decode(yytext, &string);
    yyextra->append(string);
    free(string);
}
于 2010-01-18T05:51:26.353 回答