❶ 语法分析最常用的两类方法
LL分析法和LR分析法。
1、自上而下语法分析方法(LL分析法)
给定文法G和源程序串r。从G的开始符号S出发,通过反复使用产生式对句型中的非终结符进行替换(推导),逐步推导出r 。 是一种产生的方法,面向目标的方法。分析的主旨为选择产生式的合适的侯选式进行推导,逐步使推导结果与r匹配。
2、自下而上语法分析方法(LR分析法)
从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归约)之,逐步归约到开始符号S。是一种辨认的方法,基于目标的方法。分析的主旨为寻找合适的子串与P的侯选式进行匹配,直到归约到G的S为止 。
(1)语法分析的常用方法扩展阅读
LALR分析器可以对上下无关文法进行语法分析。LALR即“Look-AheadLR”。其中,Look-Ahead为“向前看”,L代表对输入进行从左到右的检查,R代表反向构造出最右推导序列。
LALR分析器可以根据一种程序设计语言的正式语法的产生式而对一段文本程序输入进行语法分析,从而在语法层面上判断输入程序是否合法。
实际应用中的LALR分析器并不是由人手工写成的,而是由类似于yacc和GNU Bison之类的LALR语法分析器生成工具构成。由机器自动生成的代码相比较于程序员手工的代码,拥有更好的运行效率而且减少了程序员的工作量。
主要有(一)句子成分分析法
(二)层次分析法
(三)其他句子分析方法
句子成分分析法又称“中心词分析法”,是传统语法学使用的句子分析方法。
①句子分析就是分析一个句子(单句)的句子成分。
句子成分有六种——主语、谓语、宾语、定语、状语、补语。
②词与句子成分之间存在对应关系,短语中只有联合短语和主谓短语可以直接充当句子成分。
③主语和谓语是主要成分,宾语和补语是次要成分,定语和状语是附加成分。
把主谓短语看作句子,认为句子总是由主谓短语充当。当主谓短语在句中作成分时,就叫做“小句”或“句子形式”;将非主谓句称作“无主句”。
④偏正短语要先找出其中的中心语,述宾短语或述补短语要先找出其中的谓语中心词。
在分析过程中:
首先将句子分为主语部分和谓语部分,找出全句的主要成分——主语和谓语;
再看谓语由哪种动词充当,以及后面跟着的宾语和补语;
在主语部分找出附加在主语前面的定语,在谓语部分找出附加在谓语前的状语。
例如分析“未来几十年里,地球能源将面临严重的短缺问题”。
第一步:找出主要成分
未来几十年里,我们生活的地球能源将面临严重的短缺问题。
第二步:找出次要成分
未来几十年里,我们生活的地球能源将面临严重的短缺问题。
第三步:找出附加成分
[未来几十年里],(我们生活)的地球能源[将]面临(严重)的(短缺)问题。
层次分析法,又称“直接成闷笑握分分析法”,是对句法单位(包括短语和句子)的直接成分进行结构层次分析的方法。由于切分过程中尽可能采用二分,所以层次分析法又称作“二分法”。
语法从表面上看是线性排列的符号序列。线性排列是指按照时间先后顺序说出或写出的形式。但是语法结构却是有层次性的,层次是指句法单位在组合时所反映出来的不同的先后顺序。
表层的线性关系背后暗含着隐性的层次关系。小的语法单位是大语法单位的组成部分,大的语法单位是由小的语法单位组合而成的,本身又可以成为更大语法单位的组成部分。
语法结构的每个层次一般直接包含比它小的两个语法单位,升裤这两个小的语法单位就是直接成分。每一个直接成分又可以包含更小的直接成分。
例如:
我们 进行 社会 调查 分析过程
|主||____谓_______|
|_述 | 宾____ |
|_定)中 | 更多例子
层次分析法就是逐层将一个句法单位(联合短语等由多个直接成分组成的短语除外)切分成两个直接成分,直到不能再切分为止的句子分析方法。
层次分析法的分析过程主要包括两个步骤:第一步是切分结构层次,第二步是确定结构关系。
例如:
他 去年 去蚂庆 了 一趟 美国。 分析过程
|__||___________________| 主谓关系
|___||______________| 状中关系
|________| |__| 述宾关系
|_| |___| 述补关系 更多例子
切分过程中应注意:
①第一步切分非常重要,第一步切分不当,后面便容易全都切错。
②必须逐层切分,直至分析出每个实词,语素不需要切分。
③为避免切分过程中的遗漏,一般采用从左到右、从上到下、逐块切分的分析步骤。
层次分析法中常用的图解表示法是切分法、组合法和树形图。
①切分法
切分法是最常用的方法,将所要分析的短语或句子作为一个整体,从大到小,逐层切分。
例如:
申奥 成功 有助于 中国 的 改革 与 开放。 分析过程
|_ 主 __| |______ 谓 ________________|
|主| |谓| |_述_ |______ 宾___________|
|__ 定_)_ 中_______|
| 联 + 合 |
②组合法
组合法是把所要分析的短语或句子切分到单词,然后从小到大,依次组合起来。例如:
他 弟弟 在 北京 念 大学 分析过程
|_定中_| |_介宾_| |_述宾_|
| |____状中____|
|_____主谓______|
③树形图
树形图是把有关的结构分析用竖线和斜线连接起来,从而显示出句法单位内部的结构关系。例如:
S
/ \
主语 谓语
/ \ / \
偏 正 述 宾
| | | |
取暖 设备 出现 故障 分析过程
(三)其他句子分析方法
1、变换分析
2、语义特征分析
3、语义指向分析
变化分析是通过移位、添加、删除、替换等方法来考察两种句法结构之间的关系和变换规则的分析方法。 变换分析着眼于句法结构的外部分析,考察具有内在联系的不同句法结构之间的联系。例如:
A、台上坐着主席团
B、台上演着梆子戏
C、山上架着炮
三个例句包含的词类相同(处所名词+动词+助词+名词),排列顺序相同,内部层次关系相同,但是A句表示静态意义(台上有主席团)、B句表示动态意义(梆子戏正在上演)、C句既可表示静态意义(山上有炮),也可表示动态意义(山上正在架炮)。
下面我们通过变换分析法分析三个句子。
A句可以变换为“主席团坐在台上”。类似的例子如:
门口站着人—→人站在门口 床上躺着人—→人躺在床上
黑板上写着字—→字写在黑板上 墙上挂着画—→画挂在墙上
B句可以变换为“台上正在演梆子戏”。类似的例子如:
外面下着大雨—→外面正在下大雨 操场上放着电影—→操场上正在放电影
教室里上着课—→教室里正在上课 隔壁打着电话—→隔壁正在打电话
C句既可以按照A句模式变换,也可以按照B句模式变换。
山上架着炮—→炮架在山上/山上正在架炮
类似的例子如:院墙外修着马路—→马路修在院墙外/院墙外正在修马路
通过变换分析,不但将内部层次关系相同的“台上坐着主席团”、“台上演着梆子戏”、“山上架着炮”区别开来,而且分化了类似“山上架着炮”的歧义。
语义特征分析是分析和概括同一句式中处于相同位置上的词所共有的语义特征的分析方法。例如:
A类:
他赠了幅国画给我—→他赠给了我一幅国画
学校奖了三千元给他—→学校奖给了他三千元
B类:
我买了斤香蕉给他—→*我买给了他一斤香蕉
我要了个名额给他—→*我要给了他一个名额
A类句子与B类句子都是连谓句,内部层次结构相同,但表达的语义不同:
A类句子包含两个动作,但说的是同一件事情(“赠国画”和“给我”是国画由他转移到我的过程)。B类句子也包含两个动作,但说的彼此分离的两件事情(“我买了斤香蕉”和“给他”互相分离的两个过程)。
A类句子与B类句子的不同关键在于动词语义特征上的差别。
A类句子中的“赠、奖”具有“给予”的语义特征,而没有“取得”的语义特征。B类句子中的动词“买、要”具有“取得”的语义特征,而没有“给予”的语义特征。
语义指向是指句法结构中的某一成分在语义上指向相关的另一个成分。
语义指向分析就是通过分析句中某一成分的语义指向来解释和说明某一语法现象的分析方法。
通过语义指向分析,可以把一个狭义同构的句式分化成语义不同的句式。
例如,同为“动词+形容词+了”的述补结构,其补语的语义指向各不相同。
砍光了(补语指向“砍”的受事,“树砍光了”)
砍累了(补语指向“砍”的施事,“我砍累了”)
砍快了(补语指向“砍”这一动作的本身,“你砍快了,得慢点砍”)
砍钝了(补语指向“砍”所利用的工具,“刀砍钝了”)
砍坏了(补语指向工具或受事,“他把刀砍坏了”、“桌子砍坏了”)
砍疼了(补语指向受事或施事的隶属部分,“把他的脚砍疼了”、“忙了半天,胳膊都砍疼了”)
语义指向分析的主要作用是在语法形式分析的基础上进一步进行语义解释,揭示句法成分之间在语义上的种种联系,使许多从形式上看来完全相同的结构分化为在语义上并不完全相同的结构。