8.3中VarDecl和FuncDef出现了归约/归约冲突
在make
的时候会出现
/root/src/sysy.y: warning: 1 reduce/reduce conflict [-Wconflicts-rr]
然后当编译同时含有VarDecl
和FuncDef
的程序时就会出现错误
error: syntax error
比如
int one = 1;
int main() {
return one;
}
如果第一行加const
则不会出现错误。
不是特别理解为什么会形成冲突。语法分析除了把Stmt
拆分为MatchedStmt
和OpenStmt
以外都是按照手册里的示例写的,感觉自己的代码可以保证FuncDef
中如果出现等号必须首先出现括号,而VarDecl
中如果出现括号必须首先出现等号……