Part3词法分析1
第3讲词法分析
所有由 a 和 b 组成的串
(ab)(aabb)(ab)
}
2020/12/4
{ 上所有含有两个相继 的 a 或两个相继的 b 组成 的串
• 例 ={l,d},r=l(l d) 定义的正规集: {l,ll,ld,ldd,……}(标识符)
• 例4.3 ={d,.,e,+,-},则上的正规 式 d(.dd )(e(+- )dd )表示的 是无符号数的集合。其中d为0~9的数字 。
✓ 4。S∈K 是唯一的一个初态;
✓ 5。Z K 是一个终态集,终态也称可接受状态或结束状态。
2020/12/4
1. DFA 示 例
DFA M=({S,U,V,Q}, {a,b}, f, S, {Q})其中 f 定义为:
f(S,a)=U
f(V,a)=U
f(S,b)=V
f(V , b)=Q
f(U,a)=Q
3.3 有 穷 自 动 机
• 确定的有穷自动机(DFA) • 不确定的有穷自动机(NFA) • NFA DFA 的转换 • DFA的化简
2020/12/4
一、 DFA 的 定 义
• DFA定义:一个确定的有穷自动机(DFA)M是一 个五元组:M=(K,Σ,f,S,Z)其中:
✓ 1。K 是一个有穷集,状态集,它的每个元素称为一个状态;
对上的正规式 r , 存在一个 G=(VN,VT,P,S) 使得 L(G) = L(r) , 反之亦然。
2020/12/4
五、 正 规 文法 到 正 规 式
对上的正规式 r , 存在一个 G=(VN,VT,P,S) 使得 L(G) = L(r) , 反之亦然。
2020/12/4
• 1. 将 正 规 式 转 换 成 正 规 文 法
考研英语历年阅读理解真题精析--1995年part3
Part ThreeIn such a changing , complex society formerly simple solutions to informational needs become complicated. Many of life' s problems which were solved by asking family members, friends or colleagues are beyond the capability of the extended family to resolve. Where to turn for expert information and how to determine which expert advice to accept are questions facing many people today.In addition to this, there is the growing mobility of people since World War Ⅱ. As families move away from their stable community, their friends of many years, their extended family relationships, the informal flow of information is cut off, and with it the confidence that information will be available when needed and will be trustworthy and reliable. The almost unconscious flow of information about the simplest aspects of living can be cut off. Thus, things once learned subconsciously through the casual communications of the extended family must be consciously learned .Adding to societal changes today is an enormous stockpile of information. The individual now has more information available than any generation, and the task of finding that one piece of information relevant to his or her specific problem is complicated , time-consuming and sometimes even overwhelming .Coupled with the growing quantity of information is the development of technologies which enable the storage and delivery of more information with greater speed to more locations than has ever been possible before. Computer technology makes it possible to store vast amounts of data in machine-readable files, and to program computers to locate specific information.Telecommunications developments enable the sending of messages via television, radio, and very shortly, electronic mail to bombard people with multitudes of messages. Satellites have extended the power of communications to report events at the instant of occurrence. Expertise can be shared world wide through teleconferencing , and problems in dispute can be settled without the participants leaving their homes and/or jobs to travel to a distant conference site. Technology has facilitated the sharing of information and the storage and delivery of information, thus making more information available to more people.In this world of change and complexity , the need for information is of greatest importance. Those people who have accurate , reliable up-to-date information to solve the day-to-day problems, the critical problems of their business, social and family life, will survive and succeed. "Knowledge is power" may well be the truest saying and access to information may be the most critical requirement of all people.9. The word "it" (line 3, para. 2)most probably refers to__.(A)the lack of stable communities(B)the breakdown of informal information channels(C)the increased mobility of families(D)the growing number of people moving from place to place10. The main problem people may encounter today arises form the fact that__.(A)they have to learn new things consciously(B)they lack the confidence of securing reliable and trustworthy information(C)they have difficulty obtaining the needed information readily(D)they can hardly carry out casual communications with an extended family.11 . From the passage we can infer that__.(A)electronic mail will soon play a dominant role in transmitting messages(B)it will become more difficult for people to keep secrets in an information era(C)people will spend less time holding meetings or conferences(D)events will be reported on the spot mainly through satellites12. We can learn from the last paragraph that __.(A)it is necessary to obtain as much(B)people should make the best use of the information(C)we should realize the importance of accumulating information .(D)it is of vital importance to acquire needed information efficientlyUnit 2(1995)Part 3重点词汇:subconsciously(下意识地)←sub下+conscious有意识的+ly。
自然语言处理中的词法分析与句法分析
自然语言处理中的词法分析与句法分析词法分析(Lexical Analysis)是指将一个句子或文本切分成一个个独立的词(Token)的过程。
在自然语言处理中,词法分析主要包括以下几个步骤:1.分词(Tokenization):将文本切分成词。
例如,将句子“我爱自然语言处理”切分成["我", "爱", "自然语言处理"]。
分词可以使用规则、统计方法或机器学习方法进行。
2.词性标注(Part-of-Speech Tagging):为每个词标注其词性。
例如,将词语“自然语言处理”标注为“名词短语”,将词语“爱”标注为“动词”。
词性标注可以使用规则、统计方法或机器学习方法进行。
3.词形还原(Lemmatization):将每个词还原为其基本形式。
例如,将动词的各种时态和语态还原为原形。
词形还原通常使用规则或基于词典的方法。
句法分析(Syntactic Analysis)是指对一个句子的结构进行分析,包括短语结构分析和依存关系分析。
句法分析的目标是确定句子中各词之间的语法关系。
在自然语言处理中,句法分析主要包括以下几个步骤:1.短语结构分析(Phrase Structure Parsing):根据语法规则,将句子分解成短语(Phrase)。
短语结构分析可以使用基于规则的方法(如上下文无关文法)或基于统计的方法(如基于机器学习的方法)。
2.依存关系分析(Dependency Parsing):确定句子中词与词之间的依存关系。
依存关系表示词与词之间的句法关系,如主谓关系、动宾关系等。
依存关系分析可以使用基于规则的方法或基于统计的方法。
词法分析和句法分析是自然语言处理中两个重要的步骤。
词法分析解决了单词划分和词性标注的问题,为后续的句法分析提供了基本的信息。
句法分析则进一步对句子的结构和语法关系进行了深入分析,为理解句子的意义和进行更高级的语义分析奠定了基础。
2023年高考英语阅读理解 专题04 猜词题
2023年高考英语阅读理解专题04 猜词题专题04 猜词题Part1 技巧导图Part2 知识详解Part3 词义猜测题特点Part4 词义猜测题七大猜词技巧Part5 构词法基础知识Part1 技巧导图Part2 知识详解Part3 词义猜测题特点猜词悟义是应用英语的重要能力,也是高考阅读理解中必考的题型。
它不但需要准确无误地理解上下文,而且要有较大的泛读量,掌握或认识较多的课外词汇。
同时,考生应掌握一些猜词技巧,通过定义、同位、对比、因果、常识、同义、反义、构词、常识及上下文线索等确定词义。
词义猜测题思维导图【设问形式】•The underlined word “ … ” refers to/ (probably) means .•“…” as used in the passage can best be defined as…•What do you think the expression “…” stands for?•What does the underlined word “…” refer to in the last paragraph?•Which of the following words can take the place of the word “ … ”?•The underlined word “…” could best be replaced by…•Which of the following has the closest meaning to the word “ … ”?•What does the author mean by “…” in paragraph 2?Part4 词义猜测题七大猜词技巧1.根据定义或上下文解释进行猜测有时短文中出现一个需要猜测其意义的词或短语,下面接着出现其定义或解释。
标点符号,如逗号后的解释(名词同位语)、破折号后的解释、括号内的解释等。
编译原理chapter3 词法分析
一 设计一个奇偶校验器
DFA是由集合,序列和函数定义的数学模型, 它对于 上的w,判定是可接受的还是不可 接受的。例如,设计一个DFA m ,奇偶校验 器,首先,w是由0,1组成的字符串,因此, 1. ={0 ,1}且w在一条输入带上。
0 1 0 1 1$
读头
精品文档
11
2. 状态集:它记忆已读入w子串的状态,m是 奇偶校验器,它应该记住,初始序列是奇数 个1还是偶数个1。因此,m有even和odd两个 状态. 3 .even为开始状态。
词法分析器
‘while’,‘i’,‘<>’,‘j’, ‘do’, ‘if’,‘i’,‘>’,‘j’,‘then’, 'i', ':=’ , 'i', ’-’ , 'j', 'else', 'j', ':=', 'j', '-', ‘i'
精品文档
4
词类和属性
computator n. Calcculating machine.
3.1.1 词法分析程序的功能 源程序 单词词序法列分析器
3.1.2 单词的词类和属性 (词类符号,单词的属性值)
3.1.3 词法分析程序作为一个独立子程序 (1)语法分析程序的子程序; (2)组 织成一遍扫描。
精品文档
3
While i<>j do if i>j then i:=i-j else j:=j-I
三 一个DFA有三种表示:
(1)象上面,用转换函数;
精品文档
14
转移矩阵
状态转换图
a
b
0
1
2
a
Chapt3_词法分析
其他任务:滤掉空格,删除或跳过注释、换行符、 续行符、标号等非实质性的字符,填符号表,词法错 误检查等
3.2 程序语言的单词符号种类及词法分析输出
单词符号是程序设计语言的基本语法单位和最小 的语义单位。
例 有C语言源程序 段: main( ) { int a; a=10; printf(“%d”, a); }
保留字(它是标识符的子集): 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>∷= */
S
0
1
U
1 0
Z V1 Z01 U001 1001
用该文法对应的状态图
如何分析?
V
1
0
Z
3.3 正则文法及状态图
利用状态图来分析和识别字符串的方法:
编译原理第三章词法分析
z19
step1 : 对语言的各类单词分别构造状态图;
step1
L
1
2
other
*
3 其中: other表示非L| D | _字符
z8
3.2.1 单词与属性字
注意:
(1) 同一个字符开头+后续字符->跨多个单词类;
(2) 非单词成分和预处理成分;
•例:源程序注释;/* …….*/
预处理指令:
•# define… # include…
z9
3.2.1 单词与属性字
2. 属性字 对所识别的单词的数据结构表示。
控制线
数据线
X : 固定长度的存储空间 ; z16
预处理程序(作用)
(1) 减少内存空间占用;
(2) 减轻扫描器实质性处理的负担;
预处理程序主要任务:
(1) 滤掉源程序中的非单词成分(如无用空格;换行
符等);
•滤掉注释;
(2) 实际的预处理工作
•宏替换; •文件包含的嵌入;
L1= ( T,C)
属性字 Token
Code
刻画单词类别(单词性质)
如:标识符;运算符;…
单词的内码值(可空)
z10
说明
单词类别通常用整数编码 单词类别提供给语法分析程序使用 单词符号属性信息记录单词符号的特征或特性 单词的属性值提供给语义分析程序使用
编码形式:
一类一种:关键字、标识符、常数、运算符、界符 一字一种:关键字、运算符、分界符各一码
第三章词法分析终.ppt
函数,也就是说,对任何状态k∈K和输入符号a ∈∑, f(k,a)唯一地确定了下一个状态
29
二.不确定的有穷自动机NFA ❖一个NFA:M=(K,,f,S,Z) ➢K是一个有穷集,它的每个元素称为一个状态 ➢是一个有穷字母表,它的每个元素称为一个输入符号 ➢f是一个从K * 到K的子集的映像,即:K* * →2 K ➢SK是一个非空初态集 ➢ZK是一个终态集
15
❖设r,s,t为正规式,正规式服从的代数规律有:
➢rs=sr
“或”服从交换律
➢r(st)=(rs)t “或”的可结合律
➢(rs)t=r(st)
“连接”的可结合律
➢r(st)=rsrt
(st)r=srtr
分配律
➢r=r
r=r
是“连接”的恒等元素(零一律)
➢rr=r
r=rrr… “或”的抽取律
16
A (a|d)*
R2 S aA
A (a|d)B A
B (a|d)B B
R3 S aA
A
A aB
A dB
B aB
B dB
B
18
2.将正规文法转换成正规式: 基本上是上述过程的逆过程,最后只剩下一个开始符
号定义的正规式,其转换规则如表4.1所示:
19
例3.5 G[s]: S aA A dA
Sa Aa
5
二.词法分析程序的输出 1.单词符号一般可分为下列五种: ❖基本字(关键字):begin、end、if、while、var ❖标识符:常量名、变量名、过程名 ❖常数(量):25、3.1415、true、“ABC” ❖运算符:+、-、*、<= ❖界符:逗点、分号、括号 2.输出表示: ❖(单词种别,单词自身的值) ➢单词种别:语法分析需要的信息 ➢单词自身的值:编译其他阶段需要的信息
编译原理第3章. 词法分析
A = aB + bB (1) B = aC + a + b (2) C = aB (3) 将(3)代入(2)中的C得 B = aaB + a + b (4) 对(4)使用求解规则得 B = (aa)*(a + b) (5) (5)代入(1)中的B得 A = (a + b)(aa)*(a + b) 即正规文法G[A]所生成语言的正规式是 R = (a | b)(aa)*(a | b)
2019/2/25 11
2.由正规文法构造状态转换图
(1).右线性文法 => 状态转换图
已知: G=(VN , VT , P , S ) P : A→aB | a A , B∈VN , a∈VT* 求: 状态转换图M 设: | VN |=k , 则状态转换图M共有k+1个结点 方法: ①初态=S , 增设终态结点F ②对G中形如A→aB 的产生式, 从结点A引一条矢 线到结点B , 并用 a 标记。 ③对G中形如A→a 的产生式, 从结点A引一条矢 线到终态结点F , 并用 a 标记。 ④对G中形如A→ε 的产生式, 从结点A引一条矢 线到终态结点F , 并标记为 ε , 或令A为接受状态。
2019/2/25 8
三.状态转换图
状态转换图: 是由一组矢线连接的有限个结点所组 成的有向图。其作用是识别相应的字符串。 例如: 标识符: I→ l | I l | I d 初态 =>①
l
②
l/d
非l 非d
③
终态
例如: <整数>→数字 | <整数>数字 =>①
2019/2/25
d
④
d
非d
⑤
9
词法分析优秀课件
徐志明
哈工大语言技术中心
词法分析
概述
英文旳词法分析
英文词辨认
英文词形还原
中文旳词法分析
形态分析
分词
中文未登录词辨认
命名实体辨认
术语、新词
概述
词:是自然语言中能够独立利用旳最小单位,是语
言信息处理旳基本单位。
词法分析:词汇层旳分析技术
词旳辨认:将句子转换成词序列。
Let’s 、 let’s => let + us
I’am => I + am
{it, that, this, there, what, where}’s =>
{it, that, this, there, what, where} + is
can’t => can + not; won’t => will + not
英文词形还原——Lemmatization
词形还原旳一般措施
查词典,假如词典中有该词,直接拟定该词旳原形;
查找不规则词形变化旳词表,假如词典中有该词,
直接拟定该词旳原形;
根据词形变化规则集,对单词进行还原处理,假如
还原后在词典中找到该词,则得到该词旳原形;
上述措施均失效,则作为未登录词处理。
规则:
AABB AB
ABAB AB
A里AB AB
中文词缀
前缀
老鹰、老虎、老三、老王
超豪华、超原则、超高速
非党员
后缀
骨头、砖头、甜头、苦头、盼头、想头
桌子、椅子、孩子、票子、房子
文学家、指挥家、艺术家
词法分析及词法分析程序..课件
PART 03
词法分析程序的设计
词法分析程序的输入
源代码
词法分析程序的输入是源代码,包括 各种编程语言的源代码。
语法规则
词法分析程序需要使用语法规则来指 导如何解析源代码。
词法分析程序的
标记序列
词法分析程序的输出是一组标记序列, 每个标记代表源代码中的一个单词或符 号。
VS
识别结果
词法分析程序通过识别源代码中的单词或 符号,将其归类为不同的标记,从而生成 标记序列。
词法分析程序可以帮助搜索引擎理解用户的查询意图,从而提供更相关的搜索结果。
智能助手
智能助手需要理解用户的自然语言输入,通过词法分析程序可以将语音或文本输入分解成一个个的词素,从而理解用户的意 图。
智能助手的应用场景包括语音助手、智能客服、智能家居等。
2023-2026
END
THANKS
感谢观看
KEEP VIEW
PART 04
词法分析程序的实现
词法分析程序的语法分析
词法分析程序的语法分析是词法分析程序的核心部分,它负责将输入的字 符串分割成一个个单独的词素或标记。
语法分析器通常采用有限自动机或正则表达式等算法,根据预定义的语法 规则对输入字符串进行解析,并生成一棵语法分析树。
语法分析器还需要处理各种语法错误和异常情况,以确保输入字符串符合 预定义的语法规范。
词法分析程序的语义分析
01
语义分析是词法分析程序的另 一个重要组成部分,它负责对 语法分析树进行语义检查和解 释。
02
语义分析器通常会检查语法分 析树中的各个节点是否符合语 义规则,例如检查变量是否已 声明、函数是否已定义等。
03
语义分析器还会生成一些中间 代码或抽象语法树,以供后续 的代码生成器使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态转换图的实现(续1)
对于不含回路的分叉结点来说,可让它对应一个switch语句, 或一组if…then…else语句
字母
j
数字
i
/
k
GetChar() if(IsLetter()){…状态j的对应程序段…} else if (IsDigit()) {…状态k的对应程序段…} else if (ch == ‘/’) {…状态l的对应程序段…} else {…错误处理…}
记号 源程序 词法分析器 取下一 个记号 语法分析器
符号表
词法分析程序的功能
词法分析:根据词法规则识别及组合单词,进行词法检查 对数字常数完成数字字符串到二进制数值的转换 删去空格字符和注释
词法分析器的输出形式
词法分析器所输出的单词符号常常表示成如下的二元 式:
(单词种别,单词符号的属性值)
单词符号的属性信息是指单词符号的特性或特征,属性 值则是反应特性和特征的值。 对于某个标识符,常将存放它的有关信息的符号表项的 指针作为其属性值 对于某个常数,则将存放它的常数表项的指针作为其属 性值。
1.DO99K = 1, 10 2.IF(5.EQ.M) I = 10 3.DO99K = 1.10 4.IF(5.EQ.M) = 55 其中,语句1和2是DO和IF语句,他们都是以基本字开 头的,语句3和4是赋值语句,都是以用户自定义的标 识符开头的。
其他单词符号的识别
标识符的识别
多数语言的标识符是字母开头的“字母/数字”串,而且在程序 中标识符的出现都后跟这算符或者界符。因此标识符的识别没 有太大的困难。
词法分析器的设计与实现
输入、预处理和单词的识别(超前搜索)
预处理,主要是针对空白符、跳格符、回车符和换行符等编 辑性字符的处理。
输入
输入缓冲区 预处理子程序
列表
扫描缓冲区 扫描器
单词符号
双缓冲区技术
关键字的识别
像FORTRAN这样的语言,关键字不加以特殊保护, 关键字和用户自定义的标识符或标号之间没有特殊的 界符做间隔。这使得关键字的识别甚为麻烦。
,
10 11
(
)
12
其他
13
状态转换图的实现
ch:字符变量,存放最新读进的源程序字符 strToken:字符数组,存放构成单词符号的字符串 GetChar:子程序过程,将下一个输入字符读到ch中,搜索指 示器前移一个字符位置。 GetBC:子程序过程,检查ch中的字符是否为空白。如果是, 则调用GetChar,直至ch中进入一个非空白字符。 Concat:子程序过程,将ch中的字符连接到strToken之后。 IsLetter和IsDigit: 布尔函数过程,它们分别判断ch中的字符 是否为字母和数字。 Reserve:整型函数过程,对strToken中的字符串查找保留字 表,若它是一个保留字则返回它的编码,否则返回0值。 Retract:子程序过程,将搜索指示器回调一个字符位置,将 ch置为空白字符
Part3词法分析
授课:胡静
内容提要
词法分析器的作用 词法分析程序的设计与实现——状态图
词法分析程序的自动生成——有穷自动机
一个简单的编译器结构
简单的前端结构
编译前端是如何进行工作的
编译前端是如何进行工作的
第一步:词法分析
词法分析器在编译器中的位置
词法分析是编译的第一阶段。其任务是从左到右逐字的对源 程序进行扫描,产生一个一个的单词符号,把作为字符串的 源程序改造成为单词符号串的中间程序。 词法分析是编译过程中的一个阶段,在语法分析前进行 。也 可以和语法分析结合在一起作为一遍,由语法分析程序调用 词法分析程序来获得当前单词供语法分析使用。
对于C++语言的代码:while (i >= j) i--; 经词法分析器处理后,应该成为:
<$WHILE, - > <$LPAR, - > <$ID, 指向i的符号表项的指针 > < >=, -> <$ID, 指向j的符号表项的指针> <&RPAR, -> <$ID, 指向i的符号表表项的指针> < --, -> < ;, ->
状态转换图的实现(续1)
InsertId:整型函数过程,将strToken中的标识符插 入符号表,返回符号表指针 InsertConst:整型函数过程,将strToken中的常数插 入常数表,返回常数表指针。 关于出错处理的一些说明:
如果后面还有状态图,出现在这个地方的代码应为: 将搜索指示器回退一个位置,并令下一个状态图开始 工作。 如果后面没有其他的状态图,则出现在上述位置的代 码应该进行真正的出错处理,报告源程序含有非法符 号,并进行善后处理。
l
状态转换图的实现(续2)
对于含回路的状态结点来说,可让它对应一个由While语句和 if语句构成的程序段
字母或数字
i
其他
GetChar(); while(IsLetter() or IsDigit()) GetChar(); …状态j的对应程序段…
j
Thanks for your time! Questions & Answers
空白 字母
字母或数字 *
0
1
数字
非字母与数字
2
状态转换图实例
其中的假设条件是: 1.关键字都是保留字,不允许使用他们作为自己 定义的标识符
数字
3
=
非数字
*
4
5 6
+
* . . . . . .
非*
*
7
*
8 9
2.将关键字作为一类特殊标识符来处理。把它们 预先安排在一张表格中。 3.再次,如果关键字、标识符和常数之间没有确 定的运算符或界符做间隔,则必须至少用一个空 白符做间隔。
单词符号分类举例
单词符号 种别编码 DIM 1 助忆符 $DIM
单词符号
= + *
种别编码
8 9 10
助忆符
$ASSIGN $PLUS $STAR
IF
DO STOP END 标识符 常数
2
3 4 5 6 7
$IF
$DO $STOP $END $ID $INT
**
, ( )
11
12 13 14
$POWER
词法分析中的错误恢复
在词法分析阶段对错误进行纠正的假设前提:大多数词法错 误是多、漏或错了一个字符或者相邻的两个字符错位的结果。 对错误进行修补最直观的策略是看:剩余输入的前缀能否通 过上面的一个变换变成一个合法的词素。 最简单的错误恢复策略是“紧急方式”恢复,即反复删除掉 剩余输入最前面的字符,直到词法分析器能发现一个正确的 记号为止。 其他的恢复动作包括:删除一个多余的字符、插入一个遗漏 的字符、用一个正确的字符代替一个不正确的字符、交换两 个相邻的字符
常数的识别
基本来讲常数的识别也是很直接的,有些需要用到超前搜索。 如5.E08和5.EQ.M。
算符和界符的识别
词法分析器将那些多个字符复合成的算符和界符(如++、--、>=) 拼合成一个单词符号。因为这些单词符号是不可分的整体,若 分划开来,便失去了原来的意义。这里需要超前搜索。
状态转换图
状态转换图是一张有限方向图;
$COMMA $LPAR $RPAR
•运算符可采用一字一种的分 法。也可以把具有一定共性 的运算符视为一种 •界符一般用一符一种的分法。
分类方法: •关键字:可将 其全体视为一 种,也可以一 字一种。后者 更方便。 •标识符:一般 统归为一种 •常数则宜按照 类型(整型、 实型、布尔型 等)分种
单词符号输出例子
词法分析中的错误
词法分析器不能从全局的角度考察源程序,所以能在 词法分析阶段发现的错误是有限的。主要是不符合合 法标识符拼写的错误。 例如,如果词法分析器第一次碰到如下的C语言程序: fi(a==f(x))… 词法分析器无法区别fi究竟是关键字if的错误拼写还 是一个未声明的函数标识符。由于fi是合法的标识符, 词法分析器必须返回该标识符的记号,让编译器的其 他阶段去处理这种错误。
结点代表状态,用圆圈表示; 状态之间用箭弧连接, 箭弧上的标记(字符)代表在射出结点(即箭弧始结 点)状态下可能出现的输入字符或字符类。
一张转换图只包含有限个状态(即有限个结点),其 中一个被人为是初态,而且实际上至少要有一个终态 (用双圆圈表示)。 一个状态转换图可用于识别(或接收)一定的字符串。
状态转换图示例
1
X
2 3
数字
数字 *
识别整数的转换图
Y
0
1
其他
2
转换图示例
字母或数字 *
识别标识符的转换图
0
字母
1
其他
2
终态结点上打了一个星号*,意味着多读进了一个不属于标识符部分的字 符,应该把它退还给输入串。 如果在状态0时的输入不能符合任何一条转换路径,那么就说明这个转换 图工作不成功,不能识别出标识符。