0
我試圖做一個解析器,可以處理如果其他語句。目前,我有下面的代碼爲我bison.y文件:野牛/ Flex如果語句
ifstate: IF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
| IF_TOKEN LPARENT compare RPARENT statement else
;
else: ELSE_TOKEN statement ENDIF_TOKEN
| ELSEIF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
| ELSEIF_TOKEN LPARENT compare RPARENT statement else
;
在這裏,我已經比較返回一個字符串,它是真的還是假的。並且陳述是任何陳述(從添加到更多陳述的陳述)。但是,我不知道如何才能做到這一點,如果是真的。
你的主要問題是接近的,以無法回答的,因爲缺乏上下文。比較將在運行時執行,除非條件不變並且您有可以檢測到的代碼。你如何生成任何代碼?沒有跡象表明,所以我們無法幫助您解決如何以不同的方式生成代碼。 ISTR認爲這樣的陳述代碼生成適度混亂 - 在聲明中的操作完成之後確定將解釋器發送到哪裏的操作非常繁瑣,因爲您還不知道ENDIF將在哪裏等。可以這樣做,雖然。 –