【发布时间】:2020-09-13 17:48:23
【问题描述】:
我希望 Packcc 解析器生成器“$0s”或“$0e”变量在解析器操作中抛出一个 int,因为这些变量代表输入中的一个位置。
我做了一个最小的解析器,打印单词最后一个字符的位置。
word <- [a-z]+[\n] {printf("Position %i\n", $0e);}
%%
int main()
{
pcc_context_t *ctx = pcc_create(NULL);
while(pcc_parse(ctx, NULL));
pcc_destroy(ctx);
return 0;
}
使用“packcc”命令生成解析器后,我编译 C 生成的文件,然后 Gcc 发送此警告。
warning: type defaults to 'int' in type name [-Wimplicit-int]
提前谢谢你。
【问题讨论】:
-
警告在哪一行?您可能必须查看解析器输出才能了解发生了什么。
-
line 888:5 "#define _0e ((const)__pcc_in->data.leaf.capt0.range.end) printf("str %d\n", _0e); "
-
当我使用来自 github 的最新版本的 packcc 构建你的解析器时,我没有收到这样的警告,对我来说,有问题的行有
const int而不是const。你用的是什么版本的 packcc? -
对我来说,那行也有
printf("Position %i"...),匹配源代码,而不是"str %d"。您确定要构建您在此处发布的相同文件吗? (您在编辑器中保存了文件等?) -
对不起,我搞砸了我所做的许多测试。此处发布的文件是 888:5 "#define _0e ((const)__pcc_in->data.leaf.capt0.range.end) printf("Position %i\n", _0e);"