2015-04-25 87 views
0

衝突這是我的語法看起來如何,現在移位/減少Bision

Grammar 

0 $accept: program $end 

1 program: class_list 

2 class_list: class 
3   | class_list class 

4 class: CLASS TYPEID '{' feature_list '}' ';' 
5  | CLASS TYPEID INHERITS TYPEID '{' feature_list '}' ';' 

6 feature_list: /* empty */ 
7    | feature 
8    | feature_list feature 

9 feature: OBJECTID '(' formal_list ')' ':' TYPEID '{' expr '}' ';' 
10  | OBJECTID ':' TYPEID 
11  | OBJECTID ':' TYPEID ASSIGN expr 

12 formal_list: /* empty */ 
13   | formal 
14   | formal_list ',' formal 

15 formal: OBJECTID ':' TYPEID 

16 expr: /* empty */ 

而且我得到轉變降低在國家9和14有人能解釋移位減少衝突?

回答

1

一個問題是feature_list的模糊性。單個功能是feature_list(製作7)還是空的feature_list(6),後面是功能(8)?

formal_list的定義還將接受一些意外的字符串(例如以逗號開頭的列表)。

在第一種情況下,您可以刪除生產7.對於formal_list,可以將optional_formal_list定義爲空或formal_list,然後刪除formal_list的空生產。