优先关系矩阵: 矩阵的行和列都是终结符,矩阵元素是终结符的优先关系。
为什么你的矩阵有非终结符
‘贰’ 急需程序设计语言编译原理(第3版)国防工业出版社 陈火旺 的习题解析
DOC文件下载地址:http://www.teach.ustc.e.cn/jxcg/sj/sj15/zj.doc
购买网页:http://www.maihaoshu.com/cate/855.htm
更多此书信息:http://www..com/s?tn=sitehao123&ie=gb2312&bs=%B1%E0%D2%EB%D4%AD%C0%ED%CF%B0%CC%E2%BD%E2%CE%F6&sr=&z=&cl=3&f=8&wd=%B1%E0%D2%EB%D4%AD%C0%ED%CF%B0%CC%E2%BD%E2%CE%F6%B9%FA%B7%C0%B9%A4%D2%B5%B3%F6%B0%E6%C9%E7&ct=0
‘叁’ 如何消除二义性 编译原理
1、需要在语法设计时就要考虑了,即使是C/C++也存在二义性、不确定性的语法,对于这种情况,各编译器考虑的不同的方案,主要还是看你如何进行文法分析,可以选一种方便分析的一种去做。
2、要判断二义性的存在,可以尝试使用不同的优先顺序解释
假如解释出现歧义,那么一定存在二义性的语法(如经典的++运算)
3、要消除二义性,最简单可行的就是定义优先级,不过不一定适合所有情况。
‘肆’ 编译原理:证明下面文法G【s】是二义性的
证明:
若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法,二义性文法会引起歧义,应尽量避免。
(S + S)和(S * S)以及(i S * S)和(S + S i)都可以表示i+i*i,所以G(S):S -> S+S| S*S | (S) | i ;文法具有二义性。