第3章 语法分析_文法与推导

合集下载

第三章 语法分析

第三章 语法分析

第三章语法分析典型例题 :单项选择题3.1.1. 文法 G: S-xSxly 所识别的语言是 _____ (陕西省 1997 年自考题)a. xyxb. (xyx)*c. xnyxn(n ≥ 0)d. x*yx*3.1.2. 文法 G 描述的语言 L(G) 是指 _____ 。

a. L(G)= {α |S=α,α ∈ VT* }b. L(G)={ α |SA=α , α ∈ VT* }c .L(G)={ α |S=α,α∈ (VT ∪ VN)* } d. L(G)= {α |S=α , α∈ (VT ∪ VN)* }3.1.3. 有限状态自动机能识别_。

a. 上下文无关文法b. 上下文有关文法c. 正规文法d. 短语文法3.1.4. 设 G 为算符优先文法, G 的任意终结符对 a, b 有以下关系成立 ____ 。

a. 若 f(a)g(b) ,则 a bb. 若 f(a)<g(b) ,则 a<bc.a~b 都不一定成立d. a~b 一定成立3.1.5 .茹果文法 G 是无二义的,则它的任何句子α _ _。

(西电 1999 年研究生试题)a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同3.1. 6. 由文法的开始符经。

步或多步推导产生的文法符号序列是 ____ 。

(陕西省 2000 年自考题)a .短语 b. 句柄 c. 句型 d. 句子3.1.7 .文法 G : E-E+TITT-T*P|PP-(E)|I则句型 P+T+i 的句柄和最左素短语分别为 __ _。

a. P+T 和 ib. P 和 P+Tc. i 和 P+T+id. P 和 P3.1.8 .设文法为: S--SA|AA→a|b则对句子 aba ,下面 ____ 是规范推导.a. S=SA=SAA=AAA=aAA=abA=abab. S=SA=SAA=AAA=AAa= Aba =abac. S=SA=SAA=SAa=Sba= Aba =abad. S=SA=Sa=Sba= Aba =aba3.1.9. 文法G: S → b| ∧ |(T)T-T,SIS则 FIRSTVT(T)=____ 。

第3章 语法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社

第3章 语法分析-编译原理及实践教程(第3版)-黄贤英-清华大学出版社
• 文法是被用来精确而无歧义地描述语言的句子的构成方式. • 文法描述语言的时候不考虑语言的含义。
3.2.1 文法的定义
例1:有如下规则
<句子><主语><谓语> <主语><代词>|<名词> <代词>我 <名词>大学生 <谓语><动词><直接宾语> <动词>是 <直接宾语><代词>|<名词>
(表示由…组成)
• 归约:推导的逆过程。
• 直接归约:直接推导的逆过程
几个概念的形式定义
• 直接推导: 如果αβ是文法 G=(Vn,Vt,P,S)
的产生式,γ和δ是V*中的任意符号,若有符号 串v,w满足: v=γαδ,w=γβδ,则说v直接产生w,(w是v的 直接推导)记作:v=>w 例:S01, 0S0=>0010(直接推导γ=0,δ=0) • 如果存在v=>w0=>w1=>w2...=>Wn=w(n>0),则 称v推导出w(长度为n),记作v+=>w(至少一步) • 若有v=>w或v=w,则记作v*=>w(0步或若干步)
一个非终结符号,β∈V*)
–上例中: G=(Vn,Vt,P,<句子>)
Vn=(<句子>,<主语>,<谓语>,<代词>,<动词>,
<名词>,<直接宾语>)
Vt= (我,是,大学生)
P=
<句子><主语><谓语>
<主语> <代词>|<名词>

03-第3章-语法分析-编译原理-中国科技大学(共13讲)

03-第3章-语法分析-编译原理-中国科技大学(共13讲)
VT : VN : S: P : 终结符集合 非终结符集合 开始符号,非终结符中的一个 产生式集合, 产生式形式 : A expr (expr) expr id op
• 例 ( {id, +, , , (, )}, {expr, op}, expr, P )
expr expr op expr expr expr op +
3.2 语言和文法
• 无二义的文法 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
3.2 语言和文法
expr expr + term | term term term factor | factor factor id | (expr)
expr term
term expr factor id term factor id expr + term * factor id id + id id 分析树
3.2 语言和文法
3.2.3 验证文法产生的语言 G : S (S) S | L(G) = 配对的括号串的集合 • 按串长进行归纳:配对括号串可由S推出
–归纳基础: S – 归纳假设:长度小于2n的都可以从S推导出来 – 归纳步骤:考虑长度为2n(n 1)的w = (x) y S (S)S * (x) S * (x) y
编译原理和技术
中国科学技术大学 计算机科学与技术学院 陈意云

清华大学编译原理第二版课后习答案

清华大学编译原理第二版课后习答案

Lw.《编译原理》课后习题答案第一章第1章引论第1题解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。

(2)源程序:源语言编写的程序称为源程序。

(3)目标程序:目标语言书写的程序称为目标程序。

(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。

通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。

(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。

(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。

第2题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

答案:一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。

其各部分的主要功能简述如下。

词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。

语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。

语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。

中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。

盛威网()专业的计算机学习网站1《编译原理》课后习题答案第一章目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

表格管理程序:负责建立、填写和查找等一系列表格工作。

编译原理答案(前三章)

编译原理答案(前三章)

编译原理答案(前三章)第 1 章引论第 1 题解释下列术语:答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。

(2)源程序:源语言编写的程序称为源程序。

(3)目标程序:目标语言书写的程序称为目标程序。

(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。

通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。

(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。

(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。

第 2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

答案:一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。

其各部分的主要功能简述如下。

词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。

语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。

语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。

中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。

目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

表格管理程序:负责建立、填写和查找等一系列表格工作。

表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。

916073-编译原理原理与技术-第3章 语法分析

916073-编译原理原理与技术-第3章 语法分析

id
id
E E+E E E +E id E + E id id + E id id + id E
E +E
E
*
E id
id
id
3.2 语言和文法
• 文法的优点
–文法为语言给出了精确的、易于理解的语法规范 –自动产生高效的分析器 –可以给语言定义出层次结构 –以文法为基础的语言的实现便于语言的修改
FIRST(E) = FIRST(T) = FIRST(F) = { ( , id } FIRST(E ) = {+, } FRIST(T ) = {, } FOLLOW(E) = FOLLOW(E ) = { ), $} FOLLOW(T) = FOLLOW (T ) = {+, ), $} FOLLOW(F) = {+, , ), $}
id
+ term
term * factor
factor
id
id id + id id 分析树
3.2 语言和文法
3.2.5 消除二义性 stmt if expr then stmt
| if expr then stmt else stmt | other • 句型:if expr then if expr then stmt else stmt • 两个最左推导: 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
3.3 自上而下分析

编译原理(第二版)第3章 文法和语法

编译原理(第二版)第3章 文法和语法

〈动词〉::= 是 | 学习
〈直接宾语〉::=〈代词〉|〈名词〉
“我是大学生”是否是该语言的句子?
〈句子〉::=〈主语〉〈谓语〉 〈主语〉::=〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::=〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::=〈代词〉|〈名词〉 〈句子〉
}的文法。
分析:n≧1,所以必须用递归规则。a和b的 个数 一样多,但c的个数不同,所以将生成 含 a,b的部分与生成含e的部分分开,A生成 ab,B生成e. G[Z]:Z→AB
A→aAb|ab
B→eB|ε
4)文法的等价
• 若L(G1)=L(G2),则称文法G1和G2是等价的。
如文法G1[A]:A→0R 与 G2[S]:S→0S1 等价
设 z = abc, 那么 z 的头是: ε ,a ,ab , abc(除 abc 外都是固有头) z 的尾是: ε ,c ,bc , abc(除 abc 外都是固有尾)
4、符号串的运算
符号串的长度:符号串中符号的个数.符号串s的长度 记为|s|。 ε的长度为0 符号串的连接:符号串x、y的连接,是把y的符号写在 x的符号之后得到的符号串xy 例 x=ST,y=abu 则 xy=STabu
|x|=2,|y|=3,|xy|=5
εx = xε= x
方幂:符号串x自身连接n次得到的符号串 xx…xx(n个x)定义为 xn x0=ε , x1=x, x2=xx, x3=xxx x=AB, 则 x0=ε , x1=AB, x2=ABAB, x3=ABABAB 对于 n>0, xn = xxn-1 = xn-1x
例如: 汉语的字母表中包括汉字、数字及标点符号等。 C语言的字母表是由字母、数字、若干专用符号及IF、 FOR之类的保留字组成。

编译原理_课件_第三章_语法分析1

编译原理_课件_第三章_语法分析1
29
3.2 推导和语法树
推导、规范推导 短语、句柄、素短语 语法树 文法的二义性
30
【例】设有文法G[N]: N →D|ND
D→0|1|2|3|4|5|6|7|8|9 则句子 12可由三种不同的推导序列推导出来:
(1) N ? ND ? N2 ? D2 ? 12 (2) N ? ND ? DD ? 1D ? 12 (3) N ? ND ? DD ? D2 ? 12
u∈V* ;且 V=VN∪VT。
U称为规则(产生式)左部 ,u称为规则(产生式) 右部。 ? 非终结符号 :需要进一步定义的符号,不会出现在 程序中。 ? 终结符号 :不需要再定义,会出现在程序中。
10
注意:
1、VN∩VT=? ,即文法中的任意一个符号要么是非 终结符,要么是终结符。
2、只用一个产生式并不足以定义一个语法范畴, 一般都需要几个产生式,特别是需要含有 递归的 产生式。
6
3.1.1 文法概述
引例1:
<句子>::=<主语><谓语><状语> <主语>::=<名词> <谓语>::=<动词> <状语>::=<介词><名词> <名词>::=Peter | Berry | river <动词>::=swims <介词>::=in 注:<句子>为要定义的目标,称为识别符号或开始符号。
? 形式语言,只是从语法上研究语言。它是抽象的数学系统, 用于模拟程序设计语言的语法,或者是并不很成功地模拟 自然语言如英语的语法。
? 形式语言理论是编译理论的重要基础,它主要研究组成符 号语言的符号串的集合及它们的表示法、结构与特性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
例3.2写一文法,使其语言是奇数集合,但不允许出现以0打 写一文法,使其语言是奇数集合,但不允许出现以 打 写一文法 头的奇数。 头的奇数。
M B DD … D A
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
0型文法 型文法
0型文法的产生式:α → β, 型文法的产生式: 型文法的产生式 , α∈ (VN∪VT)+且至少含一 N ∈ 且至少含一V β ∈ (VN∪VT)* 相应语言称为0型语言,又称为递归可枚举集合。 相应语言称为 型语言,又称为递归可枚举集合。 型语言
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
文法和语言的分类
Chomsky对文法层次化划分,分为四类: 对文法层次化划分,分为四类: 对文法层次化划分 0型:无约束文法 型 无约束文法 1型:上下文有关文法 型 上下文有关文法 2型:上下文无关文法 型 上下文无关文法 3型:正规文法 型 正规文法
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科nciple of Compiling
句型、 句型、句子
对于文法G[S]: 对于文法 * 如果: 称为G的一个句型, 如果: S ⇒ α ,则α称为 的一个句型, 称为 的一个句型 开始符号是最简单的句型。 开始符号是最简单的句型。 如果:α是 G[S]的一个句型 且α∈VT* , 的一个句型, 如果: 是 的一个句型 ∈ 被称为G[S]的一个句子, 的一个句子 则 α被称为 被称为 的一个句子, 也就是说句子是全部由终结符号组成的句型。 终结符号组成的句型 也就是说句子是全部由终结符号组成的句型。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
习题
• 已知文法 已知文法G[Z]=({Z},{a,b},Z,P) P:Z→ aZb | ab 求该文法确定的语言。 求该文法确定的语言。 • 已知语言为 L(G)={abna | n ≥ 1},构造产生该语言的 已知语言为: , 文法。 文法。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
1型文法 型文法
1型文法的产生式:γ1Aγ2 →γ1δγ2 , 型文法的产生式: 型文法的产生式 其中A 其中 ∈ VN , γ1, γ2∈ (VN∪VT)* δ ∈ (VN∪VT)+ γ1, γ2为上下文 1型文法也可以定义为: 型文法也可以定义为: 型文法也可以定义为 所有规则的右部都比左部长。 所有规则的右部都比左部长。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
文法的语言
文法的语言:定义为: 文法的语言 定义为: 定义为
L(G[S]) = {α | S ⇒α 并且 α ∈ VT*} 一个文法的语言就是该文法的所有的句子的集合。 一个文法的语言就是该文法的所有的句子的集合。 文法的语言是所有终结符号串所组成的集合的子集, 文法的语言是所有终结符号串所组成的集合的子集,一般是真 子集。 子集。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
2型文法 型文法
2型文法的产生式: 型文法的产生式: 型文法的产生式 A→ δ ,其中A ∈ VN , δ ∈ (VN∪VT)* 。 其中 2型文法又称为上下文无关文法。 型文法又称为上下文无关文法。 型文法又称为上下文无关文法 一般的程序设计语言的语法都使用2型文法描述。 一般的程序设计语言的语法都使用 型文法描述。 型文法描述 2型文法的例子:S →ab|aSb 型文法的例子: 型文法的例子
+
文法和语言有如下关系: 文法和语言有如下关系:
– 给定一个文法 就能从结构上唯一的确定其语言,即: G→L(G) 给定一个文法,就能从结构上唯一的确定其语言 即 就能从结构上唯一的确定其语言 – 给定一种语言 能确定其文法,但不唯一,即: L→G1 或G2 或…。 给定一种语言,能确定其文法 但不唯一 能确定其文法 但不唯一, 。 – 若文法G1和文法 所产生的语言相同,即L(G1) = L(G2),则 若文法 和文法G2所产生的语言相同, , 和文法 所产生的语言相同 称文法G1和文法 等价。 和文法G2等价 称文法 和文法 等价。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
文法与语言举例
描述语言L={ban | n>=1}的文法: 的文法: 描述语言 的文法 G=({S,A},{a,b},S,P) P:S →bA P:S →AB A →aA | a B →bB | b描述的语言是: 描述的语言是: 描述的语言是 文法G =({S,A,B},{a,b},S,P) 文法 A →aA | a L={anbm | m,n>=1} ,
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
3型文法 型文法/RG 型文法
文法产生式:( ) 或者A→aB 文法产生式:(1) A→a或者 :( 或者 或者A→Ba (2) A→a或者 ) 或者 其中A, ∈ 其中 ,B∈ VN,a∈VT。 ∈ 3型文法又称为右(左)线性文法,正则文法,其 型文法又称为右( 型文法又称为右 线性文法,正则文法, 语言也称为正则语言。 语言也称为正则语言。 3型文法的例子:S →0|1|1A|2B 型文法的例子: 型文法的例子 A →1A|0B B →0|1|0B
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
例: G = ({E}, {i, +, *, (, ) } , P , E) P: E → E + E | E * E | ( E ) | i : 表达式(i)和 的推导: 表达式 和(i+i)*i的推导: 的推导
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling 产生标识符的文法。 例:产生标识符的文法。 产生标识符的文法 L:“字母”类非终结符, L→a∣b∣…∣z; “字母”类非终结符 ∣ ∣ D:“数字”类非终结符, D→0∣1∣…∣9; “数字”类非终结符 ∣ ∣ T:“字母或数字”类非终结符,则有:T→L∣D; “字母或数字”类非终结符,则有: ∣ ; S:“字母数字串”类,S→T∣ST; “字母数字串” ∣ ; I:“标识符”,I→L∣LS; “标识符” G=({a,b,…,z,0,…,9},{I,S,T,L,D},I,P) … … P:I→L∣LS ∣ S→T∣ST ∣ T→L∣D ∣ L→a∣b∣…∣z ∣ ∣ D→0∣1∣…∣9 ∣ ∣
Principle of Compiling
第3章 语法分析 章
3.1 文法和语言 3.2 推导与语法树 3.3 自上而下分析方法 3.4 自下而上分析方法 3.5 LR分析法 分析法
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
Principle of Compiling
3.1 文 法 和 语 言
文法是程序语言的生成系统; 文法是程序语言的生成系统 自动机则是程序语言的识别系统 用文法可以精确地定义一个语言,并依据该文法构 造出识别这个语言的自动机。 程序语言的词法可用正规文法描述; 语法可用上下文无关文法描述; 语义则要借助于上下文有关文法描述。
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
中中位 最 高 位
长春工业大学计算机科学与工程学院2011春 长春工业大学计算机科学与工程学院2011春 2011
最 低 位
Principle of Compiling 最高位允许出现 ~ ,用非终结符B表示 表示; 最高位允许出现1~9,用非终结符 表示; 允许出现 中间部分可出现任意多位数字0~ ,每一位用非终结符D表示 表示; 中间部分可出现任意多位数字 ~9,每一位用非终结符 表示; 最低位只允许出现 、 、 、 、 等奇数 等奇数, 表示。 最低位只允许出现1、3、5、7、9等奇数,用A表示。 只允许出现 表示 由于中间部分可出现任意位,引入了一个非终结符M, 由于中间部分可出现任意位,引入了一个非终结符 ,它包括最 高位和中间位部分。 高位和中间位部分。 文法为: 文法为: G=({0,1,…,9},{N,A,M,B,D},N,P) … P:N→A∣MA ∣ M→B∣MD ∣ /*一位数字 多位数字 一位数字│多位数字 一位数字 多位数字*/ /*仅两位数字 无中间位 多于两位数字 仅两位数字(无中间位 多于两位数字*/ 仅两位数字 无中间位)│多于两位数字
Principle of Compiling
文法
文法通常表示成四元组G=(VT,VN,S,P),其中: 文法通常表示成四元组G=(V P),其中: 为终结符号集, 这是一个非空有限集, (1)VT 为终结符号集 , 这是一个非空有限集 , 它的每个 元素称为终结符号; 元素称为终结符号; 为非终结符集, 它也是一个非空有限集, (2)VN 为非终结符集 , 它也是一个非空有限集 , 其每个 元素称为非终结符号,且有VT∩VN=Φ; =Φ; 元素称为非终结符号,且有V 为一文法开始符, (3)S为一文法开始符 , 是一个特殊的非终结符号 , 即 )S 为一文法开始符 是一个特殊的非终结符号, S∈VN; (4) P是产生式的非空有限集, 其中每个产生式 或称规 是产生式的非空有限集,其中每个产生式(或称规 是产生式的非空有限集 是一序偶(α, ,通常写作α→β或α::=β, α∈(VT∪VN)+ 则)是一序偶 ,β),通常写作 是一序偶 或 ∈ 且至少有一个非终结符,而β∈(VT∪VN)* 且至少有一个非终结符, ∈
相关文档
最新文档