the 词法分析第二章形式语言与自动机理论基础guide download

合集下载

编译原理 第2章 词法分析

编译原理 第2章 词法分析

㈢单词二元式编码
经词法分析后,单词用二元式 (code,val) 表示。 code表示单词的种别,用整数码表示。单词种别表示单词 的语法特性,在语法分析时使用。 val表示单词的值,在本书中用字符串表示。单词值表示了 单词的语义特性,在语义分析时使用。
㈣编码原则
通常将标识符归为一种,常数按类型分种,基本字、运算 符及界符采用一符一种。 如果一个种别仅包含一个单词,那么单词种别就可代表该 单词,无需给出单词值。为了输入和处理的方便,无意义的 单词值用字符串"NUL"表示。若一个种别含有多个单词,除 给出种别外,还需给出它的值。
②预处理主要工作 删除注释 删除续行符,以及后续换行符(0AH)。 换行符、TAB和空格具有界符作用,预处理时通常予以保留。 在后面的分析中可以看到,它们的存在反而给后续的单词识别 带来方便。为了简化判断,可在预处理时,将换行符和TAB统 一替换为空格。 大多数语言(除C语言)不区分大小写,可在预处理时,将 大写字母变换成小写字母,或相反,以方便后续处理。 对于受书写格式限制的语言(例Fortran和Cobol),还应识 别标号区,正确给出语句标号。识别续行标志,把相继行捻接 在一起,给出语句结束符。 上述源程序经预处理后,扫描缓冲区中的内容如下所示:
第2章 词法分析
2.1 词法分析器的设计考虑及手工构造
2.1.1 单词类型及二元式编码 2.1.2 源程序的输入及预处理 2.1.3 基本字的识别和超前搜索 2.1.4 遍 2.1.5 状态转换图和词法分析器的手工构造
2.2 正规式、自动机及词法分析器的自动生成
2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 基本概念 正规式与正规集 确定有限自动机(DFA) 非确定有限自动机(NFA) 正规式与确定有限自动机的等价性

形式语言与自动机基础PPT课件

形式语言与自动机基础PPT课件

f(qoe,0)= qee f(qoe,1)= qoo f(qeo,0)=qoo f(qeo,1)= qee
f( qeo ,1)= qeeZ
所以串$1= 110101可以被M1接受。
f(qoo,0)=qeo f(qoo,1)= qoe
f( qee , 110101 )= f(f( qee ,11010),1)=
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.2 非确定的FA(NFA)
一. NFA的定义
DFA的确定性表现在其映射函数是一个单值函 数。但是实际问题中,映射函数往往是一个多值函 数。
例如,源程序中扫描到一个字母时,不同的语言 对应多种情况:
FORTRAN中: 标识符/格式转换码E、D…
Ch2 形式语言自动机理论基础 2.2 自动机基础
第 2 章 形式语言与自动机基础
2.2 有限自动机基础 2.2.1 确定的有限状态自动机(DFA) 2.2.2 非确定的有限状态自动机(NFA) 2.2.3 NFA确定化 2.2.4 DFA化简
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.1 确定的FA(DFA)
Q
q0
Z
其中状态转换函数f为:
f(q0,0)= {q0,q3}
f(q1,0)=
f(q2,0)= {q2} f(q3,0)= {q4} f(q4,0)= {q4}
f(q0,1)= {q0, q1} f(q1,1)={ q2} f(q2,1)= {q2}
f(q3,1)=
f(q4,1)={ q4}
Ch2 形式语言自动机理论基础 2.2 自动机基础 2.2.2 非确定的FA(NFA)
1) p0=q0 2) f(pi,wi+1)=pi+1,i=0,1,,n-1 3) pnZ

第2章 语言分析基础(3)

第2章 语言分析基础(3)

例:i + i * E 最右推导过程:E=>E ?
表示为如下的:
+ E
=>E + E * E =>E + E * i
=>E + i * i
=>i + i * i
21
=>i + i * i
2.5 上下文无关文法及其语法树
2.语法树
对文法G[S]=(VT,VN,S,P) ,满足下列条件的树称为G[S]的语法树: (1) 结点:终结符或非终结符; (2) 根结点:文法开始符S; (3) 内部结点( 指非树叶结点 ):非终结符 如果某内部结点A有n个儿子,它的所有子结点从左至右依次 标记为x1、x2、…、xn,则A→x1x2…xn一定是文法G[S]的一 条产生式。
34
文法G[E]如下: E→E+E E→E*E E→( E ) E→i
的优先顺序和结合规则,即:
(1) *优先于+ (2) *、+都服从左结合 这样,对文法G[E]中的句子 i+i*i就只有如右图所示的惟
一一棵语法树。
2.5 上下文无关文法及其语法树
文法二义性消除示例
【例】将文法G[E]改写为无 二义性的文法如下: G'[E]: E→E+T∣T
∴ 是二义文法。文法没有规定∧、∨、 的优先 级和结合性。 按惯例规定∧、∨、 的优先级和结合性,改 写文法为无二义的文法:S → S∨A | A
A → A∧B | B
B → S | (S) | i
36
课堂练习
证明文法:S→SaS|ε为二义文法,并将其改 写为无二义的文法。 证明:∵ 存在句子aa对应两棵语法树 ∴ 该文法是二义文法。 S

编译原理-2-形式语言与自动机-I

编译原理-2-形式语言与自动机-I
LISP: Define
(function1) (paras) (statements)
(function2) (paras) (statements)
(function3) (paras) (statements) … (functionn) (paras) (statements) (functioni actual-paras) (functioni actual-paras) (functioni actual-paras) …
符号串的长度 如果某符号串x中有m个符号,则称其 长度为m,表示为|x|=m,如001110的长度是6。 空符号串,即不包含任何符号的符号串,用ε表示, 其长度为0,即|ε|=0。
2014-6-13 21
符号串的头,尾,固有头和固有尾:如果z=xy是一符号 串,那么x是z的头,y是z的尾,如果x是非空的,那 么y是固有尾;同样如果y非空,那么x是固有头。 举个例子:设z=abc,那么z的头是ε ,a,ab,abc,除abc外, 其它都是固有头;z的尾是ε ,c,bc,abc,z的固有尾是 ε ,c,bc。 当对符号串z=xy的头感兴趣而对其余部分不感兴趣 时,采用省略写法:z=x…; 如果只是为了强调x在符号串z中的某处出现,则可 表示为:z=…x…;符号t是符号串z的第一个符号, 则表示为z=t…。
语法 -- 表示构成语言句子的各个记号之间的组合规律 语义 -- 表示各个记号的特定含义。(各个记号和记号
所表示的对象之间的关系)
语用 --表示在各个记号所出现的行为中,它们的来源、
使用和影响。
每种语言具有两个可识别的特性,即语言的形式 和该形式相关联的意义。 语言的实例若在语法上是正确的,其相关联的意 义可以从两个观点来看,其一是该句子的创立 者所想要表示的意义,另一是接收者所检验到 的意义。这两个意义并非总是一样的,前者称 为语言的语义,后者是其语用意义。幽默、双 关语和谜语就是利用这两方面意义间的差异。

《编译原理》2.2第二章形式语言与自动机理论基础

《编译原理》2.2第二章形式语言与自动机理论基础


综述—求Ia步骤:
(1) 求ε-closure(I); (2) 求J; (3) 求ε-closure(J);

NFA确定化关键: (1) 消去ε弧; ——_closure(I) (2) 解决映射不唯一问题 ——求Ia
31
练习
0
1
2
a b
3


b b a 6 7 8 9 10
32
从具体例子的讨论,提炼出从NFA构造DFA的算法。
0
1
2
a

3 a b b 6 8 7 9 10
0,1,2,4,7 a b 3,8,6,1,2,4,7
b 5 4

5,6,1,2,4,7
33
从NFA构造DFA的方法——子集法

步骤1:初始化
对NFA M’=(S, {Σ1, Σ2, …, Σn }, f, S0, Z) 设一 矩阵形式的表:

状态矩阵表示
10
DFA M 接受的语言

∑*上的符号串w被DFA M接受
M=(Σ ,Q,f,S,Z)
若ω ∑ * ,f(S, ω)=P,其中S为 M的开始状态, P Z,Z为终态集。
则称ω为DFA M所接受(识别).

确定的自动机M所识别的字符串的全体称为M识 别的语言,记为L(M)
练习:
DFA M=({S,U,V,Q},{a,b},f,S,{Q})其 中f定义为: f(S,a)=U f(S,b)=V f(V,a)=U f(V,b)=Q
f(U,a)=Q
f(U,b)=V

f(Q,a)=Q
f(Q,b)=Q
画出状态图 证明t=baab被DFA M所接受

形式语言与自动机理论第二版教学大纲

形式语言与自动机理论第二版教学大纲

形式语言与自动机理论第二版教学大纲课程简介该课程主要介绍形式语言、自动机和计算复杂性理论的基本知识。

通过学习这些理论,学生将能够理解计算机语言和计算的本质,以及计算机处理问题时的优劣势和限制。

本课程将重点介绍自动机的概念、使用和应用。

学习目标•理解形式语言和自动机的基本概念和术语,如有限状态自动机、正则语言、上下文无关文法等。

•学习计算复杂性理论的基本知识,理解P、NP等复杂度概念。

•掌握自动机模型的使用和应用,能够构造和证明特定自动机模型的特性和性质。

课程内容第一章:形式语言与自动机•形式语言和自动机的基本概念和术语•正则语言和正则表达式•上下文无关文法和上下文无关语言•上下文有关文法和上下文有关语言第二章:有限状态自动机•有限状态自动机的定义和运作原理•正则语言和有限状态自动机的等价性•正则表达式到有限状态自动机的转换•有限状态自动机的最小化问题第三章:上下文无关文法和语言•上下文无关文法的定义和特点•文法的基本组成部分:终结符、非终结符和产生式•上下文无关语言和上下文无关文法之间的关系•Chomsky范式和柯尔莫戈洛夫复杂度下限第四章:推导树和语法分析器•推导树的概念和用途•自下而上(LR分析器)和自上而下分析器(LL分析器)的概念和区别•LR、LL分析器的构造算法第五章:上下文有关文法和语言•上下文有关文法的定义和特点•上下文有关语言和上下文有关文法之间的关系•推导和语言识别•非概率上下文有关文法和语言第六章:计算复杂性理论•P、NP问题的定义和区别•NP问题的证明方法:证书、多项式可验证和非确定图灵机•NP完全问题和可还原性的概念•NP问题的P约简和相对问题第七章:图灵机及其变体•图灵机的概念和基本结构•图灵机的相对能力•图灵机的变体:可计数和带计数的图灵机•智能计算和互模拟教学方法本课程将采用讲授、课堂互动、案例分析等多种教学方法,以帮助学生更好地理解理论和应用。

在每章节结束时,还将提供一些简单的练习题和课后作业,以帮助掌握相关的理论和算法。

形式语言与自动机理解

形式语言与自动机理解

形式语言与自动机理解形式语言是一种特殊的语言,它是由一组符号和规则组成的,用来描述各种抽象结构和过程。

形式语言在计算机科学、数学和逻辑学等领域有着广泛的应用。

自动机是一种抽象的数学模型,用来描述计算过程或运算过程。

自动机理论是计算机科学中的一个重要分支,它研究自动机的性质、行为和应用。

形式语言可以分为四种类型:无限制文法、上下文相关文法、上下文无关文法和正规文法。

这些文法分别对应着Chomsky文法的四种类型,用来描述不同类型的语言结构。

在自动机理论中,也有对应的四种自动机模型:图灵机、线性有限自动机、下推自动机和有限状态自动机。

这些自动机模型分别对应着Chomsky层次结构中的四种语言类型。

有限状态自动机是最简单的自动机模型,它由一个有限个状态和一组状态转移函数组成。

有限状态自动机可以接受或拒绝一个输入字符串,从而判断该字符串是否符合某种模式。

有限状态自动机广泛应用于词法分析、编译器设计、模式匹配等领域。

正规文法对应着正规语言,正规语言可以被有限状态自动机接受。

正规语言是最简单的语言类型,它包括正则表达式描述的字符串集合。

正规文法和有限状态自动机之间存在着一一对应的关系,它们可以互相转换,从而描述同一个语言。

上下文无关文法对应着上下文无关语言,上下文无关语言可以被下推自动机接受。

下推自动机是一种更加复杂的自动机模型,它具有一个栈用来存储中间结果。

下推自动机广泛应用于编译原理、自然语言处理、生物信息学等领域。

上下文相关文法对应着上下文相关语言,上下文相关语言可以被线性有限自动机接受。

线性有限自动机是一种更加复杂的自动机模型,它具有一个线性有限控制器和一个栈用来存储中间结果。

线性有限自动机广泛应用于形式语言理论、计算理论、自动机理论等领域。

形式语言与自动机理论是计算机科学中非常重要的基础理论,它们为计算机科学的发展提供了理论基础和方法工具。

形式语言和自动机理论不仅在计算机科学中有着广泛的应用,也在数学、逻辑学、语言学等领域具有重要意义。

编译原理词法分析1

编译原理词法分析1

2.3.1 文法的形式定义
G=(VN,VT,P,S) 其中: VN={I, L, D} VT={a,b,c, … x,y,z,0,1,2,… ,9}
P={ I→L | I L | I D L→a | b | c | … | x | y | z D→0 | 1 | 2 | 3 | … | 9 }
S=I
2.3 文法和语言的形式定义
形式语言
序列的集合称为形式语言。
每个形式语言都是某个字母表上按 某种规则构成的所有符号串的集合。 反之,任何一个字母表上符号串的集 合均可定义为一个形式语言。
2.3 文法和语言的形式定义
对每个具体语言,都有语法和语 义两个方面,形式语言是指不考虑 语言的具体意义,即不考虑语义。
2.2 符号串的运算
例如, 设 x=abc 则 x0= x1=abc
x2=xx=abcabc …
2.2 符号串的运算
4. 集合的幂运算 设A是符号串的集合,则集合A的 幂运算定义为: A0={} A1=A A2=AA … An= AA … A=AAn-1(n>0) n
2.2 符号串的运算
A*= A0∪ A1∪A2∪ … ∪An … ={ε}∪A+
2.2 符号串的运算
例如,设A={ a, b }, 则: A+={ a, b, aa, ab, ba, bb, aaa, aab, …} A*={ ε, a, b, aa, ab, ba, bb, aaa, aab, …}
可见,集合A的正闭包表示A上元素 a,b构成的所有符号串的集合,集合A 的闭包比集合A的正闭包多含一个空 符号串。
2.3.1 文法的形式定义
前例中描述∑+的文法是: G=(VN,VT,P,S ) VN={A}

形式语言与自动机基础共77页文档

形式语言与自动机基础共77页文档
形式语言与自动机基础
41、实际上,我们想要的不是针对犯 罪的法 律,而 是针对 疯狂的 法律。 ——马 克·吐温 42、法律的力量应当跟随着公民,就 像影子 跟随着 身体一 样。— —贝卡 利亚 43、法律和制度必须跟上人类思想进 步。— —杰弗 逊 44、人类受制于法律,法律受制于情 理。— —托·富 勒

60、生活
45、法律的制定是为了保证每一个人 自由发 挥自己 的才能 ,而不 是为了 束缚他 的才能 。—— 罗伯斯 庇尔
56、书不仅是生活,而且是现在、过 去和未 来文化 生活的 源泉。 ——库 法耶夫 57、生命不可能有两次,但许多人连一 次也不 善于度 过。— —吕凯 特 58、问渠哪得清如许,为有源头活水来 。—— 朱熹 59、我的努力求学没有得到别的好处, 只不过 是愈来 愈发觉 自己的 无知。 ——笛 卡儿

第2章 词法分析(自动机)

第2章 词法分析(自动机)
2
一个DFA也可用一张(确定的)状态转换图来表示。 假定DFA M含有m个状态和n个输入字符,那么,这个 状态转换图含有m个状态结点,每个结点顶多有n条箭 弧射出,整张图含有一个初态结点和若干个终态结点
如下表所示的状态 转换矩阵对应的状 态转换图如右图:
状态 0 1 2 3 a 1 3 1 3 b 2 2 3 3
a
3
b a
4
a
b 2
a b
b
5
a b
6
30
划分的组为:{3,4,5,6}, {1}, {0,2} 划分的新组为:{3,4,5,6}, {1}, {0},{2}
a a
再考察{0,2},由于{0, 2}b={ 2,5},它没有包 括在上述三组中,因此, 它要划分,形成{0}、{2}。
a
0 b b
1
3
b a
26
一个DFA
M的状态最少化过程旨在将M的状态集分 割成一些不相交的子集,使得任何不同的两个子集中 的状态都是可区别的,而同一子集中的任何两个状态 都是等价的。最后,在每个子集中选出一个代表,同 时消去其它等价状态。
27
例:考虑下图所示DFA的化简: 划分的组为:{3,4,5,6}, {0,1,2}
a
首先:把M的状态分为 2组:终态组{3,4,5,6}, 非终态组{0,1,2}
b a
a
0 b b
1
a
3
4
a
b 2
a b
b
5
a b
6
28
划分的组为:{3,4,5,6}, {0,1,2}
a
其次:考察{3,4,5,6}, 由于{3,4,5,6}a和 { 3,4,5,6}b 都包含于 {3,4,5,6},所以它不能 在划分。

编译原理课件第2章

编译原理课件第2章

第2章 词 法 分 析
在计算机内部,可以有不同的方式来表示记号的类别和属性。 一般情况下,记号的类别可以用整型编码或枚举类型表示,如表 2.1中每个记号类别可以用括号中的整型编码表示,如01表示const, 82表示id等。根据记号类别的不同,记号的属性的值可以有不同 的表示方法。relation的属性值是一个有限可枚举集合,可以用每 个属性值在集合中的位置来表示它,如1表示<,2表示<=,依此 类推。id的属性值是一个无限可枚举集合,因此,只能用每个标 识符的原始输入形式(字符串)来表示,如pi、draw_line等。字面 量的属性根据情况,其表示方式也不同,如数字字面量可由转义 后的实际值表示,如表示为3.1416而不是“3.1416”,而字符串字 面量就无需转义。
第2章 词 法 分 析
例2.1 对于语句:position := initial + rate * 60,可以识别出 下述序列:
标识符 特殊符号 标识符 特殊符号 标识符 特殊符号 数 字字面量
其中position、initial、rate均被识别为标识符,因为它们均符 合同一条规则,即以字母打头的字母数字串。记号至少含有两 个信息:一个是记号的类别,如“标识符”;另一个是记号的 值,如“position”。显然,如果把记号看作是一个类型的话,则 单词就是一个类型中的实例。由于我们总是说识别出一个标识 符,而不说识别出一个position或rate,因而将词法分析器识别出 的序列称为记号流。
第2章 词 法 分 析 例2.2 表达式mycount > 25由表2.2的三个记号组成。其中标 识符的属性值也可以由mycount在符号表中的入口(下标)来表示。
表2.2 记号的表示
第2章 词 法 分 析

编译原理第二章词法分析

编译原理第二章词法分析
编译原理第二章词法 分析
目录
• 词法分析概述 • 词法分析器的设计 • 词法分析算法 • 词法分析器生成工具 • 词法分析器应用实例
01
词法分析概述
词法分析的定义
01
词法分析是编译过程中的第一个阶段,也称为词法扫描或词 法扫描器。
02
它负责将源代码从左到右逐个字符地读取,并识别出其中的 各个单词或标记。
03
词法分析器可以帮助数据挖掘系统识别出频繁出现的模式、 关键词和概念,从而为后续的数据分类、聚类和关联规则挖 掘等任务提供支持。
THANKS
感谢观看
词法分析器的实现方式
01 手工编写
通过手工编写代码实现词法分析器,适用于对编 译器原理理解较深且经验丰富的开发者。
02 工具辅助
使用工具如Lex、Flex等自动生成词法分析器的代 码,适用于快速开发简单的词法分析器。
03 编译器生成器
使用编译器生成器如Bison、ANTLR等,可以生 成高效、可维护的词法分析器。
词法分析算法的实现
01
词法分析算法的实现通常包括 将输入的源代码分解成一系列 的单词或标记,并输出相应的 单词或标记序列。
02
实现词法分析算法可以采用扫 描器或词法分析器生成器,如 Lex或Flex等工具。
03
扫描器或词法分析器生成器可 以根据正则表达式定义单词或 标记,并生成相应的代码来识 别和匹配这些单词或标记。
02 词法分析器通常使用词典和规则来识别单词的词 性(名词、动词、形容词等)和短语的结构。
02 通过词法分析,自然语言处理系统可以更好地理 解文本的含义,并为后续的句法分析和语义分析 提供基础。
词法分析器在数据挖掘中的应用
01

《编译原理》.第二章形式语言与自动机理论基础(PDF)

《编译原理》.第二章形式语言与自动机理论基础(PDF)
7
2、有关正规式及正规集的说明
说明:
1. 正规式与相应的正规集是等价的,正 规集给出了相应正规式所描述的全部单 词(句子);
2. 正规式的运算结果是正规集;
3. 正规式不是集合,其运算结果正规集 是集合。Ф是特例。
8
正规表达式及正规集
正规表达式的定义
是字母表
正规表达式 1. , 2. a , a 3. 若 r, s 则 (1) (r)(s)
例 (r) •((s)*)|(r)——可简写:r •s*|r。 • 常常可省略不写,可写成 rs*|r。
10
例题
=a,b, 上的正规式和对应的正规集是:
正规式
正规集
(a) a b
a,b
(b) (a b )(a b )
aa,ab,ba,bb
(c) a*
,a,aa,aaa,aaaa,…
(d) (a b)*
终态Z
Z →
3
NFA的状态图如图所是,求其等价的正规文法(右线性)
a
a S
b
A
a
Z
b
G[S]: S→aS|bS S→aA A→aZ|bZ Z →
4
2.3.1正规文法与有限自动机(FA)
2、由正规文法构造等价的NFA 文法的终结符号集为有穷自动机的字母表 文法的非终结符号集为有穷自动机的状态集 文法的开始符号作为有穷自动机的初态 对文法中形如A→tB的产生式,构造有穷自动机的一个 转换函数f(A,t)=B, 对文法中形如A→t的产生式,构造有穷自动机的一个 转换函数f(A,t)= Z
a
r1
r2 b
r3
c
r
r*
代之以
a
b
c
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.1 单词与属性字
流行语言词法规则的表示:
BNF或EBNF; 3型文法; 正规式 <关键字> <标识符> int | float | for | #include | char | … <字母>{<字母>|<数字>}
V = <字母>(<字母>|<数字>)* <标识符> <后缀> a<后缀> | b<后缀> |…| z<后缀> a<后缀> | b<后缀> |…| z<后缀> | 0<后缀> | 1<后缀> |…| 9<后缀>
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
2. 属性字 对所识别的单词的数据结构表示。 L1= ( T,C) 属性字 Token Code
刻画单词类别(单词性质) 例如,标识符;运算符;…
单词的内码值(可空)
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
注意: 关于属性字单词类别部分设计:单词如何分 类?分为几类?怎样编码?单词类别部分包含 多少信息? 视具体情况而定。 考虑后续处理方便 。
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
常见类单词的属性字设计: 1. 标识符
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
(3)常量 语言中各种类型的常数。如整型常数, 实型常数 , 不同进制的常数,布尔常数,字符及字符串常数等。 I常数: -26,19,0x123,037 … R常数: -1.6,2e-6,2.5e06,… B常数: TRUE,FALSE,0或非0,… C、String : '$ ' , '$123 ' , “abc” ,…
(1)将各类单词的状态图的初态合并为一个惟一初态; (2) 调整冲突编号。
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
例3.3
设某语言由标识符和无符号正整数两类单
词构成,并设L表示字母,D表示十进制数字,则 有标识符和无符号正整数的词法规则: <标识符> → L(L|D|_)* <无符号正整数> → DD* 1

状 0 1 2* 3 4* 5* 6* 7 8* 9* 10* 11* 12* 13* 态

分表地址 (1) (2) ( (标识符保留字) / (3) 子(整常数) 子( = ) 子( + ) (4) 子( * ) 子( ++ ) 子( , ) 子( { ) 子( } ) Error
Ch3 词法分析
1. 单词 单词是语言中具有独立意义的最小语法单位。 要素 例如, …A*B…,单词是“A”、“*”和“B”。 …int int1…,单词是“int”和“int1”。 …A++*B…,单词是“A”、“++”、“*”和“B”。 独立的意义 最小的语法单位 * 词法规则制约
Ch3 词法分析
3.2 词法分析器的设计与实现
integer b;
对语句 x= a+b; 词法分析结果: Token 8040 0400 8040 0400 8080 0100
L1
x = a + b ;
Code x = a + b ;
m=1000000001000000 m=0000010000000000 m=1000000001000000 m=0000010000000000 m=1000000010000000 m=0000000100000000
完成词法分析任务的程序称为词法分析程序或词法分 析器或扫描器。
Ch3 词法分析
3.1 词法分析程序的功能
关于词法分析程序 (作为一个独立子程序)
(1) 只要不修改接口,则词法分析器所作的修改 不会影响整个编译器,且词法分析器易于维护; (2) 整个编译器结构简捷、清晰; (3) 可以采用有效的方法和工具进行处理。 完全独立 相对独立 协同程序
Ch3 词法分析3Βιβλιοθήκη 1 词法分析程序的功能例3.1
有如下C源程序片段 { int int1; int1 = 33; printf("int1= %d\n",int1); }
词法分析后识别出如下单词: { 、 int 、int1 、 ; 、int1 、= 、 33 、; 、 printf 、( 、"int1= %d\n” 、 , 、 int1 、 ) 、; 、 }
3.2.3 扫描器设计与实现
1
L
2
other
3
L| D | _
*
D
1
other
D
* 2
D
合并为一个识别该语 言所有单词的NFA
调整冲突编号
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
1
L
other
2
L| D | _
3
*
D
other
4
D
5
*
D
词法分析方法: 直接分析法
Ch3 词法分析
L
2
other
3
L| D | _
*
其中:other表 示非L| D | _字符
0
D
other
1
2 *
其中other表 示非 D的字符
D
D
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
1
L
other
2
L| D | _
3
*
0
D
other
1
D
2
*
D
Ch3 词法分析
3.2 词法分析器的设计与实现
滤掉注释; 宏替换; 文件包含的嵌入; 条件编译的嵌入;
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
设计工具 —— FA 作为扫描器的状态转换图的构造: step1 : 对语言的各类单词分别构造状态图; step2: 将各类状态图合并,构成一个能识别该语 言所有单词的状态图。

Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
(4)运算符 表示程序中算术运算, 逻辑运算, 字符及位串等 运算的确定字符(或串)。 例如,各类语言较通用的+, -, *, /, **, <=, >=, <, >等。 还有一些语言特有的运算符,如C语言中的++, ? :, &, %=等。 FORTRAN 语言中的 .AND.,.NOT., .OR. 。 (5)界限符 如逗号, 分号, 括号, 单双引号等。
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
常用的程序设计语言的单词类: (1) 关键字(亦称保留字, 基本字等) 关键字一般是语言系统本身定义的, 通常是由字母 组成的字符串。 例如: C语言中的 int, for, break, static,
char, switch, unsigned等, 关键字一般关联到 语句的性质 。 (2) 标识符 用来表示各类名字的标识。如, 变量名, 数组 名, 结构名, 函数名, 文件名等。
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.2 源程序的输入与预处理
2.两个缓冲区的输入模式
输入源程序L
输入缓冲区X
L1
扫描器
预处理子程序 输入缓冲区X1
控制线
数据线
X : 固定长度的存储空间 ;
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.2 源程序的输入与预处理
预处理程序: (作用) (1) 减少内存空间占用; (2) 减轻扫描器实质性处理的负担; 预处理程序主要任务: (1) 滤掉源程序中的非单词成分(如无用空格;换 行符等); (2) 实际的预处理工作
例3.2 :
字长m=16的单词类别的设计。 考虑类PASCAL语言,允许含隐式类型说明。
15
0
标 常 构 过 保运 实界 I R B C 形 造 程 留 算参 识 参 限 类 互锁 字 符 符 量 符 型
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.1 单词与属性字
设有变量
real x,a;
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
例3.4
设C语言子集由下列单词符号构成,以正规
式的形式表示: 关键字:int, if, for 标识符: 字母(字母|数字)* 无符号整常数: 数字(数字)* 运算符或分界符: =, *,+,++,+=,{,} 讲义 P55 —— 例3.3
Ch3 词法分析
3.2 词法分析器的设计与实现
3.2.3 扫描器设计与实现
分表 (2) 分表 (1)
输入字符 字母 数字 转换状态 1 3 5* 6* 7 11 12 13 输入字符
字母 数字 Other
转换状态
1 1 2*
= * +
{ } Other
分表 (3)
输入字符
数字
转换状态 3 4*
Other
分表(4)
输入字符 转换状态 + 9* = Other
相关文档
最新文档