【发布时间】:2016-09-28 04:32:46
【问题描述】:
在编译(使用 re2c 处理)示例 Recognizing integers: the sentinel method 时,我得到:
re2c : error : line 16, column 9: syntax error
它似乎在抱怨“*”。以下是我的 01_recognizing_integers.re 文件(第 16 行没有注释除外):
#include <stdio.h>
static const char *lex(const char *YYCURSOR)
{
const char *YYMARKER;
/*!re2c
re2c:define:YYCTYPE = char;
re2c:yyfill:enable = 0;
end = "\x00";
bin = '0b' [01]+;
oct = "0" [0-7]*;
dec = [1-9][0-9]*;
hex = '0x' [0-9a-fA-F]+;
* { return "err"; } // line 16
bin end { return "bin"; }
oct end { return "oct"; }
dec end { return "dec"; }
hex end { return "hex"; }
*/
}
int main(int argc, char **argv)
{
for (int i = 1; i < argc; ++i) {
printf ("%s: %s\n", lex(argv[i]), argv[i]);
}
return 0;
}
如果我删除带有星号的那一行,那么就没有错误,生成输出并且编译器编译它并且程序可以工作(除了我从测试中删除了错误样本)。样本错了吗?如何修复它以使其按预期工作?
【问题讨论】:
-
我为什么投了反对票?如果我不知道哪里出了问题,我就无法改进未来的问题。
-
发布错误时,您应始终提供详细信息(平台、程序版本、程序如何被调用、确切的错误消息等)。这样人们就有机会提供帮助。请注意,投反对票的不是我。
-
谢谢你,@skvadrik。我相信你不是你。你的解释有帮助。我想说我怀疑有人对我所做的一切投反对票只是因为那是我。我不确定这是否正在发生。
标签: c++ syntax-error re2c