编译原理:第三章词法分析–码途拾遗

从左至右逐个字符地对源程序进行扫描,产生 一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序或者说:逐个读入源程序字符,并按照词法规则分割成一系列单词,再转换成单词串,同时进行词法检查。

主要任务:读源程序,产生单词符号。

其他任务:滤掉空格,跳过注释、换行符;宏展开,……

关键:找出单词分隔符。

单词符号一般可分为下列五种:

标识符 变量名 数组名 函数名

常数 100 3.14159 ‘a’

运算符 + – * /

界符 ,;( ) /* */

词法分析程序从左到右读入源程序,进行分析后输出相应的单词符号,用于表示单词符号的特性。通常以二元式(单词种别,属性值)的形式输出。

如果一个种别只含一个单词符号,则不需属性值,属性值设为空。

一个种别含有多个单词符号,为区别各个单词符号需要属性值。

举例:

与语法分析结合在一起作为一遍。作为语法分析程序的一个子程序,每次调用识别一个单词,交给语法分析器使用,如下图所示。

正规集(正规语言):某字母表上,我们感兴趣的符号串的集合。

正规表达式(regular expression):是定义正规集(正规语言)的一种表示法。

正规文法:是对正规语言(正规集)的一种描述工具。

程序设计语言中几类单词的规则描述:

<标识符>→ l|l <字母数字>

<字母数字>→l|d|l <字母数字>|d <字母数字>

<无符号数>→d|d <无符号数>

<运算符> →+|-|*|/|=|< <等号>|> <等号>……

<等号>→=

<界符>→,|;|(|)|……

正规式和正规集的递归定义为:

举例:

* 高于.

. 高于|,具有结合律、分配律,可省略

| 具有交换律、结合律

( )指定优先关系

一个正规式 r 表示的正规集也就是 r 所定义的语言,记为 L(r),若两个正规式r和s所表示的正规集L(r)=L(s),则称r,s等价,记作 r = s。

定义:是一种识别装置,能准确地识别正规集(正规语言)有限自动机是具有离散输入输出系统的数学模型;它具有有穷数目的内部状态,概括了对过去输入处理的信息,根据当前所处状态和面临输入即可决定系统的后继行为。

确定的有限自动机DFA M是一个五元组:$M =(S,\sum,δ ,s_0 ,F )$

(1) S 是一个非空有限集,它的每个元素称为一个状态。

(2) $\sum$是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号字母表。

(3) δ是状态转换函数,是在$S×\sum→S$上的单值映射。

定义形式:$δ(s_i,a)=s_j$,其中$s_i∈S,s_j∈S$。

含义: 在当前状态为$s_i$,输入符号为 a 时,将转换为下一状态$s_j$,我们把$s_j$称为$s_i$的一个后继状态。

(4) $s_0 ∈S$,是唯一的一个初态。

(5) $F \in S$,可空,是一个终态集,终态也称可接受状态或结束状态。

状态转换矩阵和状态转换图:

其中 - 示初态 + 表示终态。

设DFA $M =(S,\sum,δ ,s_0 ,F )$

定义:

若 $s_i \overset a\rightarrow s_j$,则$s_i \overset a\Rightarrow s_j$,表示在状态$s_i$下输入符号a可达状态$s_j$ ,或者$s_i$到$s_j$有通路,通路上的字符串为a。

若 $s_i \overset \alpha \Rightarrow s_j,s_j \overset a\rightarrow s_k$ 则$s_i \overset {\alpha a}\Rightarrow s_k$,表示$s_i$ 到 $s_k$ 有通路,通路上的符号串为$\alpha a$。

若 $\alpha \in \sum^*,s_0\overset \alpha\Rightarrow s_j,s_j\in F$,则称α可为M所接受(识别,读出)。

解释:若对于∑中的任何字α,若存在一条从初态结点s0到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字等于α,则称α可为DFA M所识别(读出或接受)特别地,若初态结点同时又是终态结点,则空字ε可为DFA M所识别。

DFA M 所能接受的字符串的全体为 :

$L(M) = {\alpha|s_0\overset \alpha\Rightarrow s_j,s_j\in F}$,若$s_0\in F ,则 ε\in L(M)$,若$F = \Phi ,则L(M) = \Phi$。

例如:状态0到状态3有通路,通路上的字符串为aa,同时可以为babba。

一个NFA M是五元式 $M=(S,\sum,δ,S_0,F)$

S 有穷非空状态集合

$\sum$ 有穷的输入字母表集合

δ 从$S×∑^*→2^S$映射,其中 $2^S$ 表示 S 的幂集。

$S_0\subseteq S$ 是S的非空子集,称为初始状态集合。

$F \subseteq S$ 是S的子集(可空),称为终止状态集合。

一个含有m个状态和n个输入的NFA可以描述成一张状态转换图,这张图含有m个状态节点,每个节点可以射出若干条箭弧与别的节点相连,每条弧用 $\sum^*$ 中的一个串作为标记,整个图至少含有一个初态节点和若干个终态节点。

若对于∑中的任何字α,若存在一条从初态结点s0到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字等于α,则称α可为NFA 所识别(读出或接受)特别地,若初态结点同时又是终态结点或者存在一条从初态节点到终态节点的空边,则空字ε可为DFA M所识别。

NFA和DFA的不同在于:

开始状态有不止一个

接受ε作为输入符号

若规定NFA的初态集中只有唯一一个元素,即NFA的初态唯一,且状态转换函数单值,则该NFA即为DFA。

DFA是NFA的特例:

对每一个NFA N一定存在一个DFA M,使得L(M)=L(N)即对每个NFA N存在着与之等价的DFA M。

注意:与某一NFA等价的DFA不唯一。

使用NFA判定某个输入符号串的时候,可能出现不确定的情况:不知道下面选择哪个状态。如果选择不好,该输入符号串可能不能到达终止状态。但是,我们不能说该输入符号串不能被该NFA接受。如果通过尝试的方法,不断试探来确定输入符号串是否可被接受,那么判定的效率将降低。解决的方法是将NFA转换为等价的DFA。此外,用来描述语言的正规式更容易构造出识别同一语言的NFA。

基本思想:

让DFA的每一个状态对应NFA的一组状态。即让DFA使用它的状态去记录在NFA读入一个输入符号后可能达到的所有状态——子集。

定义两个运算:ε-closure(I)和move(I,a):

ε-closure(I):

状态集合 I 的ε闭包,定义为一状态集记为: ε-closure(I),是

(1)若q∈I,则q∈ε-closure(I);

(2)若q∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于ε-closure(I)。

理解:就是 状态集合 I 本身加上所有可以通过任意条 ε边到达的节点。

例如:

$n={5,3}\ \ \ ε-closure(I)={5,3,1}$

move(I,a):

设 I 是M的状态集的子集,a∈∑

状态集合I的a弧转换 ,定义为一状态集J记为:J=move(I,a)

J是可从I中的某一状态结点出发经过一条 a 弧而到达的状态结点的全体。

为了便于说明,记$I_a=ε-closure(J)$,即$I_a = ε-closure(move(I,a))$,白话就是$I_a$等于集合 $I$ 先通过一条 a 边可以转移到的点加上从这些点经过任意条ε边可以到达的点的集合。

算法过程:

对给定的NFA N构造一张表,表的构成如下:

(1)设∑={ a1,…, ak },表的每行含有k+1列。

(2)置首行首列(最左上角的格子)为ε-closure(S0)。

(3)若某行首列状态子集已确定,记为I,则置该行的第i+1列为$I_{a_i}(i=1, …, k)$。

(4)检查该行所有状态子集,将未出现在第一列者填入到后面空行的第一列。

(5)重复(3)(4)直到第一列中状态子集不再扩大为止(在第i+1列上的所有状态子集均已在第一列上出现)。此时,将该表看成是一个状态转换矩阵。

(6)将该状态转换矩阵中所有状态子集重新命名,得到状态转换矩阵,其所示的是与给定的NFA N等价的DFA M(未化简的DFA)。

注意:DFA M的初态为该表第一行第一列的状态。DFA M的终态为含有原NFA N的终态的状态子集 。

一个确定有限自动机 M 的化简是指:寻找一个状态数比 M 少的 DFA M’,使得 L(M’)=L(M)。

假定s和t是M的两个不同状态:

s和t是可区别的 如果从状态s开始输入w使得结束时候的状态为终止状态,而从t开始输入w时,结束的状态为非终止状态(或无状态),那么我们说w把s和t区别开来。

条件1: 无多余状态,即从初态出发,任何输入串都不能到达的状态。

条件2:无相互等价的两个状态。

两个状态等价的条件(不等价称为可区别的):

步骤1: 将DFA的状态集分为互不相交的子集使得任何不同的两子集中的状态都是可区别的,而每个子集中的任何两个状态是等价的。

步骤2: 每个子集中选取一个状态作为子集中所有状态的代表,其余删除,这些代表构成了化简后的自动机的状态集合,到达被删除状态的弧引入该子集的代表状态。

步骤3: 删除无用状态。

步骤4: 初始状态为包含有原初态的子集的代表,终止状态为包含有原终态的子集的代表。

步骤1: 初始分划:终止状态和非终止状态

步骤2: 重复对于每一组 I 都进行下列细分,直到不能再细分为止:

注意: 前面发现的不能细分的小组后来可能还可以细分。所以重复步骤2的时候要检验所有的组,包括老的和新加入的。

考察处理${3,4,5,6}$:$${3,4,5,6}_a={3,6}$$ 等价 ${3,4,5,6}_b={4,5}$ 等价。 ${3,4,5,6}$ 不可再分。

考察处理${0,1,2}$:${0,1,2}_a={1,3,1}$ ,1和3可区别, ${0,1,2}$细分成${0,2} {1}$。

考察处理${0,2}$:${0,2}_a={1} {0,2}_b={2,4}$ 2和4可区别${0,2}$细分成${0}{2}$。

第一步:在M中引进新的初态结点X和终态结点Y,形成M’,使得:$X \oversetε \rightarrow 所有M的初态节点$ ,$所有M的终态结点\oversetε \rightarrow Y节点$ ,那么M’就只有一个初态X和一个终态Y。

第二步:反复使用下面的替换规则消去M’中的所有结点,逐步用正规式来标记弧:

第三步:结点X和Y之间弧上的标记,即为所求正规式r。

当 r 中含有 k 个运算符时,分下列三种情况 r = r1| r2 r = r1 r2 r = r1* ,对应的三个状态转换图如下:

1.首先画上有两个结点X、Y的转换图,由X指向Y的弧上标记为正规式r,形成只有一个初态和终态的NFA

2.然后分解弧上正规式,用替代规则引入新状态结点,所有的新结点取不同的名字但同一结点的不同射出弧可以同名

3.直到所构造的FA中每条弧上都标记为单输入符号为止

4.用子集法将NFA确定化,用划分法将DFA最小化

已知正规式 $r=(a|b)^(aa|bb)(a|b)^$试给出能识别 L(r) 的确定有限自动机NFA

已知正规式$ r=(a|b)^(aa|bb)(a|b)^$ 试给出能识别L(r)的确定有限自动机DFA

对于正规文法G和有限自动机M,如果 L(G)=L(M),则称G和M是等价的

(1)对于每一个正规文法G,都存在一个有限自动机FA M,使得L(M)=L(G)

(2)对于每一个有限自动机FA M,都存在一个正规文法G,使得L(G)=L(M)

即:对于每个正规文法都能找到一个有限自动机对应,每个有限自动机都有一个正规文法对应。另外,对任何正规文法,存在定义同一语言的正规式,对任何正规式,存在生成同一语言的正规文法。

THE END
0.编译原理概览:从词法分析到目标代码生成Chomsky定义了文法的形式,来形式化的描述语言。·无穷语句的有穷描述、便于计算机处理 AI写代码 1 2 基本概念 字母表 ·字母表ε是一个**有穷非空**符号集合符号:字母、数字、标点符号……相当于高级语言的基本字符表 eg.二进制字母表:{0,1}、ASCII字符集、Unicode字符集 jvzquC41dnuh0lxfp0tfv8Xpqyq`kwla1cxuklqg1fkucrqu1381;9=954
1.编译原理概论:从词法到语义分析在推导句子的过程中,一旦使用了该规则,将退不出任何终结符号串。即该规则中含有退不出任何终结符号串的非终结符。(不活动符号) 2.5 文法的其他表示法 扩充的BNF表示 语法图 2.6 文法和语言分类 形式语言:用文法和自动机所描述的没有语义的语言。 文法定义: jvzquC41dnuh0lxfp0tfv8jqwyj{~fp27761jwvkerf1mjvckrt1:79;9859@
2.文献分类基础知识体系分类法一般由主表、标记符号、复分表、说明和类目注释、索引等5个部分组成。(下面以《中图法》为例) 2.1.1.1主表是指由基本部类、基本大类、简表、和详表逐级展开而形成的类目 表。 (1)基本部类。是文献分类表中为便于各种类目的展开而对人类全部知识与客观事物所作的最基本、最概括的划分。我国的《中jvzquC41o0972mteu0tfv8iqe18b:@9:57>/j}rn
3.形式语言与自动机复习笔记SELFLOVER上下文无关文法的基本概念四个基本要素:非终结符的集合V;终结符的集合T;产生式的集合P;开始符号S。形式定义:一个 CFG 是一个四元组 G=(V,T,P,S)G=(V,T,P,S),满足 V∩T=ϕ,S∈VV∩T=ϕ,S∈V。产生式集合的缩写记法:A→α1,A→α2,,A→αnA→α1,A→α2,,A→αn 可以jvzquC41yy}/ewgnqiy/exr1UGRGNX[GT1v03?=:75?30qyon
4.声音的描述现象学与超越论现象学的可能性(声音)书评(和声学;对位法等)2)规则约定与标记符号(谱子)3)音色的听觉练习②音高值相较于其他音乐特征具有统治地位1.2.1音高①音高是音乐中唯一可能被乐谱作为绝对值标注和演绎的要素1)人们只会将在多个音区移调的音高当成一个,将不同的调性当成同一曲调2)在印度音乐中,其记谱系统类似于“主音”、“属音”1.2.2时值①jvzquC41dqul0mtwdct/exr1tg|jg€4377>15<>1
5.信息检索复习要点6篇(全文)23、《中图法》的标记符号(即分类号)采用什么文字方式组合是汉语拼音字母与阿拉伯数字相结合的混合制号码,用22个字母表示22个大类。 24、当今世界上影响最大、应用最广的一部大型分类法叫什么 《杜威十进分类法》 25、索书号由什么组成分类号加著者号 jvzquC41yy}/;B}wgunv0lto1y5gkujn:ngf:
6.2023hnust湖南科技大学大三下人工智能导论课程期中考试复习笔记符号主义/逻辑主义/心理学派 传统人工智能 认为人工智能源于数理逻辑。 原理 基于物理符号系统假设和有限合理性原理 基本单元 符号 研究方法 功能模拟法 连接主义/仿生学派/生理学派 认为人工智能源于仿生学。 原理 基于神经网络及其间的连接机制与学习算法 jvzquC41dnuh0lxfp0tfv8vsa5996<7591gsvrhng1jfvjnnu1742=>8:;=
7.安全生产教育培训资料(二)火灾的三要素 1、物质燃烧必须具备三个条件:可燃物、助燃物、点火源。 2、点火源的种类: A、明火及高温表面 B、摩擦与撞击 C、电火花 D、静电E雷击 (三)防止火灾措施 就是在火灾发生之前,预先防止火源点燃的措施,是一种最根本的防火措施,这种措施是把有起火危险的物质以及具有点燃能量的着火源,有效地,jvzquC41okv/t~nygp4dqv4lkcuzwyjkzwt03985868/j}rn
8.教程软件工程概论即:软件开发是一个多元化的过程,要充分考虑其相互关系以开发出最适合用户的软件产品。 1.2.3 软件工程三要素 软件工程三要素为:过程、方法、工具。 软件工程三要素的根基是:软件质量的保证。没有可靠的软件质量,一切都没有意义。 (1) 软件质量的评价体系 jvzquC41dnuh0lxfp0tfv8Ush3>18=897;=41jwvkerf1mjvckrt1:84:8;879
9.图形创意设计通用12篇(一)创意图形的基本概念:现代图形是人类通过视觉形象,传达信息的一种特殊语言方式,它比文字更迅速、更直接,它区别于标记、标志与图案,不是单纯的符号,也不是单一以审美为目的的一种装饰,而是在特定思想意识支配下,对某一个或多个元素组合的一种蓄意刻化和表达形式,有时是审美意义上的升华,有时是富有深刻寓意和jvzquC41ilmd{u|0zwktj~3eqo5icx|gp1863==0jvsm
10.高考数学知识点归纳总结及公式大全一、求动点的轨迹方程的基本步骤 ⒈建立适当的坐标系,设出动点M的坐标; ⒉写出点M的集合; ⒊列出方程=0; ⒋化简方程为最简形式; ⒌检验。 二、求动点的轨迹方程的常用方法:求轨迹方程的方法有多种,常用的有直译法、定义法、相关点法、参数法和交轨法等。 ⒈直译法:直接将条件翻译成等式,整 jvzquC41yy}/z~jzkng/exr1zwkykok1uj{ywn4e42934?80jvsm
11.语义学论文通用12篇3.2产品趣味语义表达的分类 作为人的创造活动,趣味性设计在更深层面上体现出对人性的关爱和体贴,产品的趣味性语义即是通过产品的设计来表现某种特定的情趣,使产品富有某种情感色彩。产品的趣味性语义有多种层次,各自有侧重点,都是在满足使用功能的前提下,通过趣味性造型符号和元素融入设计形体中,基于人的情感经验,做意jvzquC41|i€yu7}wgunv0lto1jgpyns194;40qyon
12.江苏自考教材大纲:00781档案文献检索通过本章的学习,了解分类检索语言的构成、特点和作用,体系分类法的基本原理与类目的划分、排列、列类方法。理解《中国档案分类法》的分类原则和分类体系与分面组配分类法。从而掌握《中国档案分类法》各组成部分的功能与处理问题的办法,学会应用各种注释方式与标记符号、辅助符号。 jvzquC41yy}/l|{g0et0mjtujkjbijsi19?477mvon
13.邹文倩第二周阅读笔记第二章词的构造 1)语素:现代汉语中音义结合的最小单位,词的组成部分。 2)单纯词:由一个语素构成的词。(根据音节特征划分类型) 3)合成词:由两个以上的语素组成的词。(根据语素间关系划分类型) 一、单纯词的音节特征 数量上:一个音节的(山、走)、两个音节的(伶俐、蝴蝶)、三个音节以上的(巧克力、歇斯底里)jvzquC41o0jpwkfp0eun1wtvg1<92:735380
14.地图学知识点整理地图学知识点整理 第一章 导论 一.地图的定义与基本特征 1.地图的定义:地图是依据特定的数学法则,通过科学的概括,并运用符号系统将地理信息表示在一定载体上的图形,以传递客观现象的数量、质量特征在空间和时间上的分布规律和发展变化。 2.地图的基本特征: 地理信息的载体——多样性 数学法则的结构——(地图投影,jvzquC41yy}/5?5fqe4dp8ftvkimg89;7:<`3986:6>43=3jvor
15.中图法(第四版)(1)类目定义:构造分类法的最基本要素,每个类目代表具有某种共同属性的文献集合。一个类目由类号、类名、类级、注释和参照组成。 (2)类目划分原则: (a) 类目划分是选用一定的分类标准,对一个较宽泛的概念进行分组,形成一组平行的类目,这组平行的类目互称为同位类。(类目划分一般是选择事物的本质属性中最具有检jvzq<84yyy4xgkqkd0ipo7hp1y{zƒ}z1jkmr8yuren/j}rn
16.学术规范(1)学位论文封面包括以下要素: —— 分类号 根据论文中主题内容,对照分类法选取中图分类号、学科分类号、国际十字分类号(UDC),著录在左上角。中图分类号一般选取1~2 个,学科分类号标注1 个。中图分类号参照《中国图书资料分类法》《中国图书馆分类法》,学科分类号参照《学科分类与代码》(GB/T 13745—2008)。jvzq<84zue~/ulz0gf{/ew4zuil/j}r
17.信息组织名词解释类目是构造分类法的最基本要素,是构成分类检索语言的细胞,分类法的整体功能是通过类目及其联系实现的。一个类目是由类号、类名、类级、注释和参照组成的,其中类号、类名、类级是必须的。 53.类级:是指类目的级别,代表该类目在分类体系中的等级(划分的层次)、显示类目间的等级关系。 54.类目注释和参照:是对jvzquC41o0972mteu0tfv8iqe1j83?65887:0qyon
18.四川2018年10月自考02117信息组织历年真题及答案6、《中图法》的基本标记符号采用单纯阿拉伯数字的号码。 A.正确 B.错误 查看答案模拟考场 7、供描述记录使用的计算机编码有很多类型,在图书馆、文献单位使用最多的是 A.SGML语言 B.MARC格式 C. XML语言 D. HTML语言 查看答案模拟考场 8、分类法的标记符号种类除了基本标记符号外,还有 jvzquC41yy}/|rpcqu}/ew4pgyy03A5423:30qyon
19.商标的类型有哪些?集体商标是什么?由图形化的标记、符号组成的商标。最初的图形商标一般比较繁复,基本取材于自然世界,如各种植物、动物、风景、人物等,后逐渐简化,目前以抽象的线条和几何图形居多。 1973年签订的《建立商标图形要素分类维也纳协定》将构成商标的图形一共分为29个大类,144个小类以及1569个群。 jvzquC41yy}/rrsmgogo0lto1pkxu8uyf5229>0jvsm