这就是我的语法现在的样子
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州的转变减少。有人可以解释转移减少冲突的原因吗?
答案 0 :(得分:1)
一个问题是feature_list的含糊不清。单个要素是feature_list(生产7)还是空feature_list(6),后跟要素(8)?
formal_list的定义也会接受一些意外的字符串(例如以逗号开头的列表)。
在第一种情况下,您可以删除生产7.对于formal_list,您可以将optional_formal_list定义为empty或formal_list,然后删除formal_list的空生产。