第2章 程序语言基础知识(文法-正规式-有限自动机

合集下载

第2章程序语言的基本知识

第2章程序语言的基本知识
2024/8/5
句子 主语 谓语
主语 冠词 形容词 名词
冠词the
形容词 grey
谓语 动词 直接宾语
动词 助动词 动词原形
助动词will 动词原形 eat
直接宾语 冠词 名词
名词wolf
名词 goat
(1) (2)
(5) (6)
(9)
17
分析句子
The
grey
wolf will
eat
the
分析树
句型推导
对应关系
2024/8/5
43
E→E+T
2.3 分析树和二义性
E→T T→T*F
T→F
F → (E)
为句型推导构造分析树
F→a
例子: E T T*F F*F a*F a*a
E
T
T* F
F
a
a
2024/8/5
44
E
2.3 分析树和二义性
T
分析树的特性:
根标识为开始符号 内部结点标识为非终结符号
推导是用产生式的右部代替左部,归约是用产生式的 左部代替右部,归约是推导的逆过程
2024/8/5
28
2.2 文法和语言
推导的长度 直接推导的次数 α β,长度大于等于 1 的推导 α β,长度大于等于 0 的推导
推导的例子:
S 0S1 00S11 000111,长度为 3
记为:S 000111
2024/8/5
40
2.2 文法和语言
表达式文法:G = ( {+,*,id,(,)}, {E}, E, P ) P: E → id E → E+E E → E*E E → (E)
E 表示算术表达式, id 表示程序的“变量”,该文法

第二章 程序语言的基本知识

第二章 程序语言的基本知识
17
文法和语言
• 有限文法,无限句子——以有限的规则描述 无限的语言现象(语言的有穷描述)
• 有限:产生式集合、终结符集合、非终结符集合 • 无限:可以导出无穷多个句子(L也可是有穷)
• 如果文法中有递归,就可以用有限的文法产 生无限的句子。 • 通过有限规则把握无限句子,显示了乔姆斯 基文法的威力,也从一个侧面证实了小孩可 以容易学好语言。
28
E
E
+
E
id
E
*
E
id
id
分析树和二义性
• 推导的过程可以用一棵树来描述
文法:E→E+E | E*E |(E) | id 生成句子: id + id * id 推导过程: E⇒E+E ⇒id+E ⇒id+E*E ⇒id+id*E ⇒id+id*id
29
E
E
+
E
id
E
*
E
id
id
分析树和二义性
18
特殊形式的推导
• 在推导一个句型的过程中,选择哪一个非终 结符号来进行推导呢?
• 最左推导: 每一步的推导都施加在句型的最左边的 非终结符号上,记为⇒lm • 最右推导: 每一步的推导都施加在句型的最右边的 非终结符号上,记为⇒rm,最右推导也称为规范推 导
• 由最左推导或最右推导生成的句型分别称为 左句型和右句型
9
文法和语言
• 文法理论是乔姆斯基在上世纪50年 代提出的,包含四类形式文法理论, 在编译原理中,主要用到的是上下 文无关文法和正规文法(也叫正则文 法) • 文法G是一个四元组G=(VT, VN, S, P)
• • • • • VT是终结符号集 VN是非终结符号集 其中VT∩VN=∅,V=VT∪VN是词汇表 S是开始符号 P是产生式规则集合 • P={α→β|α至少包含一个非终结 符号}

2019年郑州大学编译原理第2章.ppt

2019年郑州大学编译原理第2章.ppt
(3)若E为表达式,是一元运算符,则 E (或E )
也 是表达式;
(4) 若E为表达式,则 ( E )也是表达式。
二、语句
1、赋值句 2、控制语句
无条件转移语句 条件语句 循环语句 过程(或函数)调用语句 返回语句
3、说明句 4、简单句和复合句
§2.3 程序语言的语法描述
本节介绍高级语言语法结构的形式化描述问题
例题2.5
构造一个文法G4,使得
L(G4)={ ambn | m>n≧0 } 正解:文法G4: SAB Aa|aA BaBb|ε
上下文无关文法定义 归纳起来,一个上下文无关文法包括四个组成 部分: 一组终结符号 如:me ,book,gave 等 一组非终结符号 如:<主语>,<谓语> 等 一个开始符号 如: <句子> 一组产生式 如: <间接宾语> → <代词> <直接宾语> → <冠词> <名词>
上下文无关文法定义
形式上说,一个上下文无关文法G是一个四元式: G=(VT,VN,S,),其中: VT是一个非空有限集,它的每个元素为终结符号; VN是一个非空有限集,它的每个元素为非终结符号 且VT∩VN= Φ S 是一个非终结符号,称为开始符号; 是产生式有限集合,形如 A→α * 其中:A∈ VN, α∈(VT U VN) 。 注: 开始符号S是一个特殊的非终结符号,它至少 必须在某个产生式的左部出现一次。
语义规则 是指这样的一组规则,使用它可以定义一
个程序的意义。

描述语义规则的工具:
基于属性文法的语法制导下的翻译方法
2.1.3 程序
所谓程序,是描述一定数据的处理过程,即包括描述 数据和对数据的运算两个功能。

正规文法与正规式

正规文法与正规式

正规⽂法与正规式 3型⽂法也叫作正规⽂法,它对应于有限状态⾃动机,它是在2型⽂法的基础上满⾜:A->a|aB(右线性)或A->a|Ba(左线性)。

如果有A->a,A->aB,B->a,B->cB则符合3型⽂法的要求。

但是A->ab,A->aB,B->a,B->cB或A->a,A->Ba,B->a,B->cB则不符合3型⽂法的要求。

也就是说,不能够推导出两个终结符,⽽且左线性和右线性只能使⽤⼀种,不能够同时出现。

1.分别写出描述以下语⾔的正规⽂法和正规式:(1)L1={ab n a|n≥0}。

(2)L2={a m b n|n≥1,m ≥1}(3)L3={(ab)n|n≥1}答:(1) S → aA A → bA | a L1 = ab*a (2)S → aAA → aA | bB | b B → bB | b L2 = a*b* (3)S → aA A → bB B → aA | ε L3 = (ab)*2.将以下正规⽂法转换到正规式·Z→0A· A→0A|0B· B→1A|ε答:Z = 0A A = 0A + 0B B = 1A + ε A = 0A + 0(1A + ε) = 0A + 01A + 0 A = aA | b Z = 0(0 | 01)*0Z→U0|V1 U→Z1|1 V→Z0|0答:Z = U0 + V1 U = Z1 + 1 V = Z0 + 0 Z = (Z1+1)0 + V1 Z = (Z1+1)0 +(Z0+0)1 Z = Z10 + 10 +Z01 + 01 Z = Z(10+01)+10+01 Z = (10+01)*1001 Z = (10 | 01)*1001S→aA A→bA|aB|b B→aA答:S = aAA = bA + aB + b B = aA A = bA + a(aA) +b = (b + aa)A +b S = (b | aa)*bI→l|Il|Id答: I = l + Il + Id I = l + I(l +d) I = l(l | d)*。

正规文法与有限自动机的相互转换.

正规文法与有限自动机的相互转换.

正规文法与有限自动机的相互转换二零一五年十二月二十七日目录摘要 (1)关键词 (1)1课题综述 (1)1.1目的 (1)1.2设计内容 (1)1.3设计原则 (1)2系统分析 (2)2.1正规式 (2)2.2有限自动机(有穷自动机) (2)2.3NFA向DFA的转换 (3)2.4正规式与有限自动机之间的转换 (3)3系统设计 (4)3.1从正规文法到有限自动机 (4)3.11正规文法到有限自动机的等价性证明 (4)3.12 正规文法到有限自动机的构造方法 (5)3.2从有限自动机到正规文法 (6)3.21 有限自动机到正规文法的等价性证明 (6)3.22 有限自动机到正规文法的构造方法 (7)4 运行与测试 (7)总结 (9)参考文献 (9)附录 (10)摘要:正规文法包括左线性文法和右线性文法。

由于正规文法和正规表达式在描述语言的能力上是等价的,而正规表达式和有限自动机在描述语言的能力上也是等价的,因此,正规文法和有限自动机之间也存在着等价性。

通常,对于正规文法G和有限自动机M,G所定义的语言记作L(G),M所能识别的语言记作L(M),如果有L(G)=L(M),则称G和M是等价的。

关键词:正规文法;有限自动机;等价性;构造方法1课题综述1.1目的1.理解正规文法与有限自动机(FA)的本质联系;2.掌握正规文法与有限自动机之间相互转化的算法原理;3.学会使用Visual C++等编程工具实现正规文法与有限自动机之间的相互转化;1.2设计内容使用Visual C++/Visual C#等工具,设计软件MySoft_3,可以实现以下功能:1.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取文法的产生式、非终结符、终结符、开始符等基本信息;2.判断该文法是否为正规文法,若是,则将其转化为有限自动机;3.根据用户输入的文本文件(*.txt)的名称,打开文件,并从文件中获取有限自动机的状态集、字母表、初态、终态集、转移函数等基本信息;4.判断该自动机是否合法,若合法,则将其转化为正规文法;1.3设计原则正规文法与有穷自动机有着特殊的关系,采用下面的规则可从正规文法G直接构造一个有穷自动机NFA M;使得L(M)=L(G):(1)M的字母表与G的终结符相同;(2)为G中的每一个非终结符生成M的一个状态,G的开始符S是开始状态;(3)增加一个新状态Z,作为NFA的终态;(4)对G中的形如A->tB的规则(其中T为终结符或,A为非终结符的产生式),构造M的一个转换函数f(A,t)=B;(5)对G中形如A->t的产生式,构造M的一个转换函数f(A,t)=Z。

软件设计师教程

软件设计师教程
命令式和结构化程序设 计语言 面向对象的程序设计语 言 函数式程序设计语言 逻辑型程序设计语言
2.1.2 程序设计语言的基本成分
程序设计语言的数据成分
01
02
03
常量和变 全局量和 数据类型

局部量
2.1.2 程序 设计语言的 基本成分
程序设计语言的运算成分
程序设计语言的控制部分
顺序结构
选择结构
01
符号表 管理
02
出错处 理
文法和语言的形式描述
1
字母表、字符串、字符串集合及 运算
2
文法和语言的形式描述
3
词法分析
4
正规式与有限自动机之间的转换
5
词法分析器的构造
6
语法分析
文法和语言的形式描述
语法制导翻 译和中间代 码生成
中间代码优 化和目标代 码生成
文法和语言的形式描述
文法和语言的形式描述
外存储器
01
磁表面 存储器
02
光盘存 储器
03
固态硬 盘
1.2.2存储系统
磁盘阵列技术
1.2.2存储系统
存储域网络
1.2.3输入/输出技术
微型计算机中最常 用的内存与接口的
编址方法
直接程序控 制
中断方式
直接存储器 存取方式
输入/输出处 理机(IOP)
1.2.3输入/输 出技术
微型计算机中最常用的内存与接口 的编址方法
指令的流水处理
指令控制方式 流水线的种类 流水的相关处理 吞吐率和流水建立时 间
1.2.1计算机体 系结构的发展
阵列处理机、并行处理机和多处理 机01 Nhomakorabea列处 理机

编译原理2.2自动机理论

编译原理2.2自动机理论
编译原理2.2自动机理论
contents
目录
• 自动机概述 • 有限自动机 • 正则文法和正则表达式 • 确定有限自动机(DFA) • 非确定有限自动机(NFA)
01 自动机概述
定义与分类
定义
自动机是一个抽象的机器,用于模拟有限状态系统的行为。它由一组状态、一 组输入符号和一组转移函数组成,根据输入符号和当前状态来决定下一个状态。
正则文法与正则表达式的转换
正则文法转换为状态机
通过构造一个状态机来描述正则文法的语言,状态机中的每个状态对应一个产生式,状态之间的转移 对应于产生式的应用。
正则表达式转换为状态机
将正则表达式转换为状态机的方法包括确定化和非确定化两种。确定化是将一个不确定的状态机转换 为确定的状态机,非确定化是将一个确定的状态机转换为不确定的状态机。
工具辅助
使用自动机生成工具或编译器工具集中的工 具,如Lex或Yacc等,根据语言规范生成 DFA。
DFA的应用实例
词法分析
01
DFA可以用于实现词法分析器,将输入的字符串分割成一个个
单词或符号。
正则表达式匹配
02
DFA可以用于实现正则表达式匹配算法,判断一个字符串是否
符合正则表达式的模式。
语法分析
正则表达式的应用实例
1 2
文本匹配
正则表达式可以用来匹配文本中的特定模式,例 如查找字符串中的数字、邮箱地址等。
文本替换
正则表达式可以用来替换文本中的特定模式,例 如将字符串中的所有数字替换为特定字符。
3
文本解析
正则表达式可以用来解析文本中的结构化数据, 例如从CSV文件中提取数据。
04 确定有限自动机(DFA)
正则文法的性质

软件设计师-程序语言基础知识(二)1

软件设计师-程序语言基础知识(二)1

软件设计师-程序语言基础知识(二)1(总分:34.00,做题时间:90分钟)一、综合知识试题(总题数:34,分数:34.00)1.以下关于变量和常量的叙述中,错误的是______。

A.变量的取值在程序运行过程中可以改变,常量则不行B.变量具有类型属性,常量则没有C.变量具有对应的存储单元,常量则没有D.可以对变量赋值,不能对常量赋值(分数:1.00)A.B. √C.D.解析:[解析] 常量是在程序运行过程中值不可以改变的数据。

根据数组的组织类型的不同,可以将数据分为基本数据类型、用户自定义数据类型、构造类型等。

变量具有类型属性,常量也有数据类型,如整数常量、字符串常量等。

2.编译程序分析源程序的阶段依次是______。

A.词法分析、语法分析、语义分析 B.语法分析、词法分析、语义分析C.语义分析、语法分析、词法分析 D.语义分析、词法分析、语法分析(分数:1.00)A. √B.C.D.解析:[解析] 词法分析是编译过程的第一个阶段,其任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。

语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。

如果源程序中没有语法错误,语法分析后就能正确地构造其语法树。

语义分析阶段的主要任务是检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。

3.下图所示的有限自动机中,0是初始状态,3是终止状态,该自动机可以识别______。

A.abab B.aaaa C.bbbb D.abba(分数:1.00)A.B. √C.D.解析:[解析] 从初始状态到终止状态有多条路径。

在状态0输入a到达状态2;在状态2可输入a或b,输入a到达状态1,输入b到达状态3;状态3下输入a还回到状态3;在状态1可输入a或b,输入a到达状态3,输入b到达状态2。

4.下图所示为两个有限自动机M1和M2(A是初态、C是终态),______。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章程序语言基础知识
编译原理2-78
1.文法
认识终结符(不可拆分,小写)和非终结符(可拆分,大写)
终结符不可单独置前
eg:有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则:S为开始符,S,A,B为非终结符,p,q,a,b,c,d为终结符
文法的类型
0型文法(限制最少的一个)
设G=(V N,V T ,P,S),如果它的每个产生式α---→β是这样结构:
α属于(V N并V T)*(闭包)且至少含有一个非终结符,而β属于(V N并V T)*,则G是一个0型文法。

0型文法也称短语文法。

一个非常重要的理论结果是:0型文法的能力相当于图灵机(Turing)。

或者说,任何0型语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言。

1型文法
也叫上下文有关文法,此文发对应于线性有界自动机。

它是在0型文法的基础上每一个α---→β,都有|β|>=|α|。

这里的|α|表示的是α的长度。

注意:虽然要求|β|>=|α|,但有一特例:α---->空也满足1型文法。

如有A->Ba 则|β|=2,|α|=1 符合1型文法要求。

反之,如aA->a,则不符合1型文法要求。

2型文法
也叫上下文无关文法,它对应于下推自动机。

2型文法是在1型文法的基础上,再满足每一个α-→β
都有α是非终结符。

如A->Ba,符合2型文法要求。

如Ab->Bab虽然符合1型文法要求,但是不符合2型文法要求,其中α=Ab,Ab不是一个非终结符。

3型文法
也叫正规文法,它对应于有限状态自动机。

它是在2型文法满足的基础上满足:
A->α|αB(右线性)或A->α|Bα(左线性)
如:A->a,A->aB,B->a,B->cB,则符合3型文法的要求。

但如果推导为:A->ab,A->aB,B->a,B->cB
或:A->a,A->Ba,B->a,B->cB则不符合3型文法的要求。

如何判断一个串是否为某个文法的句型
Eg1:已知文法G[S ] : S->A0|B1 ,A->S1|1 ,B->S0|0 :该文法属于桥穆斯定义的___( 1 )___文法,它不能产生串___( 2 )__。

(1) A.0型 B.1型 C.2型 D.3型
(2) A.0011 B.1010 C.1001 D.0101
S->A0 S->B1
A->S1 A-> 1
B->S0 B->0
S->A0->S10->A010->1010
S->A0->S10->B110->0110
S->B1->S01->A001->1001
S->B1->S01->B101->0101
S
/ \
A 0
/ \
S 1
/ \
A 0
/ \
1
2.正规式
正规式与正规文法之间的转换
文法G[S] :S->xSx|y 所描述的语言是_______(n>=0)
A.(xyx)n
B. xyx n
C.xy n x
D. x n yx n
Eg:
对于以下编号为1,2,3的正规式,正确的说法是____正则式2,3等价______。

1.(aa*|ab)* b
2.(a|b) * b
3.((a|b) * |aa) * b
(a|b) * 与((a|b) * |aa) *都是a与b的任意组合。

Eg:
语言L={a m b m|m>=0,n>=1}的正规表达式是_______。

A.a*bb*
B.aa*bb*
C.aa*b*
D.a*b*
L=am(m>=0)的正规表达式是a*
3.有限自动机(有穷自动机)
NFA(不确定的有限自动机)与DFA(确定的有限自动机)
确定的有限自动机(DFA)的定义:
一个确定的有限状态自动机M(记做DFAM)是个五元组: M={S,∑,f,S0,Z}
其中:
1)S是一个有限状态集合
2)∑是一个字母表,它的每个元素称为一个输入字符
3)f是一个从S*∑值S的单值部分映射。

f (s,a)=s` 意味着:当现行状态为s,输入字符为a时,将转换到下一个状态s`。

我们称s` 为s 的
一个后继状态。

4)S0属于S,是唯一的初态
5)Z 包含于S,是一个终态集
Eg:
有限状态自动机可以形象地用状态转换图来表示,设有限状态自动机:
DFA=({S,A,B,C,f },{1,0},F,S,{ f }),其中:
K(S,0)=B,K(S,1)=A,K(A,0)= f ,K(A ,1)=C,K(B,0)=C,
K(B,1)=f,K(C,0)=f ,K(C,1)=f ,画出对应的状态转换图:
不确定的有限自动机(NFA)的定义:
S0包含于S,是一个非空初态集
Z 包含于S,是一个终态集
NFA转化为DFA
Eg:
已知一不确定的有限自动机(NFA)如图所示,采用自己发将其确定为DFA的过程如下所示:
状态集T1中不包括编号为______(1)_____的状态,状态集T2中的成员有
______(2)_____,状态集T3等于______(3)_____。

1)A. 2 B. 4 C. 3 D. 5
2)A. 1,3,4,5,Z B. 2,3 C. 6 D.4,5,Z
4个中只有T1 ,{4,5,Z}可在下排,股T2={4,5,Z}
.将输入数得出结果不同的非空集合编号
1
2 3
3 4
正规式与有限自动机之间的转化
Eg:
把下面的正规式转换成有限自动机:表示符,a(字母),d(数字) ( _ | a ) ( _ | a | d )
*
Eg:
某一非确定性有限自动机(NFA)的状态转换图如图所示,该NFA等价的正规式是______。

q0即是初态,也是终态
A.0* | ( 0 | 1 ) 0 B.(0|10)* C. 0*((0|1)0)*
D.0*(10)*
C、D 0100表现不出
4.语法推导树
一棵语法树应具有一下特征:
1)每个节点都有一个标记,此标记是V的一个符号V终结符Vt与非终结符Vn 的集合
2)根的标记是S
3)若一节点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在Vn中4)如果节点n的直接子孙,从左到右的次序是节点n1,n2,….nk, 其标记分别是:A1,A2,..Ak,那么
A->A1A2..Ak,一定是P中的一个产生式。

Eg:
文法G=({a,b},{S,A},S,P),其中S->aAS|a A->SbA|SS|ba
请构造句型aabAa的推导树。

S->aAS
S->a
A->SbA
A->SS
A->ba
短语、简单短语、句柄
令G是一文法,S是文法的开始符号,abc是文法G的一个句型。

如果有
,则称b是句型abc相对于非终结符A的短语。

特别是,如有A=>b,则称b 是句型abc相对于规则
A->b的直接短语(也称简单短语)。

一个句型的最左直接短语成为该句型的句柄。

Eg:
一个上下文无关文法生成句子abbaa的推导树如图所示。

5.算符优先***
难(可放弃)。

相关文档
最新文档