gpt4 book ai didi

c++ - 弹性/Bison : Bad token management?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:13 30 4
gpt4 key购买 nike

我的词法分析器和解析器有问题。

首先,在我的词法分析器中有这样一行:

"if"    beginScope(stOTHER); return IF;

在我的解析器中:

stmt: IF '(' exp ')' stmts
...
stmts: stmt
| '{' stmt_list '}'
| '{' '}'

在这样的代码中:

if(sth) {
dosth;
}

if(other) {
doothersth;
}

beginScope 将被调用两次,因为(我认为)Bison 不知道 if 语句的结尾在哪里,所以当它找到 IF 标记时,他将其视为 if 语句的结尾,并再次读取它以开始另一个 if 语句...

请帮帮我...

最佳答案

正如 Zack 在评论中提到的,您应该从解析器操作中调用 beginScope:

stmt: IF { beginScope(stOTHER); } '(' exp ')' stmts

关于c++ - 弹性/Bison : Bad token management?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589687/

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