词条 | 算符优先分析法 |
释义 | § 概述 算符优先分析法是一种简单直观、特别方便于表达式分析,易于手式实现的方法。算符优先法只考虑算符(广义为终结符号)之间的优先关系,它是一种自底向上的归约过程,但这种归约未必严格按照句柄归约。它是一种不规范归约法。 5.1.1 直观算法优先分析法 算符优先分析法的关键是比较两个相继出现的终结符号的优先级而决定应采取的动作。要完成算符间的优先级比较,就要先定义各种可能出相继出现的运算符的优先级,并将其表示成矩阵形式,在分析过程中通过查询矩阵元素而得算符间的优先关系。 对于任何两个相继出现的终结符号a和b具有形式:“…ab…”或 “…aQb…”,Q为非终结符,定义a,b间的如下三种关系为: 索 1) a〈b a的优先级低于b 2) a=b a的优先级等于b 3) a>b a的优先级高于b 如果a和b在任何情况下不可能相继出现,则a,b之间无关系。 已知文法G【E】:EE+EE-EE*E(E)i 其终结符号的关系可用一个矩阵表示如下,称其为优先表。 有了优先表我们就可根据算符的优先关系对符号串进行归约,从而求出其运算结果。 § 算符优先文法的定义 定义1:设有一文法G,如果G中没有形如A…BC…的产生式,其中B和C为非终结符号,则称G为算符文法。 算符文法的产生式右部不包含两个相继的非终结符号,保证了两个运算间只有一个操作数,这正是算符文法所要求的句型。 定义2:设G是一个算符文法,a和b是任意两个非终结符,A,B,C是非终结符。算符优先关系=、、定义如下: (1)a=b当且仅当G中含有形如A…ab…或AaBb的产生式; (2)ab当且仅当G中含有形如A…aB…的产生式,且Bb…或B+Cb…; (3)ab当且仅当G中含有形如A…Bb…的产生式,且B…a或B+…aC; 定义3:设有一个不含产生式的算符文法G,如果对于任意两个终结符a,b之间至多只有、和=三种关系的一种成立,则称G是一个算符优先文法(OPG文法)。 例:文法G【E】:EE+EE-EE*E(E)i是算符文法,但非算符优先文法。 因为对算符+、*来说,由EE+E和E+E*E,可有+* 又可有EE*E和E+E+E,得+*。由语法子树表示为: E E / \ / \ E + E E * E / \ / \ E * EE + E +* +* 由此可见,+和*的优先关系不唯一,所以该文法不为算符优先文法. |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。