Shift/Reduce 视觉冲突
Shift/Reduce conflict in 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 减少班次。有人可以解释什么是班次减少冲突吗?
一个问题是feature_list的歧义。单个特征是 feature_list(生产 7)还是空 feature_list (6) 后跟特征 (8)?
formal_list的定义也会接受一些意想不到的字符串(比如以逗号开头的列表)
在第一种情况下,您可以只删除产生式 7。对于 formal_list,您可以将 optional_formal_list 定义为空或 formal_list,然后删除 [= 的空产生式19=].
这就是我的语法现在的样子
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 减少班次。有人可以解释什么是班次减少冲突吗?
一个问题是feature_list的歧义。单个特征是 feature_list(生产 7)还是空 feature_list (6) 后跟特征 (8)?
formal_list的定义也会接受一些意想不到的字符串(比如以逗号开头的列表)
在第一种情况下,您可以只删除产生式 7。对于 formal_list,您可以将 optional_formal_list 定义为空或 formal_list,然后删除 [= 的空产生式19=].