这是我的编程语言的语法部分。我在编译时遇到了转移/减少冲突。
Rule 1: encryption_spec: key_spec
Rule 2: key_spec:
key_spec key_spec_content
| key_spec_content
;
Rule 3: key_spec_content: TOK_PROTECT key_keyowner
|TOK_PROTECT key_keyname
|TOK_PROTECT key_keymethod
|TOK_PROTECT key_pub_key
|TOK_COMMA key_keyowner
|TOK_COMMA key_keyname
|TOK_COMMA key_keymethod
|TOK_COMMA key_pub_key
|encoding
;
我在规则 1 中遇到 shift/reduce 冲突。 你能给我一些修改的建议吗?
最佳答案
您的 key_spec
规则格式不正确。事实上,你有一个无限递归。
您应该将其更改为类似
key_spec: /* Empty. */
| key_spec key_spec_content
;
编辑:删除 %empty
野牛扩展。
关于c - 在我的语法中得到转变/减少错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27689902/