第四章语法分析

合集下载

语言学纲要笔记第四章语法

语言学纲要笔记第四章语法

第四章语法一、语法的内涵和研究范围1、语言结构和使用的规则性2、客观的规则和对客观规则的抽象3、对“语法”的多层次理智(1)语法的词的构成、变化和用词造句的规则。

(客观的,一种语言只有一套)。

(2)对客观语言结构规则的描写、说明和解释。

实际指语法学。

(有主观性。

不同专家可能有不同的系统)。

陆俭明《现代汉语语法研究教程》P12-13:语法是一种语言中由小的音义结合体组合成大的音义结合体所依据的一套规则。

4、大语法和小语法(1)凡是能够体现为语言结构的规则性的部分都是语法。

(大语法)包括语音学、语义学、词法学(形态学)、句活学所研究的对象。

(2)只限于词和句子的构造规则。

(小语法,本书的理解)(3)有的甚至只指句子的构造规则(句法学)。

二、语法规则1、语言结构(1)结构成分:音义结合体,如语素、词、短语、句子。

(2)结构方式:成分与成分的组合,如:成绩好——好成绩。

虚素“们、看、了、呢”与别的成分组合时,永远不会出现在句道:“第、初、问”与别的成分组合时,永远不会出现在句末。

[分布]2、语法单位的内涵即语法系统的组成部分,凡是能在组合的是位置上被替换下来的组合成分单位,如短语、句子,都是合义结合的。

3、组合规则和聚合规则(1)组合规则:语法单位的组合起来的规则,链条,现实的,存在于话语中。

(2)聚合规则:语法单位的归类的规则,仓库,潜在地,存在于人脑中。

例如:小学生的句型练习:游戏中的语词龙(组合规则)及其后接的多种可能性(聚合规则)。

三、语法单位的层级性教材中从大单位到小单位,是解构式[分解]:应该从小单位到达单位讲,建构式[组合]。

(一)句子1、概念:语言交际的基本表述单位。

陆俭明《现代汉语语法研究教程》P21:是语言中前后有较大停顿、伴有一定句谓、表示相对完整意义有音义结合体,是最大的语法单位。

2、句型:按语气分:陈述句、疑问句、祈使句、感叹句。

张涤华等《汉语语法修辞词典》:[补充,不讲]句类:(1)句子的类型。

语言学概论_第四章语法

语言学概论_第四章语法
1.语法形式:能够体现一类意义或有共同作用 的形式。
2.语法意义:通过一类共同功能所获得的意义。 语法意义不等于词汇意义。
如:英语中名词加词尾“- s”表示复数, “- s” 就是语法形式,“表示复数”就是语法意义。
3、根据语法形式的共同特点把它们归并为几个基 本类型,这种语法形式的类就叫做“语法手段”。
如:“一张动物园”,看起来是量词误用, 其实是“我要买一张去动物园的票”这句 话的成分省略现象。
初中,某数学老师讲方程式变换,在讲台 上袖子一挽大声喝道:同学们注意!我要 变形了!……
5.语法和逻辑
逻辑是语言表现内容的规律,语法是 语言表达形式的规律,二者的关系非常紧 密。逻辑对语法的影响主要表现为对语言 成分之间搭配关系的制约。从基本要求看, 一般人们说话不但要合语法,也要合逻辑。 个别不合逻辑的,只要大家都这么说,都 懂得是什么意思,就不能完全用逻辑来苛 求了。
“科学”本为名词,后产生出“具有科学属 性的”这一意义,用该词修饰或描写此属
严密的系统性 相对的稳定性
语法的高度抽象性
小明喝牛奶。 妈妈已经吃过饭了。 老师在黑板上写字。
语法规则具有强大的递归性
学生在看书。 隔壁的学生在看他的书。 隔壁在xx小学读书的学生在家里看他的辅
导书。 隔壁在xx小学读书的学生在家里看他昨天
从新华书店买来的他一直想要的辅导书。
语法规则具有严密的系统性
江西人不怕辣 湖南人辣不怕 四川人怕不辣
(4)语调是通过整个句子的音高、重音、停顿等 来表示一定语法意义的形式。语调实际上已经是 表达层面上的一种语法手段了。
如:滚蛋!
6.根据语法手段的不同可把人类语言分为:
语言
综合性语言:主要使用词形变化、 词的轻重音等语法手段的语言。 如俄语、德语

第4章 自顶向下的语法分析

第4章 自顶向下的语法分析

6
分析中出现的问题2:回溯问题
从各种可能的选择中随机挑选一种, 并希望它是正确的。 如果以后发现它是错误的,必须退 回去,再试另外的选择这种方式称为回 溯。 回溯代价极高,效率很低。
7
在自上而下的分析方法中如何选择使 用哪个产生式进行推导? 假定要被替换的最左非终结符号是B, 且有n条规则:B→A1|A2|…|An,那么如何 确定用哪个右部去替代B? 从文法的开始符号出发,如何根据当前 的输入符号(单词符号)唯一地确定选用哪 个产生式替换相应非终结符往下推导,或构 造一棵相应的语法树。
8
§4.2 FIRST和FOLLOW集合的构造
9
例1:输入串w=pccadd是否是合法的句子?
G:S→pA|qB A→cAd|a B→dB|b
S=>pA=>pcAd=>pccAdd=>pccadd 总结:本题中对于一个非终结符,存在若干 个候选式,即产生式形如:P→α1|α2|……|αn 每个候选式的第一个字符都是终结符, 且都不相同。这时可直接选用与当前输入符 号相同的那个候选式来替换P。
42
3. 若X为一非终结符,则查分析表M。 若M[X,a]中为A—产生式,将A自栈 顶弹出,将产生式右部符号串按逆序逐 一推入栈中;当产生式为A时,则只将 A→ε弹出即可。若M[X,a]中为空,则调 用出错处理程序。
43
算法实现
当前字符匹 配成功。 要对栈顶的 非终结符进 行替换。
44
初始化
注意一 定要逆 序入栈。
48
49
通过表4-9可以看到,每个非终结符对应 产生式的各个候选式的交集如下:
可以验证,此文法是LL(1)文法。
50
递归下降语法分析程序如下:

04 语法分析-自上而下分析

04 语法分析-自上而下分析

待分析的输入串: 待分析的输入串:i+i
只有当a 只有当a是允许出 现在非终结符A 现在非终结符A后 面的终结符时, 面的终结符时, 才可能允许A 才可能允许A自动 匹配。 匹配。
尾随集的定义: VN尾随集的定义:
=*>…Aa Aa…, FOLLOW(A)={a|S =*> Aa , a∈VT}; 特别地,如果S=*> S=*>…A 那么# FOLLOW(A)。 特别地,如果S=*> A,那么# ∈FOLLOW(A)。
例子
文法: S→xAy A→**|* 文法: 输入串:x*y 输入串: S => => => => xAy x**y xAy x*y (S→ xAy) (A→**) 回溯) (回溯) (A→*)
带回溯自上而下分析面临的问题
问题: 问题: 文法的左递归问题 回溯问题 虚假匹配问题 出错位置不确定 低效
实现思想: 实现思想:
分析程序由一组递归过程组成。 分析程序由一组递归过程组成。每一过程 对应于一个非终结符号。 对应于一个非终结符号。 每一个过程的功能是:选择正确的右部。 每一个过程的功能是:选择正确的右部。 在右部中有非终结符号时, 在右部中有非终结符号时,调用该非终结 符号对应的过程。 符号对应的过程。
消除文法的左递归
文法不含回路(形如P=+> P推导 推导) 文法不含回路(形如P=+> P推导) 不含回路 前提: 前提: 不含以ε 也不含以ε 为右部的产生式 结论: 那么可以通过执行消除文法左递 结论: 那么可以通过执行消除文法左递 归的算法消除文法的一切左递归 归的算法消除文法的一切左递归 改写后的文法可能含有以ε (改写后的文法可能含有以ε 为右部的产生式)。 为右部的产生式)。

语法分析

语法分析
23
if(Yi∈VN) { if(i=n or 任一j(i+1≤j≤n)null(Yj)=true) FOLLOW(Yi)=FOLLOW(Yi)∪FOLLOW(A); if(Yi+1∈VT) Yi+1∈FOLLOW(Yi); else for(k=i+1;k<=n;k++) if(k=i+1 or i+1≤j≤k-1)null(Yj)=true ) FOLLOW(Yi)=FOLLOW(Yi)∪FIRST(Yk) }/*end of if*/ }/*end of for*/ } /*end of for*/ while FIRST,FOLLOW,nullable 不再改变
1、思路:对任一输入符号串,通过一切可能的办 法,从树根结点(识别符号)出发,根据文法自 上而下地为输入串建立一棵语法树;或者说, 从识别符号开始,根据文法试图为输入串建立 一个推导序列。 2、特点:是自顶向下分析的一般方法,分析过程 的本质是一种试探过程。
4
例∶假定有文法G[S]:(1)S->cAd (2)A->ab|a 对输入串w=cad。要求自上而下地构造w的语法树。 解决过程: S c a S c A a d A b d -对于输入串w,从文法的开始符号出 发,反复使用不同的产生式谋求匹配 输入串。当用某个非终结符号的候选 式进行匹配失败时,则推翻分析退回 到适当位置再重新试探其它候选式, 直到把所有可能的推导序列都试探完 仍不成功才能确认输入串不是该文法 的句子而报错 。称为带回溯的自顶 向下分析。 -回溯需要推导记住现场,浪费了大量 的时间和空间,必须设法消除。
在推导过程中,可以完全根据向前看符号唯 一决定选择哪个产生式往下推导,因此,分析过 程是完全确定的。这种分析称为确定的自顶向下 分析方法。

第04章-语法分析自上而下分析

第04章-语法分析自上而下分析
否符合语法规则。 ▪ 语法分析器的工作本质:按文法的产生式,识别
输入符号串是否为一个句子。 ▪ 语法分析器在编译器中的地位:
源程序
单词符号
词法分析器
取下一个单 词符号
语法分析器
语法分析树
编译器的 后继部分
2021/4/6
符号表
3
4.1 语法分析器的功能
▪ 语法分析方法
➢ 自上而下分析法
从文法的开始符号出发,反复使用文法的产生式, 寻找与输入符号串匹配的推导。
分析输入串x*y(记为)。
xx**yy
SS
IPIPIP xx A y * **
2021/4/6
7
4.2 自上而下分析面临的问题
▪ 当某个非终结符有多个产生式候选时,可 能带来如下问题:
➢ 1.分析过程中,当一个非终结符用某一个候选 匹配成功时,这种匹配可能是暂时的。这时, 不得不“回溯”。
➢ 2.文法左递归问题。一个文法是含有左递归的 ,如果存在非终结符P
➢ 最后所得的无左递归文法是: S→Qc | c Q→Rb | b R→bcaR | caR |a R R→ bca R |
➢ 不同排序所得的文法的等价性是显然的。
2021/4/6
17
4.3.2 消除回溯、提左因子
▪ 为了消除回溯就必须保证:对文法的任何 非终结符,当要它去匹配输入串时,能够 根据它所面临的输入符号准确地指派它的 一个候选去执行任务,并且此候选的工作 结果应是确信无疑的。
2021/4/6
14
4.3.1 左递归的消除
▪ 例4.3 考虑文法G(S)
S→Qc|c Q→Rb|b R→Sa|a
➢ 令它的非终结符的排序为R、Q、S。 ➢ 对于R,不存在直接左递归。 ➢ 把R代入到Q的有关候选后,把Q的规则变为

第四章 语法分析——自上而下分析

第四章 语法分析——自上而下分析

解二: 规定顺序:S、Q、R
则等价的无左递归的文法: SQc | c QRb| b RbcaR’ | caR’ | aR’ R’bcaR’ |
RSa | a RQca | ca | a
RRbca|bca | ca | a
RbcaR’|caR’ | aR’ R’ bcaR’|
(因为不需要试探某个候选式,而是准确地指派 某个候选式)
17
终结首符集FIRST
令文法G不含左递归,对它的所有非终结符的每 个候选式定义终结首符集 FIRST(): * FIRST()={a | a , a∈VT }
特别地 * 若 ,则规定 ∈ FIRST()
显然, FIRST()是从推导出的所有可能的开头终 结符a或 。
3
§4.2 自上而下分析面临的问题
一、带‚回溯‛的自上而下分析方法:
自上而下分析方法,就是对任何输入串,试 图用一切可能的方法,从文法的开始符号出发, 自上而下地为输入串建立一个语法树(或最左推 导)。 这种分析过程实质上是一种试探过程,即反 复使用不同的产生式以求能匹配输入串。
4
例4.1 设有文法: SxAy
解: S iCtSA | a
A | eS
C b
22
4.3.3 LL(1)分析条件 当一个文法不含左递归,并且满足每个非终结 符的所有候选首符集两两不相交,是不是一定能进 行有效的自上而下的语法分析呢?
若存在 ∈ FIRST() ,则问题较复杂,需要进 一步考虑。 定义:非终结符A的 FOLLOW 集:
* FOLLOW(A)= { a| S …Aa… ,a∈VT } 特别地, * 若S …A,则规定,构造FIRST(X)
a) 若X∈VT,则 FIRST(X)={X}。

编译原理 第4章 语法分析—自顶向下分析

编译原理 第4章 语法分析—自顶向下分析

例 S::=aABbcd|ε,A::=ASd|ε,B::=SAh|eC|ε,
C::=Sf|Cg|ε,求此文法的每一个非终结符号的
FOLLOW集。
解:FOLLOW(S)={#}∪FIRST(d) ∪(FIRST(Ah)-{ε}) ∪FIRST(f)
={#}∪{d}∪{a,d,h}∪{f} = {a,d,h,f,#}
4)若对于一切1≤i≤n,ε∈FIRST(Xi),则将ε符号加 进FIRST(α)。
例4-1(P62) 有文法: E→TE′ E′→+TE′ E′→ε T→FT′ T′→*FT′ T′→ε F→(E)|i 求文法中非 终结符号以及各 产生式右部符号 串的FIRST集。
解:该文法的非终结符号有E、E′、 T、T′和F。 FIRST(E)=FIRST(TE′) =FIRST(FT′E′)={ ( ,i } FIRST(+TE′)={ + } FIRST(ε)={ε} FIRST(E′)=FIRST(+TE′) ∪FIRST(ε)={+ ,ε} FIRST(T)=FIRST(FT′)={ ( ,i } FIRST(*FT′)={ * } FIRST(T′)=FIRST(*FT′) ∪FIRST(ε)={* ,ε} FIRST((E))={ ( } FIRST(i)={ i } FIRST(F) =FIRST((E)) ∪FIRST(i)={( ,i}
分析法算符优先分析法简单优先分析法优先分析法自底向上带回溯递归下降分析法分析法不带回溯自顶向下语法分析lr回溯示例41p61自顶向下的分析方法就是从文法的开始符号出发按最左推导方式向下推导试图推导出要分析的输开始符号输入符号串自底向上的分析方法从输入符号串开始按最左归约方式向上归约到文法的开始符号
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



最右推导
E rm E rm (E) rm (E + E) rm (E + id) rm (id + id)
4.1 上下文无关文法
4.1.3 分析树 例 E E + E | E E | (E ) | E | id
E

E
( E ) E + E id
id
4.1 上下文无关文法

4.2 语言和文法
4.2.7 提左因子

有左因子的文法 A b1 | b2 提左因子 A A A b 1 | b 2

4.2 语言和文法

例 悬空else的文法 stmt if expr then stmt else stmt | if expr then stmt | other 提左因子

无二义的文法
stmt matched _stmt | unmatched_stmt matched_stmt if expr then matched_stmt else matched_stmt | other unmatched_stmt if expr then stmt | if expr then matched_stmt else unmatched_stmt
句型 文法G的开始符为S,S *, 可能含有非终结符, 则叫做文法G的句型。
4.1 上下文无关文法

例 E E + E | E E | (E ) | E | id 最左推导
E lm E lm (E) lm (E + E) lm (id + E) lm (id + id)

按串长进行归纳:配对括号串可由S推出
归纳基础: S 归纳假设:长度小于2n的都可以从S推导出来
归纳步骤:考虑长度为2n(n 1)的w = (x) y
S (S)S * (x) S * (x) y
4.2 语言和文法
4.2.4 适当的表达式文法 用一种层次观点看待表达式 id id (id+id) + id id + id
term
factor id
*
* factor
term
factor
id id id id 分析树
id
4.2 语言和文法
4.2.5 消除二义性
stmt if expr then stmt | if expr then stmt else stmt | other
句型:if expr then if expr then stmt else stmt 两个最左推导:
言的注解和空白的规则反映在文法中,文法将大 大复杂 注解和空白由自己来处理的分析器,比注解和空 格已由词法分析器删除的分析器要复杂得多
4.2 语言和文法
4.2.3 验证文法产生的语言 G : S (S) S | L(G) = 配对的括号串的集 合
4.2 语言和文法
4.2.3 验证文法产生的语言 G : S (S) S | L(G) = 配对的括号串的集合
4.1.4 二义性 id id + id
E E E E E+E id E E E +E id E + E id E + E id id + E id id + E id id + id id id + id 两个不同的最左推导
4.1 上下文无关文法
4.1.2 推导(自顶向下)
把产生式看成重写规则,把符号串中的非终结符
用其产生式右部的串来代替

例 E E + E | E E | (E ) | E | id
E E (E) (E + E) (id + E) (id + id)

概念
例 算术表达文法 EE+T|T TTF|F F ( E ) | id 消除左递归后文法 E TE E + TE | T FT TFT| F ( E ) | id

(T+T...+T) (FF...F)
4.2 语言和文法
非直接左递归 S Aa | b A Sd | 先变换成直接左递归 S Aa | b A Aad | bd | 再消除左递归 S Aa | b A bd A | A A adA |
4.2 语言和文法
4.2.6 消除左递归
消除左递归 AAα | β
A βR R α R | ε
4.2 语言和文法
4.2.6 消除左递归

文法左递归
A +A

直接左递归
串的特点
A A | b
b . . .

消除直接左递归 A b A A A |
4.2 语言和文法
E id
E +
E E
E *
+ E
E
id
id
id
id
4.2语言和文法

文法的优点
文法给出了精确的,易于理解的语法说明 自动产生高效的分析器 可以给语言定义出层次结构
以文法为基础的语言的实现便于语言的修改

文法的问题
文法只能描述编程语言的大部分语法,不能描述
语言中上下文有关的语法特征
4.2 语言和文法

简化表示
E E A E | (E ) | E | id A+|
4.1 上下文无关文法

文法书写上的约定
终结符 字母表中的小写字母,如 a,b,c 黑体串,如 id, while 数字 0, 1, … , 9 标点符号,如括号,逗号等 运算符号,如+, -等 非终结符 字母表中的大写字母,如A, B, C 字母S,并且通常代表开始符号 小写字母的名字(斜体),如expr, stmt

例 ( {id, +, , , (, )}, {expr, op}, expr, P )
expr expr op expr expr expr op +
4.1 上下文无关文法

简化表示
expr expr op expr op + | | (expr) | expr | id
2 型语言 由 2型文法定义 • 产生式形式为:A -> b 又称 正规文法! ⑷ 3 型语言 由 3型文法定义 • 产生式形式为:A->aB , A->a , A->
【注】 四类语言为 包含关系,且有 L0 ⊃L1 ⊃ L2 ⊃ L3; 编译处理中,主要应用后两种文法!
乔姆斯基


艾弗拉姆· 诺姆· 乔姆斯基(英语 :Avram Noam Chomsky, 1928年12月7日-) 美国哲学家、语言学家、认知学 家、逻辑学家、政治评论家。乔 姆斯基是麻省理工学院语言学的 荣誉退休教授,他的生成语法被 认为是20世纪理论语言学研究上 的重要贡献。
句法结构
《句法结构》是乔姆斯基介绍转换生成语 法的《语言学理论的逻辑结构》一书的精 华版。这一理论认为说话的方式(词序) 遵循一定的句法,这种句法是以形式的语 法为特征的,具体而言就是一种不受语境 影响并带有转换生成规则的语法。 儿童被假定为天生具有适用于所有人类语 言的基本语法结构的知识。这种与生俱来 的知识通常被称作普遍语法。
从正则式构造出的词法分析器效率高
4.2 语言和文法

从软件工程角度看,词法分析和语法分析的 分离有如下好处
简化设计
编译器的效率会改进
编译器的可移植性加强 便于编译器前端的模块划分
4.2 语言和文法

能否把词法分析并入到语法分析中,直接从 字符流进行语法分析
若把词法分析和语法分析合在一起,则必须将语
4.1 上下文无关文法

文法书写上的约定
字母表中后面的大写字母,如X,Y,Z,可以是
终结符或非终结符 字母表中后面的小写字母,如u,v … z 可代表终 结符号串 小写希腊字母,如,b,可代表文法的符号串 对于A 1,A 2,... A n可以写成 A 1 | 2 | … | n

stmt if expr then stmt if expr then if expr then stmt else stmt stmt if expr then stmt else stmt if expr then if expr then stmt else stmt
4.2 语言和文法

练习
第四章 语法分析
第四章 语法分析
源程序 词 法 分析器
记 号 分析器 取下一个 记号 分析 前端的 中间 树 其余部分 表示
符号表

本章内容
上下文无关文法
自上而下分析和自下而上分析 围绕分析器的自动生成展开
上下文无关文法
4.1~4.3
4.1 上下文无关文法
4.1.1 上下文无关文法的定义
正则式能定义一些简单的语言,能表示给定结构
的固定次数的重复或者没有指定次数的重复 例:a (ba)5, a (ba)*
正则式不能用于描述配对或嵌套的结构
例1:配对括号串的集合 例2:{wcw | w是a和b的串}
4.1 上下文无关文法

上下文无关文法是四元组(VT , VN , S, P)
VT : VN : S: P : 终结符集合 非终结符集合 开始符号,非终结符中的一个 产生式集合, 产生式形式 : A expr (expr) expr id op
4.2 语言和文法
相关文档
最新文档