三章词法分析
词法分析及词法分析程序

– w,p,n初值为0,e初值为1;
– 处理整数部分时,对于每个di ,令w=w10+di ; – 处理小数部分时,对于每个di ,令w=w10+di ;及n++;
– 处理指数时,E后若有‘-’号,令e=-1;计算指数值 p=p10+d;
– 在出口处,令ICON=w或FCON=w10^(e(p-n)).
(2)设当前处在Ai状态,所扫描的字符为ai+1,在结点Ai所 射出的诸矢线中,寻找标记为ai+1的矢线(若不存在,则 表明w有语法错误),读入ai+1,并进入状态Ai+1;
(3)重复(2),直到w中所有字符被读完且恰好进入终态F 时,宣告整个识别结束,w可被接受.
28
例:G[Z]:
状态转换图:
Z→0U∣1V
{return ( ICON= w ); {n++; w=w*10+d;}
{return (FCON =w*pow(10,e*p-n) ) ;} {n++;w=w*10+d;} error {p=p*10+d;}
e=-1; error {p=p*10+d;} error {p=p*10+d;} {return (FCON=w*pow(10,e*p-n) );
(1)对于G中形如Aa 的产生式,引矢线RA,且标记
为a;
(2)对于G中形如ABa 的产生式,引矢线 BA,且标
记为a。
34
由左线性文法构造状态转换图
已给文法G=({S,U},{0,1},{SS1 |U1, UU0 | 0},S)
R0
0
1
U1 S
第三章 词法分析和有穷自动机

ε
ε
2
ε
6 b
ε
f
3.4.5 DFA的最小化(化简)
• 最少状态DFA 对于一个DFA M,存在一个最少状态DFA M’, 使得L(M’)=L(M)。 (a)没有多余状态 (b)没有两个状态是互相等价的 结论: 一个NFA 对应的DFA不惟一 但它对应的最小化DFA不计同构是惟一的
• 多余状态的例子 a
例
正规式 φ
ε
a a|b ab (a|b)(a|b) a* ba* (a|b)*
正规集 φ {ε } {a} L(a|b)=L(a) ∪ L(b)={a,b} L(ab)=L(a)L(b)={ab} {aa,ab,ba,bb} { ε ,a,aa,aaa,…} {b,ba,baa,baaa,…} {所有由a和b组成的字}
• 例 DFA M=({0,1,2,3},{a,b}, f ,0,{3}) 其中 f 为: f (0,a)=1 f (0,b)=2 f (1,a)=3 f (1,b)=2 f (2,a)=1 f (2,b)=3 f (3,b)=3 f (3,a)=3
3.4.1 确定有穷自动机(DFA) • DFA的表示方法 两种:矩阵和图形的方式 矩阵称为状态转换矩阵 图形称为状态转换图
• NFA M所接受字符串的集合称为NFA M所能 识别的语言,记为L(M)。 • NFA的确定化 DFA是NFA的特例
NFA M存在与之等价的DFA M’,L(M)=L(M’) 与某一NFA等价的DFA不惟一 正规式 NFA 正规文法 DFA
3.4.4 NFA 确定化
• 状态集合I的空闭包:ε -closure(I) 它是一个状态集合,包含 : ♠ I中任何状态q ♠ I中任何状态q经任意条空弧到达的任何状态 • 状态集合I的a弧转换:Ia 定义一个状态集J,J是I中所有状态经一条a 弧到达的状态的全体 Ia=ε -closure(J)
编译原理词法分析及词法分析程序

状态图=>右线性文法
文法G[0] 0->a1
d 0
S->aA A->dA A->b
a c
1 2
b
d
3
1->d1 1->b
0->c
0->c2 2->d
S->c
S->cB,2有出弧 B->d
左线性文法=>状态转换图
设G=(VN,VT,P,S)是一左线性文法,令|VN|=K, 1) 则所要构造的状态转换图共有K+1个状态. 2) VN中的每个符号分别表示K个状态 2.1) G的开始符S为终止状态 3) 起始状态,用R(VN)标记
识别符号串与归约
S
从初态R到下一状态A对应Ba,即终结 符a归约成非终结符B; U 从状态B转换到状态A对应ABa,即将 Ba归约为A; 状态A转换到状态S(终态)对应S Aa,即 U 将Aa归约为开始符S. 归约成功,恰好进入终态,即状态转换图识 U 别了(或接受)该符号串. 识别00011的例子的归约过程
f是转换函数,是在K×Σ →K上的映像,即:如果f(ki,a)=kj, (ki,kj∈K)意味着,当前状态为ki,输入字符为a时,将转换 为下一个状态kj,我们把kj称作ki的一个后继状态;
1.确定的有限自动机
通常把这五要素组成的五元式M=(K,∑,f, S0,Z)称为确定的 有限自动机(DFA),它是相应的状态转化图的一种形式描 述,或者说,是状态转换矩阵的另一种表示。 在状态转换的每一步,据DFA当前所处状态及扫视的输入 字符,能唯一确定下一状态。
例:文法G=({S,U},{0,1},{SS1 |U1,
编译原理词法分析

❖ =、<、>、!:读下一个字符,判断是否为双字 符分界符,若是,组成双字符分界符,输出类码; 若不是,输出单分界符记号;
编译原理
❖ 非=、<、>、/等与双分界符首字符不同的单分界 字符:输出相应单词记号及单分界符。
1.S是一个有穷集,它的每个元素称为一个状态;
2.Σ是一个有穷字母表,它的每个元素称为一个输入 符号,所以也称Σ为输入符号表;
3.δ是在S×Σ→S上的单值映射,即,如δ (s,a)=s’, (s∈S,s’∈S)就意味着,当前状态为s,输入符为 a时,将转换为下一个状态s’,我们把s’称作s的一 个后继状态;
编译原理 在 入 准初带备整•••始的读输读有个时开入始入头穷模,始,状带:控型读位状态:可制由头置态存以器如状的所三处,处放在:果态符识部于表于输输控读正号别分输示初入入制头好组组符带状移是成成号上态动终的:向发到结字后生最状能移变后态被头每有动化一,该转向读穷个则有移后入控符输限到移一 制号入自下动个器后带动一一符控面上机个个号制,状位,状态置读态,
编译原理
词法分析 读字符
结束 Y
结束
N Y 空字
N 字母 N 数字
Y 组合标识符 Y 组合整数
查保留字Βιβλιοθήκη N 纯单分符Y 输出单分符
N
>,<,!,= Y 读字符
=
N
N
/ Y 读字符
*
N
Y
错误处理
输出保留字
Y 保留字
N 输出标识符
组合整数
读字符
Y 输出双分符
输出单分符 N 输出单分符/
注释处理
读字符
第3章 词法分析(3)

3.4 正规式与有穷自动机的等价性
1. NFA M正规式R
在消结过程中,逐步用正规式来标记弧, 规则如下:
1.对于
1
2.对于
R1
2
R2
代之为
3
1
R1 R2
3
代之为 R1 R1| R2 1 2 1 2 R2 R2 3.对于 代之为 R1R2﹡R3 R 1 R 3 1 3 1 2 3
例如:有NFA M如图3.14,求其等价的正规式R。
a,b a 3
x ε 0 b 1 a|b a|b x ε 0
aa
a
4
ε
b
y (a|b)*(aa|bb)(a|b)* x y ε 2 a,b a|b aa(a|b) * y bb(a|b) *
4
ε y x
bb
2
ε
a|b
ε
0
3.4 正规式与有穷自动机的等价性
课堂练习 求以下NFA的正规式 a a 3 a 1 2 b
第一步
a
5 6 b
b
4
b
a
a
3
a
a
s
1 2
b
5 b
4 b
6 b
z
3.4 正规式与有穷自动机的等价性
第二步
a|b s 1 2
aa bb aa|bb 5
a|b
6
z
第三步
s
第四步
(a|b)*
2
5
(a|b)*
z
s
(a|b)*(aa|bb)(a|b)*
z
课堂讲解
• 【例5.12】第72页 • 【例5.13】第73页
第三章 词法分析精选版演示课件.ppt

gjgj
11
串和语言(3)
• 串的运算
– 连接(concatenation):x和y的连接时把y附加到x 的后面形成的串,记作xy。
• x=dog,y=house,xy=doghouse
– 指数运算(幂运算):s0=ε,s1=s,si=si-1s;
• x=dog,x0=ε,x1=dog,x3=dogdogdog
第三章 词法分析
赵建华 南京大学计算机系
2009年2月
gjgj
1
内容
• 词法分析器的作用 • 词法单元的规约 • 词法单元的识别 • 词法分析器生成工具Lex • 有穷自动机 • 从正则表达式到自动机 • 词法分析器生成工具的设计方法
gjgj
2
词法分析器的作用
• 读入源程序字符流、组成词素,输出词法单元序列。 • 过滤空白、换行、制表符、注释等。 • 将词素添加到符号表中。 • 在逻辑上独立于语法分析,但是通常和语法分析器
器通过单元名即可确定词法单元序列的结构。
– 属性值通常用于语义分析之后的阶段
• 模式
– 描述了一类词法单元的词素可能具有的形式
• 词素
– 源程序中的字符序列 – 它和某个词法单元的模式匹配,被词法分析器识别
为该词法单
• printf(“Total = % d\n”, score);
– printf, score和标识符(id)的模式匹配 – “Total = % d\n”和literal的模式匹配
gjgj
6
词法单元的属性
• 一个模式匹配多个词素时,必须通过属性 来传递附加的信息。属性值将被用于语义 分析、代码生成等阶段。
• 不同的目的需要不同的属性。因此,属性 值通常是一个结构化数据。
编译原理 第3章 词法分析与有穷自动机(第5-8讲)

它所对应的状态表如图:
状态 0 1 2 3 a 1 3 1 3 后继 状态 b 2 2 3 3
输入字符 接受 否 否 否 是
式的转化
22
第3章 词法分析与有穷自动机
■DFA所识别的语言
给定DFA M,对于字符c1,c2,…,cn,当以下条件成立时, 称M接受由c1,c2,…,cn组成的字符串c1c2…cn: 存在状态序列s0,s1,s2,…,sn,使得s1=f(S,c1), s2=f(s1,c2),…,sn=f(sn-1,cn),且sn∈Z。 由DFA M接受的语言L(M)是所有M接受的字符串组成的集 合。
25
第3章 词法分析与有穷自动机
判断下图是DFA还是NFA的状态转换图,并 写出其他2种表示形式
26
第3章 词法分析与有穷自动机
■由正规表达式R构造NFA
1.基本正规表达式 (a)对于正规式φ,所构造NFA: (b)对于正规式ε,所构造NFA: (c)对于正规式a,a∈Σ,则 NFA:
x ε y
练习:若S=a|bb,则L((a|bb)*)=?
5
第3章 词法分析与有穷自动机
■正规式中运算的优先级
括号优先,* 次之,•(连接)再次之,| 最后 例:a|bc* ≌ a|(b(c*)) ab|c*d ≌ (ab)|((c*)d)
■ 正规式与正规集举例
L(a|bc*)=L(a)∪L(bc*) 思考:L(ab|c*d)=? =L(a)∪L(b)L(c*) =L(a)∪L(b)(L(c))* ={a}∪{b}{ε,c,cc,ccc……} ={a,b,bc,bcc,bccc,……}
17
第3章 词法分析与有穷自动机
■有穷自动机的状态转移图表示方法
第三章 词语分析释义法

2011.9.27
词语分析释义法
• 词语分析释义法 根据造词法、构词法、义素构成法、 理据及构形法进行词义说明的方法。 • 词语分析释义法的必要性 词语分析释义法是中高级学习阶段学 生有效识记词汇的必备途径,也符合汉语 词汇的特点。 • 词语分析释义法的前提 词语的理据性、可分析性、规律性。
义素分析释义法的作用
一、说明词义聚合关系:
可以显示同义关系: 边疆:+[国土]+[靠近国界]+[范围大] 边境:+[国土]+[靠近国界]-[范围大] 可以显示反义关系: 朋友:+[人]+[友好] 敌人:+[人]-[友好] 浑浊:+[水]+[杂质] 清澈:+[水]-[杂质] 可以显示类义关系: 教授:+[高等学校职称]+[最高级别] 副教授:+[高等学校职称]-[最高级别]+[次高级别] 讲师:+[高等学校职称]-[最高级别]-[次高级别]+[次低级别] 助教:+[高等学校职称]-[最高级别]-[次高级别]-[次低级别]+[最低级别
作业
• 重叠词、叠音词二者及重叠构形、叠音构词、 重叠构词三者的区别?
半音译半意译: 席梦思 乌托邦 霓虹灯 马克思主义 绿 卡 新西兰 音译+语素: 摩托车 呼拉圈 艾滋病 迷你裙 吉普车 沙丁鱼 卡片 啤酒 音译兼意译: 可口可乐 奔驰 休克 维他命 香波 字母词: OK WTO UFO WIN98 VCD EMAIL FAX MBA SOS AA制 BP机 KTV包房 IC卡 X光
第二节 构词分析释义法
(三)音译外来词 克隆 咖啡 咖啡 沙发 布丁 拷贝 沙龙 吉他 白兰地 迪斯科 海洛因 华尔兹 荷尔蒙 比基尼 马拉松 高尔夫 三明治
编译原理第三章(4-2)

无符号数一般形式:dm dm-1 · · · d1 d0 ·d-1 d-2 · · ·d-nE+ dd · · · d E d 0 d . 3 d 1 d d E 4 d 5 d d 6
.
d
2
+∣d
. d d
d
d
F
北京交通大学 于双元 16
无符号数一般形式:dm dm-1 · · · d1 d0 ·d-1 d-2 · · ·d-nE+ dd · · · d E d 0 d . 3 d 1 d d E 4 d 5 d d 6
A B
②开始符号S作为初始状态 设一符号F不属于V作为终止状态
S
F B F F
③形如A→aB的规则
④形如A→a的规则 特别:A → ε
A A
a a
A 未曾在A的射出弧中 出现过的终结符号
北京交通大学 于双元
也可以消除ε产生式后再画状态图。
4
例:G[Z]: Z→0U∣1V U →1Z∣1 V →0Z∣0
1 初态
0 Z 1
U
1 0
F
0
V
②此过程是一种推导过程. (最右(左)推导)
相当于: Z=>0U =>01Z =>011V =>0110Z =>01100U =>011001
能否编程序实现?
有什么问题?
北京交通大学 于双元
8
3 、左线性文法的状态图
左线性文法的规则呈: A→Ba或A→a A,B∈Vn ,a∈Vt (1)状态图 ①G[S]的每一个非终结符号代表一结点(状态) A B
北京交通大学 于双元
23
3、设有如下状态转换图,试给出对应的正则文法 (左线性和右线性)。
第三章词法分析

戴新宇南京大学计算机科学与技术系Outline词法分析的作用词法单元的规约(正则表达式) 词法单元的识别(状态转换图) 有穷自动机词法分析器生成工具及设计词法分析器作用词法分析是读入源程序的输入字符、将它们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。
常见的做法是:由语法分析器调用,需要的时候不断读取、生成词法单元可以避免额外的输入输出在识别出词法单元之外,还会完成一些不需要生成词法单元的简单处理,比如删除注释、将多个连续的空白字符压缩成一个字符等。
词法分析和语法分析通常,将编译过程的分析划分成两个阶段的原因: 简化编译器的设计,任务分解提高编译器的效率增强编译器的可移植性词法分析相关概念词法单元(Token):包含单元名(Token-name)和可选的属性值(attribute-value) 单元名是表示某种词法单位抽象符号。
语法分析器通过单元名即可确定词法单元序列的结构。
词素(Lexeme)源程序中的字符序列,它和某类词法单元的模式匹配,被词法分析器识别为该词法单元的实例。
模式(Pattern)词法单元的词素可能具有的形式。
可以用正则表达式来表示。
词法单元示例词法单元的属性一个模式匹配多个词素时,必须通过属性来传递附加的信息。
属性值将被用于语义分析、代码生成等阶段。
不同的目的需要不同的属性。
因此,属性值通常是一个结构化数据。
词法单元id的属性词素、类型、第一次出现的位置、…词法单元示例(名和属性值)词法分析器的构造实现两种方法:基于词法单元的词法结构图或其它描述,手工编写代码扫描输入中的每个词素,并返回识别到的词法单元信息。
使用词法分析器生成工具(如lex flex)。
给出描述词素的模式,利用工具编译为具有词法分析器功能的代码。
高效且简单。
正则表达式一种描述词素模式的重要表示方法Outline词法分析的作用词法单元的规约(正则表达式) 词法单元的识别(状态转换图) 有穷自动机词法分析器生成工具及设计相关概念字母表:一个有限的符号集合二进制{0,1}ASCIIUnicode典型的字母表包括字母、数位和标点符号串:字母表中符号组成的一个有穷序列 串s的长度|s|空串ε,长度为0的串语言:给定字母表上一个任意的可数的串的集合 语法正确的C程序的集合,英语,汉语相关概念(2)和串有关的术语(banana)前缀:从串的尾部删除0个或多个符号后得到的串。
编译原理作业集-第三章-修订版

编译原理作业集-第三章-修订版第三章词法分析本章要点1.词法分析器设计,2.正规表达式与有限⾃动机,3.词法分析器⾃动⽣成。
本章⽬标:1.理解对词法分析器的任务,掌握词法分析器的设计;2.掌握正规表达式与有限⾃动机;3.掌握词法分析器的⾃动产⽣。
本章重点:1.词法分析器的作⽤和接⼝,⽤⾼级语⾔编写词法分析器等内容,它们与词法分析器的实现有关。
应重点掌握词法分析器的任务与设计,状态转换图等内容。
2.掌握下⾯涉及的⼀些概念,它们之间转换的技巧、⽅法或算法。
(1)⾮形式描述的语⾔?正规式(2)正规式→ NFA(⾮确定的有限⾃动机)(3)NFA → DFA(确定的有限⾃动机)(4)DFA →最简DFA本章难点(1)⾮形式描述的语⾔?正规式(2)正规式→ NFA(⾮确定的有限⾃动机)(3)NFA → DFA(确定的有限⾃动机)(4)DFA →最简DFA作业题⼀、单项选择题(按照组卷⽅案,⾄少15道)1. 程序语⾔下⾯的单词符号中,⼀般不需要超前搜索a. 关键字b. 标识符c. 常数d. 算符和界符2. 在状态转换图的实现中,⼀般对应⼀个循环语句a. 不含回路的分叉结点b. 含回路的状态结点c. 终态结点d. 都不是3. ⽤了表⽰字母,d表⽰数字, ={l,d},则定义标识符的正则表达式可以是:。
(a)ld*(b)ll*(c)l(l | d)*(d)ll* | d*4. 正规表达式(ε|a|b)2表⽰的集合是(a){ε,ab,ba,aa,bb} (b){ab,ba,aa,bb}(c){a,b,ab,aa,ba,bb} (d){ε,a,b,aa,bb,ab,ba}5. 有限状态⾃动机可⽤五元组(V T,Q,δ,q0,Q f)来描述,设有⼀有限状态⾃动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所对应的状态转换图为。
Chapt3_词法分析

由于部分单分界符与双分界符或注释的首字符相同, 如>、<、=、*和/,所以这些单分界符要在双分界符或 注释中处理。
TEST语言的各条词法规则的状态图
a,b,…,Z,0,1,…,9
S
a,b,…,Z
identifier
0,1,…,9
S S
0,1,…,9
number
+、-、…、;
singleword =
V→Z0|0
画出该文法对应的状态图。
S
0
1
U
1 0
V
1 0
Z
3.3 正则文法及状态图
例3-1 设有正则文法G[Z]: Z→U0|V1 U→Z1|1 利用正则文法来分析符号 串。 例如:分析符号串1001是不 是文法G[Z]的合法句子? 用文法的产生式来推导:
: if、else、for、while、
注释符:用/*….*/括起
TEST语言的词法规则
<identifier>∷= <letter> | < identifier > <letter> | <identifier><digit> <number>∷= <digit> | <number> <digit> <letter>∷= a | b | … | z | A | B | … | Z <digit>∷= 1 | 2 | … | 9 | 0 <singleword>∷= + | - | * | / | = |(|)|{|}|:|,|;|<|>|! <doubleword>∷=>= |<= |!= |= = <commend_first>∷= /* <commend_last>∷= */
第3章词法分析

例:语言L[G]={abn|n>=1},其正规文 语言L[G]={ab |n>=1},其正规文 法为G[A]: 法为G[A]: A→aB A→aB B→bB| B→bB| b 画出状态转换图
例:部分单词的状态图
Letter,digit
s
letter digit
其它 (IDN,入口) ,入口) digit 其它 (NUM,值) , (ASG,_) , ) =
3.2 状态转换图
•识别标识符的流程图 识别标识符的流程图 开始
出口 N N 数字 Y
字母 N 出口
Y
取字符
字母 Y
结点:状态用○表示;终态用◎表示 结点:状态用○表示;终态用◎ 有向弧 弧标记 初态 开始 1 letter 2 ── 箭头 ── 输入字符 Letter,d号的表示
• 常用单词种别 常用单词种别——分类 分类
–各关键字(保留字、基本字) 各关键字(保留字、基本字) 各关键字 –各种运算符 各种运算符 –各种分界符 各种分界符——各用一个种别码标识(特定符号类) 各用一个种别码标识( 各种分界符 各用一个种别码标识 特定符号类) –其它标识符 其它标识符——用一个种别码标示(非特定符号类) 用一个种别码标示( 其它标识符 用一个种别码标示 非特定符号类) –常数 常数——用一个种别码标示(非特定符号类) 用一个种别码标示( 常数 用一个种别码标示 非特定符号类)
• 例:文法 文法G[Z]: : • Z→ Z→Za| Aa| Bb • A→ A→Ba | a • B→ B→Ab| b • 画出状态转换图
2、从右线性正规文法出发,构造状态图 从右线性正规文法出发, 以每个非终结符为状态结点, 1. 以每个非终结符为状态结点 , 开始符号 对应初态S 对应初态S ; 2.增设一个终态 Z; 3. 对于规则 A→aB , 画从状态 A 到 B 的 A→aB, 弧,标为 a; A→a, 4. 对于规则 A→a , 画从状态 A 到终态 Z 的弧, 的弧,标为 a。
编译原理第二版第3章词法分析

1. ε和φ都是∑上的正规式,它所表示的正规集分
别为{ε}和Ф; 2. 任何a∈∑,a是∑上的正规式,它所表示的正 规集为{a}; 3. 假定e1和e2都是∑上的正规式,他们所表示的 正规集分别为L(e1)和L(e2),那么,以下也 都是正规式和他们所表示的正规集;
一、正规式与正规集的递归定义
3.2 单词符号及输出单词的形式
单词自身值
对常数,基本字,运算符,界符就是他们本 身的值 对标识符,将标识符的名字登记在符号表中, ‚自身值‛是指向该标识符所在符号表中位 置的指针。
假定基本字、运算符和界符都是一符一种 例:if(a>1) b=100; 词法分析后输出的单词序列是: (2, ) if (29, ) ( (10,‘a’) a (23, ) > (11,‘1’) 1 (30, ) ) (10,’b’) b (17, ) = (11,‘100’) 100 (26, ) ;
4. 仅由有限次使用上述三步定义的表达式才是∑上的 正规式,仅由这些正规式所表示的字集才是∑上 的正规集。
重点回顾
四、将正规文法转换成正规式 求非终结符的正规式 将正规文法中的每个非终结符表示成关 于它的一个正规式方程,获得一个联立 方程组 用代入法解正规式方程组 最后只剩下一个开始符号定义的正规式, 其中不含非终结符
3.3 语言单词符号的两种定义方式
作用: 描述单词的构成规则,基于这类描 述工具建立词法分析技术,进而实现词法 分析程序的自动构造。 工具有: 正规文法 正规式(Regular Expression)
多数程序设计语言的单词符号都能用正 规文法或正规式来定义。
3.3.1 正规文法
多数程序设计语言单词的语法都能用正 规文法(3型文法)描述 正规文法回顾 文法的任一产生式α →β 的形式都为 A→aB或A→a,其中A ,B∈VN ,a∈VT A→Ba或A→a,其中A ,B∈VN ,a∈ VT 正规文法描述的是VT*上的正规集
6.第三章词法分析(2)

DFA表示为状态转换图:例
例1的DFA M=({0,1,2,3},{a,b}, δ,0,{3})
δ 所对应的状态转换图如 P48.图3.5
a
1
b a
a
0
b
3
b
a,b
2
以后,将不加区别的使用DFA和状态转 换图。
12
DFA识别(读出,接受)字α
DFA识别字α 对于*中的任何一个字,若存 在一条从初态结点到某一终态结点的通路,且 这条通路上所有箭弧的标记符连接成的字等于 ,则称为DFA M所识别。 例: 图3.5的DFA识别字abbab, 因为存在路 径 012333;但不接受字ababa, 因为不存 在识别路径。 a a 1 a,b 3 b a 0
状态 0 1 2 3
a 1 3 1 3
b 2 2 3 3
10
DFA表示为 --- 状态转换图
DFA也可以表示成一张确定的状态转换图。 假定DFA M含有m个状态n个输入字符,那末 这张图: 含有m个状态结点 每个结点顶多有 n条箭弧射出和别的结点相 连接 每条箭弧用上的一个不同字符作标记 整张图含有唯一的初态和若干个 ( 可以是 0 个)终态结点。 某个结点可以既是初态同时又是终态。
任务:从左到右一个字符一个字符地读入源程 序,对构成源程序的字符流进行扫描和分解, 从而识别出一个个单词符号。
逻辑上紧密相连的一组字符, 这些字符具有集体含义。
单词:标识符,保留字,常数,算符,界符 词法分析阶段的工作所依循的是语言的词法规 则。描述词法规则的有效工具是正规式和有限 自动机。
第3章 词法分析(II)
词法分析(Lexical Analysis) 词法的表示 词法分析器的设计与实现
03第3章 词法分析1

3.5.2 正则文法与正则表达式的等价性
正则文法与正则表达式有等价性,即可以将正则文法转换成正则 表达式。 例如,用正则文法表示标识符的文法规则如下: <标识符>∷= a|b|…|z |<标识符>a|<标识符>b|…|<标识符>z |<标识符>0|<标识符>1|…|<标识符>9 而采用正则表达式则为: <标识符>= (a|b|c|…|z){a|b|…|z|0|1|…|9} 或简写成 <标识符>=字母{字母|数字} 由此可见,正则表达式在描述语言时比正则文法更为简洁 由此可见,正则表达式在描述语言时比正则文法更为简洁。
3.5.1 正则表达式定义
3.5.1 正则表达式定义
在正则表达式的运算符中,重复优先级高于连接,而连接高于 选择,因此,(p) | ((p) . (q))可写成p | pq , 但表达式(p|q).r中的括 号则不能去掉。 例3.5,设字母表∑={a,b},则a,b, Φ和ε都是∑上的正则表达式, 所描述的语言为{a}、{b}、{}、{ε},求表达式{a}{b}、{a|b} {aa|ab|ba|bb} 和{aa|ab|ba|bb}定义的语言。 解:根据正则表达式的形式定义,可得如下结果: 表达式{a}{b}定义的语言为:{ambn|m≥0,n≥0}, 表达式{a|b}定义的语言为:{x|x ∈{a,b}*},即字母a或b组成的 任意长度字符串。 而表达式{aa|ab|ba|bb}表示的语言由字母a或b组成的所有偶长 度字符串。
3.5.2 正则文法与正则表达式的等价性
例3.7,有正则文法如下,将其换成 等价的正则表达式。 S → aS S →aB B →bC C →aC C →a 解: 先用元符号“{”和“}”将文法改 写成如下: S={a}aB B =bC C = {a}a 然后按解方程组的方法可得: C={a}a B= b{a}a S={a}ab{a}a 最终转成正则表达式 S={a}ab{a}a 可以验证,它表示的语言与原来 的正则文法描述的语言相同。
第三章_词法分析

∑*的子集U和V的连接(积)定义为
UV { | U, V}
V自身的 n次积记为 V n VV V
n
规定V0={},令
V * V 0 V1 V 2 称V*是V的闭包;
记 V VV * V 1 V 2
称V+是V的正规闭包。
3.3.1 正规式与正规集
有限自动机
有限自动机所讨论的问题
确定的有限自动机DFA 不确定的有限自动机NFA NFA的确定化 DFA的最小化
标识符单列一种;标识符自身的值表示成按机器字节划分 的内部码。
常数按类型分种;常数的值则表示成标准的二进制形式。
3.1.1 词法分析器的功能和输出形式
例 FORTRAN程序
IF (5.EQ.M) GOTO 100 输出单词符号: 逻辑IF (34,-) 左括号 (2,-) 整常数 (20, ‘5’的二进制) 等号 (6,-) 标识符 (26, ‘M’) 右括号 (16,-) GOTO (30,-) 标号 (19, ‘100’的二进制)
END;
状态转换图实现示例
'0'..'9':
BEGIN WHILE DIGIT DO BEGIN CONCAT;GETCHAR END; RETRACT; RETURN ($INT,DBT)
END;
'=': RETURN ($ASSIGN,-); '+': RETURN ($PLUS,-);
状态转换图实现示例
4 算符和界符的识别
把多个字符符合而成的算符和界符拼合成一个 单一单词符号。:=, **, .EQ.
3.2.3 状态转换图
词法分析与有限状态自动机

2011-1-5
华东师大计算机科学技术系
6
FA的形式描述 的形式描述
1. 对q, q1 ∈Q a ∈VT δ(q,a)={q1}的含义为:当 的含义为: 的含义为 前状态为q,若输入头所指符号为a, 前状态为 ,若输入头所指符号为 ,则转向下一 状态q 输入头右移。 状态 1,输入头右移。 2. ∵ δ是Q×VT × 2Q上的一个单射 一般地δ ∴一般地δ(q,a)={q1,q2,……qn} qi ∈Q i=1,2,…n 因此称FA M为不确定的 ,记为 为不确定的 因此称 为不确定的FA,记为NFA。 。 Q,即对任何 ∈Q,ai∈ 3. 若映射δ是Q×VT 若映射δ ,即对任何q∈ , × VT,δ(q,ai)至多只有一个元素 ,称FA M是确 至多只有一个元素q’ 至多只有一个元素 是确 定性的FA,记为DFA。 定性的 ,记为 。
2011-1-5 华东师大计算机科学技术系 15
FA的确定化 的确定化
• 定义 :对FA M与FA M’,若L(M)=L(M’)则 定义3: 与 , 则 等价。 称M与M’等价。 与 等价 • 3.1.4 FA的确定化 的确定化 • 定理 定理3.1 对任一给定的 对任一给定的NFA M存在一个 存在一个DFA M’ 存在一个 使L(M)=L(M’)。 。 • 分析: 分析: 由定理3.1 L(DFA) ⊇ L(NFA) 由定理 由FA的定义 L(DFA) ⊆ L(NFA) 的定义 L(DFA) = L(NFA) 得到
第三章 词法分析与有限状态自动机
• 词法分析程序的主要功能是识别单词,这将涉及 词法分析程序的主要功能是识别单词, 3型文法、正则表达式和有限状态自动机。本章 型文法、 型文法 正则表达式和有限状态自动机。 将讨论这三者间的关系。 将讨论这三者间的关系。 • 3.1 有限状态自动机(Finite-state Automate 有限状态自动机 machine FA)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 词法分析
一、词法分析程序的任务
➢ 从左至右逐个字符地扫描源程序,产生一 个个单词符号。把作为字符的源程序改造为 单词符号串组成的中间程序,执行词法分析 任务的程序称为词法分析器或称扫描器。
2020/7/1
中南大学软件学院 陈志刚
4
第三章 词法分析
3.1 词法分析概述
二、词法分析程序的功能
单词种别:表示单词种类,常用整数编码,它是语 法分析需要的
单词自身的值:是编译中其他阶段所需要的信息
如果一个种别只含一个单词符号,那么该单词符号的种 别编码就完全代表它自身的值。
如果一个种别含有多个单词符号,那么还应给出该单词 符号的自身值:标识符自身值是标识符自身的字符串; 常数自身值是常数的二进制数值。
第三章 词法分析
3.1 词法分析概述 3.2 词法分析程序的设计 3.3 正规式与有限自动机 3.4 词法分析程序的实现 3.5 词法分析器的自动生成
3.1 词法分析概述
第三章 词法分析
一、词法分析程序的任务 二、词法分析程序的功能 三、词法分析程序的安排 四、词法分析程序的实现方式 五、词法分析程序的输出形式
注意:一种语言的单词如何分类、怎样编码,主要取决于技 术上的方便。
2020/7/1
中南大学软件学院 陈志刚
13
3.1 词法分析概述
五、词法分析程序的输出形式
例:若分类表为:
第三章 词法分析
试分析输入串:IF a1>0
THEN b1:=c1*d1
ELSE b1:=5
经词法分析后的输出。
2020/7/1
单词--是程序语言的基本语法符号。 如:基本字、标识符、常数、运算符、界符等。 词法分析器中单词的输出形式:
(单词类别、单词内部码值)
2020/7/1
中南大学软件学院 陈志刚
11
第三章 词法分析
3.1 词法分析概述
五、词法分析程序的输出形式
词法分析程序输出的单词符号通常用二元式表示: (单词种别,单词自身的值)
2020/7/1
中南大学软件学院 陈志刚
8
3.1 词法分析概述
第三章 词法分析
四、词法分析程序的实现方式
相对独立方式
当采用递归下降分析等技术实现一趟编译程 序时常采用这种方式。
源程序
Token
词法分析程序
语法分析程序….
get token
2020/7/1
中南大学软件学院 陈志刚
9
3.1 词法分析概述
中南大学软件学院 陈志刚
7
3.1 词法分析概述
第三章 词法分析
四、词法分析程序的实现方式
相对独立方式:把词法分析程序作为语法分析 程序的一个独立子程序。语法分析程序需要新 符号时调用这个子程序。
完全独立方式:词法分析程序作为单独一趟来 实现。词法分析程序读入整个源程序,它的输 出作为语法分析程序的输入。
常常把词法分析程序作为独立的一遍或作 为被语法分析程序所调用的子程序。
1、作为独立的一遍:
语法分析前进行词法分析,把单词符号 串形成中间文件存贮。
2020/7/1
中南大学软件学院 陈志刚
6
3.1 词法分析概述
第三章 词法分析
三、词法分析程序的安排
2、作为被语法分析器词用的子程序:
2020/7/1
2020/7/1
中南大学软件学院 陈志刚
2
3.1 词法分析概述 词法分析程序
第三章 词法分析
词法分析是编译过程中的一个阶段,在语法分 析前进行 ,也可以和语法分析结合在一起作 为一遍。
输入:源程序字符串
输出:等价的属性字序列(内部表示形式)
2020/7/1
中南大学软件学院 陈志刚Βιβλιοθήκη 33.1 词法分析概述
例2:
0
1
U
数字
非数字
3
4
=
5
0
01
+
6
0
V
Z
1
*
7
非*
8
*
9
例3:
,
10
(
11
)
12
2020/7/1
中南大学软件学院 陈志刚
其它
13
17
二、状态转换图的实现
第三章 词法分析
方法:每个结点对应一段程序,前面状态结的程 序调用其后继结点的程序。
例1:
字母
1
0
数字
2
PROCEDURE Proc0; Getchar; case char of ‘A’…‘Z’ : proc1; ‘0’…‘9’: proc2; otherwise error; end of case;
第三章 词法分析
四、词法分析程序的实现方式
完全独立方式
采用词法分析工作完全独立的原因: 简化设计,降低语法分析的复杂性 提高编译效率 增加编译系统的可移植性
属性字序列
源程序
词法分析程序
语法分析程序….
2020/7/1
中南大学软件学院 陈志刚
10
3.1 词法分析概述
第三章 词法分析
五、词法分析程序的输出形式
中南大学软件学院 陈志刚
14
3.1 词法分析概述
五、词法分析程序的输出形式
解:输出的单词串为:
第三章 词法分析
2020/7/1
中南大学软件学院 陈志刚
15
第三章 词法分析
3.2 词法分析程序的设计
一、状态转换图
状态转换图是一张有限方向图。用结点代表状态, 状态之间用箭弧连接,箭弧上的标记(字符)代表 在射出结状态下可能出现的输入字符或字符类。
一个状态转换图只包含有限个状态,有一个初态,
终态用双圈表示。一个状态转换图可识别一定的字
符串。
状态都是非终结符号
例1:
字母或数字
S:开始状态 E:终止状态,用双圈表示 I:标识符状态
S
I
E
字母 数字
2020/7/1
中南大学软件学院 陈志刚
16
一、状态转换图
空白
0
字母
第三章 词法分析
字母或数字
1 非字母或数字 2
2020/7/1
中南大学软件学院 陈志刚
12
第三章 词法分析
3.1 词法分析概述
五、词法分析程序的输出形式
语言的单词符号
单词符号是程序语言的基本语法单位,一般分为下面5种: 关键字(基本字):(个数确定,可全体编为一类,也 可一字一类) 标识符:(个数不确定,作为一类) 常数:各种类型的常数 。(个数不确定,按类型分类) 运算符:如+、-、*、/、<等。(个数确定,一符一类) 界符:如,、;、(、)、: 等。(个数确定,一符一类)
词法分析程序主要执行以下功能: 读入源程序字符串,识别开具有独立含义的最 小语法单位——单词(符号); 把单词变换成长度统一的且为定长的属性字;
其他功能: 滤掉空格,跳过注释、换行符 某些预加工处理
2020/7/1
中南大学软件学院 陈志刚
5
3.1 词法分析概述
三、词法分析程序的安排
第三章 词法分析