这个CFG Bison的定义有什么不对吗?

时间:2013-09-24 21:55:10

标签: grammar bison context-free-grammar formal-languages

我在Bison文件中有以下语法:

lst: ID COMMA lst
   | ID
   | /*empty*/

plst: lst SEMICOLON lst
    | SEMICOLON lst
    | lst

第一条规则实际上是否尝试映射id1,id2,id3...

等标识符列表

第二个想要映射一个由分号分隔的可靠的列表。允许的可能性有:id11,id12,id13...;id21,id22,id23...id1,id2,id3...;id1,id2,id3...

我想知道这是否是一套正确的规则,因为Bison正在返回许多冲突。我认为其中一个可能的问题可能不是很好的规则。所以我的问题是:前面提到的一套规则,是一个好的规则还是容易发生的?三江源。

1 个答案:

答案 0 :(得分:2)

问题是您允许lst为空。所以没有办法区分:

lst ';' lst

';' lst

换句话说,lst是空的还是不存在?语法含糊不清。

我会移除lst的空制作,但还有其他解决方案。