簡體   English   中英

Flex / Bison:令牌管理不好?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM