[英]Flex/Bison: Bad token management?
我的詞法分析器和解析器中存在問題。
首先,在我的詞法分析器中,我有這樣一句話:
"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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.