无法识别!(a<b)
这里我认为是SysY的文法就不接受,或者我没看懂。
SysY文法参考SysY2022语言定义
推导过程:
CompUnit -> FuncDef -> Block -> BlockItem -> stmt -> if (Cond) Stmt -> LOrExp -> ...->UnaryExp -> ! UnaryExp -> ! PrimaryExp -> !(Exp) -> !(AddExp)
可是头歌上说这个程序符合文法,但是PrimaryExp产生的是Exp而不是Cond,导致!()
中不能存在条件表达式,而只能存在加法以下优先级的表达式,这绝对是不对的。
头歌