什么是二义性 简述什么是二义性文法?
简述什么是二义性文法?
模棱两可。歧义的定义:“如果一个语法的句子中有两个不同的语法树,那么这个语法就是歧义的。”在这种情况下,“ABC”这个句子有两个不同的语法树:s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. "如果语法不明确,编译时就会有不确定性。遗憾的是,理论上已经证明了语法的歧义性是无法确定的,即不可能通过有限的步骤构造一个判断语法是否具有歧义性的算法。现在的解决办法是提出一些限制性条件,称为无歧义的充分条件。当语法满足这些条件时,就可以判断语法没有歧义。由于无歧义语法相对简单,我们也可以采用另一种解决方案:不改变无歧义语法,我们可以确定满足无歧义充分条件的编译算法。”例如,在这种情况下,可以添加一个限制:AC具有比AB更高的优先级,这消除了模糊性。
编译原理,证明下面文法G(s)是二义性的?
证明:如果语法中有这样一个句型,而且它有两个不同的语法树,就说语法是歧义的,应该尽量避免。(s,s)和(s*s),以及(I,s*s)和(s,SI)可以表示I,I*I,所以g(s):s-> s,s*s*I;语法有歧义。编译器被分成几个“过程”,以使编译器的结构更清晰。构造编译器时应掌握源程序、目标语言和编译方法的知识。对于编译,变量同时包含左值和右值。编译器处理大多数表。目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码,因此它不是目标代码。词法分析遵循构词规则,语法分析遵循语法规则,中间代码生成遵循语义规则,语义规则可以定义程序的意义。
G[A]:A→aA|B|a B→a证明文法的二义性?
查找句子有两种最左或最右的派生。
例如,AAA可以推导如下:a→AA→AAA→AAA也可以推导如下:a→AA→AAA→AAB→AAA都是最右边的派生,所以有两个不同的语法树,所以它们是不明确的
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。