gpt4 book ai didi

parsing - "Expected token"使用柠檬解析器生成器

转载 作者:行者123 更新时间:2023-12-04 17:24:54 24 4
gpt4 key购买 nike

当发生语法错误时,是否有一种已知的方法来生成“预期标记”列表?我使用 Lemon 作为解析器生成器。

最佳答案

这似乎有效:

%syntax_error { 
int n = sizeof(yyTokenName) / sizeof(yyTokenName[0]);
for (int i = 0; i < n; ++i) {
int a = yy_find_shift_action(yypParser, (YYCODETYPE)i);
if (a < YYNSTATE + YYNRULE) {
printf("possible token: %s\n", yyTokenName[i]);
}
}
}

它尝试所有可能的标记并打印那些适用于当前解析器状态的标记。

请注意,当出现不正确的标记时,解析器不会立即调用 syntax_error,但它会尝试减少堆栈中的内容,希望之后可以移动标记。只有当没有其他东西可以减少并且当前标记不能移动时,解析器才会调用syntax_error。减少将改变解析器状态,这意味着您看到的标记可能比减少之前适用的标记要少。不过,它应该足以用于错误报告。

关于parsing - "Expected token"使用柠檬解析器生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com