第4部分词法分析-精选

合集下载

四词法分析PPT课件

四词法分析PPT课件

正规集
L(e1) L(e1)∪L(e2) L(e1)L(e2) (L(e1))*
说明: 算符的优先顺序: ‘*’ > ‘.’ > ‘|’
‘.’和‘|’都是左结合
4. 仅由有限次使用上述三步定义的表达式才是 ∑上的正规式,仅由这些正规式所表示的字 集才是∑上的正规集。
例子
令={a,b}, 上的正规式和相应的正规集有
G:S→a A|a
A→dA|d
先由产生式得: S=aA|a
A=d*d
将A代入S中得:
S=ad*d|a
利用正规式变换得 S=a(d*d|ε)=ad*
说明:d*d|ε=(ε|d|dd|…)d|ε
=d|dd|…|ε= d*
所求正规式为ad*
4.2 有穷自动机(也称有限自动机)
是一种识别装置 作用:能准确地识别正规集,即识别正规文法所定 义的语言和正规式所表示的集合 意义:为词法分析程序的自动构造寻找特殊的方法 和工具。 分类: 确定的有穷自动机
其中B为一新非终结符
例: 将R=a(a|d)*转换成相应的正则文法 令转换成文法G=(VN,VT,P,S) 其中VT={a,d}, 文法开始符为S 首先形成S→a(a|d)*,然后变换 S→aA A→(a|d)*
A→(a|d)A A→ε
A→aA A→dA
最终有产生式: S→aA , A→ ε, A→aA, A→dA
➢描述标识符的正规文法为 <标识符>→l|l<字母数字> <字母数字>→l|d|l<字母数字>|d<字母数字> ➢描述无符号整数的正规文法
<无符号整数>→d|d<无符号整数>
4.1.2 正规式(正则表达式) Regular Expression

ch4词法分析.ppt

ch4词法分析.ppt
源程序结构上的差别,例如,源程序中的空白、解释、书写格式等。
▪ 编译程序的效率会改进。
扫描字符将单词符号分离花费时间太长; 采用专门的读字符和分离单词的技术可大大加快编译速度。
单词的结构可用工具。
▪ 增强编译程序的可移植性。
同一个语言的不同实现中,或多或少地会涉及与设备有关的特征, 另外语言的字符集的特殊性的处理,可置于词法分析程序中解决
本章内容:词法分析程序的设计原则,单词的描 述技术及识别机制,词法分析程序的自动构造原 理。
1
§4.1 词法分析程序的设计
词法分析器的功能是输入源程序,输出单词符号。
4.1.1 词法分析程序与语法分析程序的接口方式
❖ 把词法分析器安排为独立的一遍,让它把整个源程序 翻译成一连串的单词符号(二元式)存放于文件中, 待语法分析程序进入工作时再对从文件输入的这些单 词符号进行分析。
第四章 词法分析
人们理解一篇文章(或一个程序)起码是在单 词的级别上来思考的。同样,编译程序也是在单 词的级别上来分析和翻译源程序的。
词法分析的任务是:从左至右逐个字符地对源 程序进行扫描,产生一个个的单词符号,把作为 字符串的源程序改造成为单词符号串的中间程序。 因此,词法分析是编译的基础。
执行词法分析的程序称为词法分析器。
标识符 b
(17,)
赋值号 =
(11,‘100’的二进制) 常数 100
(26,)
分号 ;
8
【例】考虑下述 C++ 代码段: 另一种 while ( i >= j ) i--; 表示
假定基本字、运算符和界符都是一符一种,标识符自身 的值是符号表的入口地址,常数是二进制值。
经词法分析器处理后,它将被转换为如下的单词符号序 列:

词法分析主要内容回顾

词法分析主要内容回顾
的位置和层次。
整体部分关系
指一个词所表达的概念是另一个词所表达的概念的整体或部分。如“汽车”和“轮胎” 、“房屋”和“窗户”。整体部分关系有助于理解事物之间的组成关系和结构关系。
词汇的语义角色与搭配
语义角色
指词汇在句子中所扮演的语义角色,如施事、受事、工具等。不同的语义角色决定了词汇在句子中的 不同作用和地位,对理解句子意思至关重要。
深度学习技术的应用
深度学习技术在自然语言处理领域取得了显著成果,如何 将深度学习技术应用于词法分析并提高其性能是未来的研 究热点。
实时性要求
在一些应用场景中,如实时对话系统、在线翻译等,对词 法分析的实时性要求较高,如何在保证准确性的同时提高 处理速度是未来的重要研究方向。
THANKS
识别文本中的命名实体,如人名、 地名、机构名等,并进行分类标 注。
词法分析在自然语言处理中的地位
基础性
01
词法分析是自然语言处理的基础任务之一,为后续的高级任务
提供基础数据支持。
重要性
02
词法分析的结果直接影响到后续自然语言处理任务的准确性和
效率,因此其重要性不言而喻。
广泛性
03
词法分析在自然语言处理的各个领域都有广泛的应用,如信息
词法分析主要内容回顾
目录 Contents
• 词法分析概述 • 词汇的形态结构 • 词汇的语义关系 • 短语与句子的结构分析 • 自动词法分析技术与方法 • 词法分析的应用领域及挑战
01
词法分析概述
词法分析的定义与作用
定义
词法分析是自然语言处理中的一项基 本任务,旨在对输入的文本进行分词 、词性标注等基本处理,为后续的自 然语言处理任务提供基础数据。
规则模板

《编译原理》第4章词法分析

《编译原理》第4章词法分析

编译原理武汉大学计算机学院编译原理课程组第4章词法分析·词法分析器·单词符号·词法分析程序设计·词法分析器的自动生成4.1 词法分析器与单词符号词法分析程序依据语言词法规则,分析由字符组成的源程序,把它识别为一个一个具有独立意义的最小语法单位,即“单词”,并识别出与其相关的属性(如是标识符,是界限符,还是数,等等),再转换成长度上统一的标准形式——属性字,把字符串形式的源程序改造成为单词符号串(属性字)形式的中间程序,以供其它部分使用。

1. 词法分析程序的作用如删除注解、空格、回车符、换行符之类非必要信息,把标识符登录入符号表及某些预加工处理等。

4.1 词法分析器与单词符号2.词法分析程序的地位·作为一个独立阶段⑴能独立地研究词法与语法两方面的特性。

⑵词法规则简单,可建立特别适用的有效分析技术,易于实现词法分析程序生成自动化。

⑶可以就同一语言,为每种不同的机器编写一个词法分析程序,而只编写一个共同的语法分析程序。

每当语法分析程序需要一个单词符号时就调用词法分析子程序,每一次调用,词法分析子程序就从源程序中识别出一个单词符号交给语法分析程序。

2.词法分析程序的地位4.1 词法分析器与单词符号·作为一个独立阶段·安排为一个子程序4.1 词法分析器与单词符号3. 单词符号程序语言的单词符号一般可分为五种:关键字、标识符、常数、运算符、界限符。

•单词种别一类一码;一符一码。

•单词符号的属性值反映单词符号特征或特性的值。

如标识符的符号表指针,常数的常数表指针等。

4.2 扫描程序的设计1.预处理如删除注解、空格、回车符、换行符之类非必要信息。

从源程序中处理出一串确定长度的输入字符,并将其装进词法分析程序指定的缓冲区——扫描缓冲区中。

4.2 扫描程序的设计1.预处理2.单词符号的识别——超前搜索•关键字的识别•标识符的识别•常数的识别•算符和界限符的识别4.2 扫描程序的设计状态转换图的实现:将状态转换图看作是通常的程序框图。

词法分析及词法分析程序..课件

词法分析及词法分析程序..课件

PART 03
词法分析程序的设计
词法分析程序的输入
源代码
词法分析程序的输入是源代码,包括 各种编程语言的源代码。
语法规则
词法分析程序需要使用语法规则来指 导如何解析源代码。
词法分析程序的
标记序列
词法分析程序的输出是一组标记序列, 每个标记代表源代码中的一个单词或符 号。
VS
识别结果
词法分析程序通过识别源代码中的单词或 符号,将其归类为不同的标记,从而生成 标记序列。
词法分析程序可以帮助搜索引擎理解用户的查询意图,从而提供更相关的搜索结果。
智能助手
智能助手需要理解用户的自然语言输入,通过词法分析程序可以将语音或文本输入分解成一个个的词素,从而理解用户的意 图。
智能助手的应用场景包括语音助手、智能客服、智能家居等。
2023-2026
END
THANKS
感谢观看
KEEP VIEW
PART 04
词法分析程序的实现
词法分析程序的语法分析
词法分析程序的语法分析是词法分析程序的核心部分,它负责将输入的字 符串分割成一个个单独的词素或标记。
语法分析器通常采用有限自动机或正则表达式等算法,根据预定义的语法 规则对输入字符串进行解析,并生成一棵语法分析树。
语法分析器还需要处理各种语法错误和异常情况,以确保输入字符串符合 预定义的语法规范。
词法分析程序的语义分析
01
语义分析是词法分析程序的另 一个重要组成部分,它负责对 语法分析树进行语义检查和解 释。
02
语义分析器通常会检查语法分 析树中的各个节点是否符合语 义规则,例如检查变量是否已 声明、函数是否已定义等。
03
语义分析器还会生成一些中间 代码或抽象语法树,以供后续 的代码生成器使用。

编译原理课件-词法分析

编译原理课件-词法分析
有窮自動機分為兩類:確定的有窮自動機 (Deterministic Finite Automata)和不確定的有 窮自動 機(Nondeterministic Finite Automata) 。
關於有窮自動機將討論如下內容
確定的有窮自動機DFA 不確定的有窮自動機NFA NFA的確定化 DFA的最小化
VT={a,d} VN={S,A,B}
A B(ad)B B
AdB
正規文法和正規式
對G=(VN,VT,P,S),存在一個 =VT上的正規式R : L(R)=L(G)
AxB AxAy Axy
, By ≈ A=xy ≈ A=xy ≈ A=xy
正規文法和正規式
G[s]:SaA|a AaAadAd
A(ad)A(ad)
=f(Q,b)=Q
Q屬於終態。
得證。
a
Ua b, a
S
b
aQ
b
V
b
DFA M所能接受的符號串的全體記為L(M).
對於任何兩個有窮自動機M和M′,如果L(M)=L(M′),則 稱M與M′是等價的.
結論:
上一個符號串集V是正規的,當且僅當存在一個上 的確定有窮自動機M,使得V=L(M)。
DFA的確定性表現在轉換函數f:K×Σ→K是一個單值函 數,也就是說,對任何狀態k∈K,和輸入符號a∈Σ, f(k,a)唯一地確定了下一個狀態。從狀態轉換圖來看, 若字母表Σ含有n個輸入字元,那麼任何一個狀態結 點最多有n條弧射出,而且每條弧以一個不同的輸入 字元標記。
狀態
字元
a
S
U
U
Q
V
U
Q
Q
b
V0
V0
Q0
Q

编译原理课件chapter4

编译原理课件chapter4

三地址代码的生成
总结词
三地址代码是一种常见的中间代码形式,它由一系列的三元 式组成,每个三元式包含一个操作符和两个操作数。
详细描述
三地址代码的生成是编译过程中的一个重要步骤,它通过对 源代码进行语法分析和语义分析,将高级语言转换为一系列 的三元式。这些三元式表示了源代码中的运算和数据传输操 作,可以进一步转换为目标代码。
常见的寄存器分配算法包括基于 图的方法、线性扫描算法和遗传
算法等。
目标代码的生成
01
02
03
04
目标代码的生成通常涉及指令 选择、指令调度和代码优化等
步骤。
指令选择是根据中间代码选择 合适的目标指令的过程,需要 考虑指令集架构、语义等约束

指令调度是为了确定指令的执 行顺序,以充分利用处理器资
源并提高指令级并行度。
为了能够处理连续输入的字符流,词 法分析器需要使用一个输入缓冲区来 存储尚未处理的字符。
设计状态转换图
根据正则表达式的规则,可以设计出 一个状态转换图,用于描述如何将输 入的字符转换为相应的词法单元。
词法分析器的实现
编写词法分析器程序
根据状态转换图和输入缓冲区的处理 逻辑,可以编写出相应的词法分析器 程序。
循环展开
将循环体多次执行,减 少循环次数,提高程序
运行效率。
循环优化
通过优化循环结构,减 少循环次数,提高程序
运行效率。
函数内联
将函数调用替换为函数 体中的代码,减少函数
调用的开销。
循环优化
01
02
03
04
循环展开
将循环体多次执行,减少循环 次数,提高程序运行效率。
循环合并
将多个循环合并为一个循环, 减少循环次数,提高程序运行

编译原理第四章词法分析

编译原理第四章词法分析

编译原理第四章词法分析第四章词法分析课前索引【课前思考】◇词法分析程序的功能是什么?◇ PL/0词法分析程序识别哪⼏种单词?◇画出PL/0词法分析程序的流程图。

◇ C语⾔,PASCAL语⾔的标识符和数的表⽰分别有什么规定?◇编写⼀个程序(C的,或PASCAL的)识别C++语⾔的标识符。

【学习⽬标】◇明确词法分析在编译过程所处的阶段和作⽤。

◇掌握词法分析程序的⼿⼯实现⽅法。

◇理解通常的单词分类和构词规则。

◇会使⽤单词的描述和识别机制。

◇掌握词法分析程序的⾃动构造原理。

【学习指南】词法分析程序是编译程序的⼀个构成成分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。

词法分析也是语法分析的⼀部分,把词法分析从语法分析中独⽴出来是为了使编译程序结构清晰,也是为了便于使⽤⾃动构造⼯具,提⾼编译效率。

本章⾸先介绍词法分析程序的功能和设计原则,然后引⼊正规式和其对单词的描述,接着讲述有穷⾃动机理论,最后给出词法分析程序的⾃动构造原理。

【难重点】◇如何设计和实现词法分析程序◇正规式的定义-如何⽤作单词的描述⼯具◇有穷⾃动机的定义和分类-如何⽤作单词的识别系统◇正规式到有穷⾃动机的转换算法-词法分析程序的⾃动构造原理【知识结构】词法分析是编译的第⼀个阶段,它的主要任务是从左⾄右逐个字符地对源程序进⾏扫描,产⽣⼀个个单词序列,⽤以语法分析。

执⾏词法分析的程序称为词法分析程序或扫描程序。

本章我们将讨论词法分析程序的设计原则,单词的描述技术,识别机制及词法分析程序的⾃动构造原理。

词法分析程序的主要任务:- 读源程序,产⽣单词符号词法分析程序的其他任务:- 滤掉空格,跳过注释、换⾏符- 追踪换⾏标志,复制出错源程序,- 宏展开,……本章要点:- 告诉你掌握词法分析程序的设计和实现的办法- ⾸先需要描述和刻画程序设计语⾔中的原⼦单位--单词,其次需要识别单词和执⾏某些相关的动作。

- 描述程序设计语⾔的词法的机制是正则表达式,识别机制是有穷状态⾃动机。

第4章词法分析-PPT精品

第4章词法分析-PPT精品

Sb
aQ
f(S,baab) =f(f(S,b),aab) =f(V,aab)
bV b
=f(f(V,a),ab) =f(U,ab)
=f(f(U,a),b)
=f(Q,b)
=Q
Q属于终态。得证。
编译原理
• DFA M所能接受的符号串的全体记为L(M)
• 结论:
– 上一个字符串集V是正规的,当且仅当存 在一个上的确定有穷自动机M,使得V=L(M)。
两个正规式等价
编译原理
• 若两个正规式e1和e2所表示的正规集相同,则 说e1和e2等价,写作e1=e2。
–例如: e1= (ab), e2 = ba
–又如: b(ab) = (ba)b (ab) = (ab)
编译原理
正规式的运算律
• 设r,s,t为正规式,正规式服从的代数规律有:
2) DFA的转换函数是单值, NFA的转换函数是多值。
例子
编译原理
NFA N=({S,P,Z},{0,1},f,{S,P}, {Z})
其中 f(S,0)={P}
f(S,1)={S,Z} f(P,1)={Z} f(Z,0)={P} f(Z,1)={P}
状态图表示
1
1S
0,1
Z
0
P
1
矩阵表示
S P Z NFA N=({S,P,Z}, {0,1},f,{S,P}, {Z})
编译原理
•词法分析工作独立的原因: 简化设计 改进编译效率 增加编译系统的可移植性
编译原理
4.2 正则表达式和正规集 单词的描述工具
正规文法 文法G=(VN,VT,P,S),P中每一产生式的形式 都为:A→aB或A→a,其中A∈VN ,B∈VN ,a∈VT。

词法分析知识点总结

词法分析知识点总结

词法分析知识点总结一、词法分析的基本概念1. 词法分析的定义词法分析是自然语言处理和计算机语言处理中的一个重要领域,它涉及到研究自然语言的词法结构、词法规则、单词辨识和语言模式匹配等内容。

通过词法分析,我们可以更好地理解和解释文本中的语言现象,处理和管理大量的文本数据,并且可以进行文本分类、关键词提取、信息检索和语言模式匹配等各种应用。

2. 词法分析的基本任务词法分析的基本任务包括:单词辨识、分词和断句。

单词辨识是指根据相应的词法规则将文本中的单词和标点符号识别出来;分词是指将文本按照相应的语言规则进行分割,形成一个个有意义的词单元;断句是指将文本按照相应的语言规则进行分割,形成一个个有意义的句子。

3. 词法分析的基本方法词法分析的基本方法包括:基于规则的词法分析和基于统计的词法分析。

基于规则的词法分析是指根据语言的词法规则和语法规则,通过对文本进行分析和处理,得到相应的词法信息;基于统计的词法分析是指根据大量的语料库数据,通过统计分析和机器学习等技术,得到文本中的词法信息。

4. 词法分析的基本原理词法分析的基本原理包括:正则表达式、自动机理论和语言模型。

正则表达式是一种描述文本模式的表达式,通过对文本进行匹配和识别,得到相应的词法信息;自动机理论是一种描述文本结构的理论,通过对文本进行分析和处理,得到相应的词法信息;语言模型是一种描述文本语言现象的模型,通过对文本进行建模和分析,得到相应的词法信息。

二、词法分析的相关知识点1. 词法规则的设计词法规则是词法分析的基础,它包括:单词的形态、语义和用法规则。

单词的形态规则是指单词的结构、词根、词缀、词性和语法等规则;单词的语义规则是指单词的含义、词义和搭配等规则;单词的用法规则是指单词的用法、谓词、主语、宾语和修饰等规则。

2. 分词和断句的处理方法分词和断句是词法分析的基本任务,它包括:正向最大匹配、逆向最大匹配、最短路径匹配和动态规划匹配。

正向最大匹配是指从文本的左边开始匹配,匹配长度最大的词;逆向最大匹配是指从文本的右边开始匹配,匹配长度最大的词;最短路径匹配是指通过路径规划算法,得到最短路径匹配结果;动态规划匹配是指根据文本的属性和上下文,得到最佳的匹配结果。

词法分析详解课件

词法分析详解课件

案例三:基于深度学习的词法分析
要点一
总结词
要点二
详细描述
随着深度学习技术的发展,基于深度学习的词法分析方法 逐渐成为研究热点。
基于深度学习的词法分析方法主要包括卷积神经网络( CNN)、循环神经网络(RNN)和Transformer等。这些 方法能够自动地学习词语的内部结构,有效地提高了分词 的准确率。在实际应用中,可以根据需求选择合适的深度 学习模型进行词法分析。
2023 WORK SUMMARY
词法分析详解课件
REPORTING
目录
• 词法分析概述 • 词法分析的原理 • 词法分析的工具与技术 • 词法分析的实践与应用 • 词法分析的挑战与展望 • 案例研究
PART 01
词法分析概述
词法分析的定义
词法分析定义
词法分析是自然语言处理中的一项基础任务,主要负责对输 入的自然语言文本进行分词,将其切分成一个个独立的词素 或词形,为后续的句法分析和语义分析提供基础。
数据稀疏问题
跨领域和跨语言的适用性
对于某些罕见或新出现的词汇,由于缺乏 足够的语料库支持,词法分析的准确率可 能会受到影响。
如何将词法分析的方法和工具应用到不同 的领域和语言中,是一个具有挑战性的问 题。
词法分析的展望
深度学习技术的应用 随着深度学习技术的发展,词法 分析有望在模型复杂度、特征提 取、歧义消解等方面取得更大的 突破。
完成。
词性标注
总结词
词性标注是在辨认出词汇的基础上,对每个词赋予相应的词性标签,如名词、动词、形容词等。
详细描述
词性标注是在辨认出词汇的基础上,对每个词赋予相应的词性标签,如名词、动词、形容词等。这一步有助于后 续的句法分析和语义理解。在进行词性标注时,需要借助语法规则和词典资源来确定每个词的词性。

第4章 词法分析(1-6)

第4章 词法分析(1-6)
3。假定e1和e2都是上的正规式,它们所表示的
正规集分别为L(e1)和L(e2),那么,(e1), e1 e2,
e1e2, e1也都是正规式,它们所表示的正规集分 别为L(e1), L(e1)L(e2), L(e1)L(e2)和(L(e1))。 4。仅由有限次使用上述三步骤而定义的表达式才 是上的正规式,仅由这些正规式所表示的集合 才是上的正规集。
7
例如:图3.1的源程序经词法分析器的输出 〈while,—— 〉 〈id,指向i的符号表入口的指针〉
〈relop , NE 〉
〈id,指向j的符号表入口的指针〉 〈do,—— 〉 〈if,——〉 〈id,指向i的符号表入口的指针〉 〈id,指向j的符号表入口的指针〉
8
3 把词法分析设计成一个独立程序

解: 正规式
a a|b ab a* (a|b)(a|b) (a|b)* (a|b)*(aa|bbb)(a|b)* (a|b)*abb
正规集
{a} {a,b} {ab} { ,a,aa,…} {aa,ab,ba,bb} {a,b}上的任意串 *上所有含有两个相继的a
或三个连续的b的a、b串
以abb结尾的a、b串

定义:如:标识符的文法定义
I-> aA|bA|……|zA
A-> aA|bA|……|zA|ε
A-> 0A|1A|……|9A|ε
或 则 用l代表字母,d代表数字 I->lA A->lA|dA|ε

识别单词的装置:FA(finite automata)
34
2 正则语言的识别装置-FA
为了构造词法分析器,要研究构词法、每种词类的结 构模式以及识别它的数学模型——有穷自动机FA。 FA的模拟程序可以作为词法分析器的控制程序。

编译原理第4章答案

编译原理第4章答案

第四章词法分析1.构造下列正规式相应的DFA:(1)1(0|1) * 101(2)1(1010* | 1(010) * 1)* 0(3)a((a|b) * |ab * a)* b(4)b((ab)* | bb) * ab解:(1)1(0|1) * 101 对应的 NFA为1101012341下表由子集法将NFA 转换为 DFA:I I0=ε-closure(MoveTo(I,0))I1=ε-closure(MoveTo(I,1))A[0]B[1]B[1]B[1]C[1,2]C[1,2]D[1,3]C[1,2]D[1,3]B[1]E[1,4]E[1,4]B[1]B[1]001101A B C D E110,1(2)1(1010 * | 1(010) * 1)* 0 对应的 NFA 为εε1101010 01234561εε101978ε下表由子集法将NFA 转换为 DFA:I I=ε-closure(MoveTo(I,0))I1= ε-closure(MoveTo(I,1))A[0]B[1,6]B[1,6]C[10]D[2,5,7]C[10]D[2,5,7]E[3,8]B[1,6]E[3,8]F[1,4,6,9] F[1,4,6,9]G[1,2,5,6,9,10]D[2,5,7]G[1,2,5,6,9,10]H[1,3,6,9,10]I[1,2,5,6,7] H[1,3,6,9,10]J[1,6,9,10]K[2,4,5,7] I[1,2,5,6,7]L[3,8,10]I[1,2,5,6,7] J[1,6,9,10]J[1,6,9,10]D[2,5,7]K[2,4,5,7]M[2,3,5,8]B[1,6]L[3,8,10]F[1,4,6,9] M[2,3,5,8]N[3]F[1,4,6,9] N[3]O[4]O[4]P[2,5]P[2,5]N[3]B[1,6]1L111111010B I KA D E F M00110 00C11G H J101NP O(3)a((a|b) * |ab * a)* b(略 )(4)b((ab) * | bb) * ab(略 )2.已知 NFA=( {x,y,z},{0,1},M,{x},{z} )其中:M(x,0)={z},M(y,0)={x,y},M(z,0)={x,z},M(x,1)={x}, M(y,1)=φ ,M(z,1)={y},构造相应的 DFA。

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

两个正规式等价
编译原理
• 若两个正规式e1和e2所表示的正规集相同,则 说e1和e2等价,写作e1=e2。
–例如: e1= (ab), e2 = ba
–又如: b(ab) = (ba)b (ab) = (ab)
编译原理
正规式的运算律
• 设r,s,t为正规式,正规式服从的代数规律有:
说明: 其中的“”读为“或”(也有使用“+”代替 “” 的);“ ”读为“连接”;“”读为“闭包” (即,任意有限次的自重复连接)。在不致混淆时, 括号可省去,但规定算符的优先顺序为“”、 “ ”、“” 。连接符“ ”一般可省略不写。 “”、“ ”和“” 都是左结合的。
编译原理
3。假定e1和e2都是上的正规式,它们所表示的 正规集分别为L(e1)和L(e2),那么,(e1), e1e2, e1e2, e1也都是正规式,它们所表示的正规集分别为L(e1), L(e1)∪L(e2), L(e1)L(e2)和(L(e1))。
编译原理
4。仅由有限次使用上述三步骤而定义的表达式 才是上的正规式,仅由这些正规式所表示的字集 才是上的正规集。
编译原理
• 无符号整数: 〈无符号整数〉→d | d〈无符号整数〉
• 运算符:
〈运算符〉→ + | - | * | / | = | <〈等号〉| >〈等号〉……
〈等号〉→ = • 界符:
〈界符〉→ , | ; | ( | ) |……
编译原理
• 无符号实数:
〈无符号实数〉→ d 〈余留无符号数〉| . 〈十进小数〉| e〈指数部分〉 〈余留无符号数〉→ d 〈余留无符号数〉| . 〈十进小数〉| e〈指数部分〉|ε 〈十进小数〉 → d 〈余留十进小数〉 〈余留十进小数〉 → e〈指数部分〉| d 〈余留十进小数〉| ε 〈指数部分〉 → d 〈余留整指数〉| s〈整指数〉 〈整指数〉 → d 〈余留整指数〉 〈余留整指数〉 → d 〈余留整指数〉 |ε 其中s表示正或负号。
编译原理
• 例 ={l,d},r=l(l d) 定义的正规集: {l,ll,ld,ldd,……},其中l代表字母,d代表数字, 正规式,即是字母(字母|数字)*,它表示的正规 集中的每个元素的模式是“字母打头的字母数 字串”,就是Pascal和多数程序设计语言允许 的的标识符的词法规则。
• 例4.3 ={d,.,e,+,-},则上的正规式 d(.dd )(e(+- )dd )表示的是无符号数 的集合,其中d为0~9的数字。
– 1。rs=sr
“或”服从交换律
– 2。r(st)=(rs)t “或”的可结合律
编译原理
•词法分析工作独立的原因: 简化设计 改进编译效率 增加编译系统的可移植性
编译原理
4.2 正则表达式和正规集 单词的描述工具
正规文法 文法G=(VN,VT,P,S),P中每一产生式的形式 都为:A→aB或A→a,其中A∈VN ,B∈VN ,a∈VT。
几类单词的描述 •标识符: 〈标识符〉→l | l〈字母数字〉 〈字母数字〉→l | d | l〈字母数字〉| d 〈字母数字〉
get token
• 主要任务:
–读源程序,产生单词符号。 • 其他任务:
–滤掉空格,跳过注释、换行符。 – 追踪换行标志,复制出错源程序。 – 宏展开,……
单词符号
编译原理
• 单词符号一般可分为下列五种: – 基本字(关键字):begin, end, if, while, var等。
– 标识符:各种名称,如常量名、变量名、 过程名等。
– 常数(量):25, 3.1415, TRUE, “ABC”等 – 运算符:如 + - * / < <=等。 – 界符:逗号,分号,括号等。
编译原理
• 输出表示(单词种别,单词自身的值)。 单词的种别可以用整数编码表示,假如标识符编 码为1,常数为2,保留字为3,运算符为4,界符 为5。
如:程序段 if i=5 then x∶=y;在经词法分析 器扫描后输出的单词符号和它们的表示如下:
• 例4.2 令={a,b}, 上的正规式和相应的正 规集的例子有:
正规式 a ab ab
(ab)(ab)
a
(ab)
(ab)(aabb)(ab)
正规集 {a} {a,b} {ab}
{aa,ab,ba,bb}
{ ,a,a, ……任意个a的串}
{ ,a,b,aa,ab ……所有由a和b组 成的串} {上所有含有两个相继的a或两 个相继的b组成的串}
编译原理
• 程序段 if i=5 then x∶=y
- 保留字if(3,'if') - 标识符i(1,指向i的符号表入口) - 等号=(4,'=') - 常数5(2,'5') - 保留字then(3,'then') - 标识符x(1,指向x的符号表入口) - 赋值号∶=(4,'∶=') - 标识符 y(1,指向y的符号表入口) - 分号;(5,';')
• 单词是语言中具有独立意义的最小单位,包括保留 字、标识符、运算符、标点符号和常量等。 词法分析是编译过程中的一个阶段,在语法分析前 进行。也可以和语法分析结合在一起作为一遍,由 语法分析程序调用词法分析程序来获得当前单词供 语法分析使用。
编译原理
词法分析程序
源程序
Token
词法分析程序
语法分析程序 ….
如 25.55e+5 和 2.1
编译原理
正规式(regular expression)
正规式和它所表示的正规集 设字母标为,辅助字母表'={,,,,,,ቤተ መጻሕፍቲ ባይዱ。
1。 和都是上的正规式,它们所表示的正规集 分别为{}和;
2。任何a ,a是上的一个正规式,它所表示的 正规集为{a};
编译原理
第4章 词法分析
词法分析程序的设计 单词的描述工具 有限自动机 正规式和有穷自动机的等价性 正规文法和有穷自动机间的转换 词法分析程序的自动构造工具
返回目录
编译原理
4.1 词法分析程序的设计
• 词法分析(lexical analysis) – 逐个读入源程序字符并按照构词规则切分成一 系列单词。
相关文档
最新文档