我一直在使用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