我一直在使用lex和yacc編寫一個命令式語言的編譯器,今天我完成了語法,事情是,我一直在網上閱讀每個語法都期望有幾個轉換/減少衝突,特別是如果它有if/else語句,這通常被稱爲dangling if-else,而我的確有if/elsif/else語句,但它在編譯時不會引發任何衝突,問題是如果elsif else語句解析
¿這是否意味着這種語法有缺陷,僅僅是因爲它不會引發任何轉換/減少衝突?我沒有太多的經驗這樣做,但我不能找到
如果你想要更多的信息爲,如果在這個語法/ ELSIF/else語句是像這樣的作品有任何問題:
statement -> ...
------------| initial_conditional_stmt
initial_conditional_stmt: conditional_stmt
-----------------------| conditional_stmt 'else' block
conditional_stmt -> 'if' '(' expression ')' block
------------------| conditional_stmt elsif '(' expression ')' block
塊只是括號內的語句列表{}
看看這個IF-ELSE解析器使用Flex和Bison http://c-madeeasy.blogspot.in/2012/05/if-else-statement-is-commonly-used-in.html – techno 2012-05-14 04:20:22