国防科大编译原理
国防科大计算机原理
![国防科大计算机原理](https://img.taocdn.com/s3/m/f26a7c31f56527d3240c844769eae009581ba29a.png)
国防科大计算机原理国防科大(National University of Defense Technology)作为我国著名的军事科技院校之一,计算机原理是计算机科学与技术专业的核心课程之一。
本文将简要介绍国防科大计算机原理课程的内容和重要性。
计算机原理旨在向学生提供深入理解计算机硬件结构、工作原理和计算机组成的基础。
通过学习计算机原理,学生将掌握计算机的主要组成部分,包括中央处理器(CPU)、存储器、输入输出设备和系统总线等。
该课程内容涵盖了计算机原理的基石,包括数字电路和布尔代数、数字信号处理、计算机体系结构、指令执行和流水线设计、存储器层次结构、输入输出系统和总线控制等。
学生将学习到如何使用逻辑门、触发器和多路选择器等基本元件构建数字电路,了解计算机内部数据的表示和处理,以及运算器和控制器的工作原理。
计算机原理课程对于计算机科学与技术专业的学生来说至关重要。
它为学生打下了坚实的计算机硬件基础,帮助他们理解计算机系统如何进行数据存储、处理和传输。
这对于学生深入研究计算机网络、操作系统、编译原理和嵌入式系统等领域具有重要作用。
另外,对于国防科大的学生来说,计算机原理还具有特殊的意义。
国防科大致力于培养高素质的军事科技人才,他们需要具备扎实的计算机科学和技术背景,掌握最先进的计算机系统和技术,以应对军事科技的发展和应用需求。
在实际应用中,计算机原理为学生提供了分析和解决计算机系统问题的能力。
学生将学会如何识别系统中的瓶颈、调试硬件和软件错误,并提出优化计算机系统性能的建议。
总之,国防科大计算机原理课程是一门重要的课程,为学生打下计算机硬件基础并培养解决问题的能力。
这对于他们在军事科技领域取得成就具有重要意义。
《编译原理》期中及期末习题
![《编译原理》期中及期末习题](https://img.taocdn.com/s3/m/22792f0df12d2af90242e68e.png)
第一章高级语言与编译程序概述典型例题:单项选择题1.1.1.将编译程序分成若干个“遍”是为了___。
a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率1.1.2.构造编译程序应掌握____。
(陕西省2000年自考题)a.源程序b.目标语言c.编译方法d.以上三项都是1.1.3.变量应当_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值1.1.4.编译程序绝大多数时间花在____上。
(陕西省1998年自考题)a.出错处理b.词法分析c.目标代码生成d.管理表格1.1.5.____不可能是目标代码。
( 陕西省1997年自考题)a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码1.1.6.数组A[1…20,1…10]的首地址偏移量为0,按列存储,每个元素占一个字节,存储器按字节编址,则A[i,j]的偏移地址为____。
a.(i-1)X10+(j-1)b.(i-1)X20+(j-1)c. (i-1)+(j-1)X10d.(i-1)+(j-1)X201.1.7.使用____可以定义一个程序的意义。
a.语义规则b.词法规则c.产生规则d.左结合规则1.1.8.表达式X:=5中,变量x____。
a.只有左值b.只有右值c.既有左值又有右值d.没有左值也没有右值1.1.9.词法分析器的输入是__。
a.单词符号b.源程序c.语法单位d.目标程序1.1.10.中间代码生成时所遵循的是_。
a.语法规则b.词法规则c.语义规则d.等价变换规则1.1.11.编译程序是对__。
a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译1.1.12.词法分析应遵循_。
(陕西省2000年自考题)a.语义规则b.语法规则c.构词规则d.等价变换规则多项选择题:1.2.1 编译程序各阶段的工作都涉及到___。
关于编译原理课程定位的思考
![关于编译原理课程定位的思考](https://img.taocdn.com/s3/m/6a52d451a517866fb84ae45c3b3567ec102ddcf5.png)
关于编译原理课程定位的思考
周会平;王挺;李梦君
【期刊名称】《计算机教育》
【年(卷),期】2011(000)011
【摘要】本文针对编译原理课程教学的现状,对这门课程在计算机专业中的定位进行理性思考.然后以人本主义教学理论为指导,研究编译基础理论的辐射范围,将编译原理课程的学习和其他领域的研究结合起来,以此提高学生的学习积极性,获得良好的教学效果.
【总页数】3页(P45-47)
【作者】周会平;王挺;李梦君
【作者单位】国防科技大学计算机学院计算机系,湖南长沙410073;国防科技大学计算机学院计算机系,湖南长沙410073;国防科技大学计算机学院计算机系,湖南长沙410073
【正文语种】中文
【中图分类】G642
【相关文献】
1.“编译原理”课程教学思考 [J], 蒋凌云
2.编译原理课程教学的几点思考 [J], 杨柳;魏秀杰;肖楠
3.浅谈编译原理课程的定位 [J], 赵银亮
4.新工科背景下《编译原理》的重定位思考与实施 [J], 黄贤英;曹琼
5.关于《编译原理》课程的教学思考 [J], 沈睿;朱学君
因版权原因,仅展示原文概要,查看原文内容请购买。
编译原理
![编译原理](https://img.taocdn.com/s3/m/46f18d2ab4daa58da0114add.png)
课程地位:编译理论与方法
计算机科学与技术中理论和实践相结合的最好典范 ACM 图灵奖,授予在计算机技术领域作出突出贡献的 科学家
程序设计语言、编译理论与方法约占1/3
程序的构造方法
1.1 什么是编译程序
编译程序与程序员的关系? 回顾程序执行的方式
解释型,如:BASIC 编译型,如:C 混合型,如:JAVA
1. 词法分析
任务: 对源程序字符流进行扫描和分解,识别出一 个个单词符号。 依循原则:构词规则 描述工具:有限自动机 例: Z := X + 6 * Y z : = x + 6 * y
可识别为下列单词(记号): 标识符z 赋值 := 标识符x 加号+ 数字6 乘号* 标识符y
2. 语法分析
任务:在词法分析的基础上,根据语言的语法规则把单词 符号串分解成各类语法单位。 依循的原则:语法规则 描述工具:上下文无关文法、语法树和抽象语法树 例(PASCAL): VAR Z,X,Y:real; E Z := X + 6* Y :=
PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END.
5
PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; 表 0.1 符号名表 SNT M:=N+4; NAME INFORMATION N:=K; END. M 形式参数,整 型,值参数 N 形式参数,整 型,值参数 K 整型,变量
国科大春季选课推荐
![国科大春季选课推荐](https://img.taocdn.com/s3/m/41edabc4f9c75fbfc77da26925c52cc58ad6904d.png)
国科大春季选课推荐
中国科大春季选课推荐
一、必修课
1.大学物理A:大学物理A是学习一些基本物理学知识和物理方法的
基础课程,课程内容涵盖物体运动、动量定理、牛顿定律等。
2.大学物理实验:该课程由理论部分和实验部分组成,理论部分加强对物理定律的理解,实验部分让学生通过实验去验证定律,并熟悉实验
设备的操作。
3.大学物理B:大学物理B是更深入的物理学知识和技术的课程,课程的重点是探讨各种现代物理技术,主要内容是热力学、空间结构、电
磁场等。
4.高等数学:高等数学是研究复数论、积分论、线性代数等内容的课程,其中重点放在了贝塔函数、特征值与特征方程、非线性函数等相关概念。
二、选修课
1.数据结构:数据结构是一门计算机科学与技术基础课,该课程研究计算机中的数据如何组织和存储,主要内容是线性结构、树形结构、图
形结构等。
2.编译原理:编译原理研究计算机识别输入的程序,并将其翻译成计算机需要的机器码的过程,该课程的主要内容有:词法分析、语法分析、语义分析以及翻译等。
3.操作系统:操作系统是一门关于计算机是如何管理软件资源和硬件资源的课程,主要讨论话题有:进程同步和通信、内存管理、文件系统
管理等。
4.网络技术:网络技术涉及到计算机的网络设备、网络通信协议、网络应用软件等,主要内容有:物理层、数据链路层、网络层、传输层以
及应用层等。
编译原理_国防科技大学中国大学mooc课后章节答案期末考试题库2023年
![编译原理_国防科技大学中国大学mooc课后章节答案期末考试题库2023年](https://img.taocdn.com/s3/m/4df2a225640e52ea551810a6f524ccbff121cabc.png)
编译原理_国防科技大学中国大学mooc课后章节答案期末考试题库2023年1.对于文法G(S'),该文法识别活前缀的DFA如下图,状态I5包含的项目有G(S'):(0) S' → S(1) S → iSeS(2) S → iS(3) S → a【图片】答案:S → iSeŸS_S → ŸiSeS_S → ŸiS_S → Ÿa2.(a+b)/(c-d)对应的逆波兰式(后缀式)是答案:ab+cd-/3.表达式(a+b)/c-(a+b)*d对应的间接三元式表示如下,其中三元式表中第(3)号三元式应为间接码表三元式表(1) OP ARG1 ARG2 (2) (1) + a b (1) (2) / (1)c (3) (3) (4) (4) - (2) (3)答案:( *, (1), d)4.设AS 为文法的综合属性集, AI 为继承属性集, 则对于下面的属性文法G(P)定义中,AS和AI正确描述是产生式语义规则P → xQR Q.b:=R.d R.c:=1R.e:=Q.a Q → u Q.a:=3 R → v R.d:=R.c R.f:=R.e答案:AS={ Q.a, R.d, R.f } AI={ Q.b, R.c, R.e }5.考虑下面的属性文法G(S)【图片】过程enter(name, type)用来把名字name填入到符号表中,并给出此名字的类型type。
按照该属性文法,关于语句【图片】 , 【图片】 , 【图片】:integr的语义描述准确的是答案:说明 , , 是integer变量,把 , , 三个名字填入符号表中,并在类型栏中填上integer6.考虑下面的属性文法G(S)【图片】对于输入字符串abc进行自下而上的语法分析和属性计算,设S.u的初始值为5,属性计算完成后,S.v的值为答案:187.关于属性文法,下列说法中正确的是答案:属性文法是对上下文无关文法的扩展。
国防科技大学2002年操作系统考研试题
![国防科技大学2002年操作系统考研试题](https://img.taocdn.com/s3/m/25769897b14e852458fb57ed.png)
国防科技大学2002年操作系统考研试题1,将“i/o为主“的进程定义为:当次类进程单独运行时,用于i/o 处理的时间远远多于处理机的处理时间:将”计算机为主“的进程定义为:当此类进程单独运行时,处理机的处理时间原远远多于处理的时间,若系统中运行的主要是这2类进程,才用什么样的调度算法更有利于资源的利用率,为什么?2。
请给出pcb的主要内容,描述当进程发生下面的状态转换是时:就绪—》运行,运行-》阻塞,操作系统要使用/修改pcb 中的那些内容?3。
请问,在一个进程内使用多现程有什么优点?4。
设系统有下面的解决死锁的办法:银行家算发;检测死锁,终止死锁状态的进程,释放该进程所占有的资源资源预分配请问那种办法可以达到最大的并发性,也就是那种办法可以让更多的进程无等待的向前推进?请按并发性的大小排列5。
请描叙页式虚存管理系统中页表项的主要内容,请简要描叙”缺页中断‘的处理过程,并结合该过程,说明其中使用/修改了表项的哪些内容,6。
简述os对文件读/写的系统调用所完成的工作7,简述以程述中断i/o方式,从外设读入一包n个字节的数据块的过程8若可以让文件分别在开始,中间,未尾增长,试讨论在顺述式,链接式以及索引式文件物理组织下的开销9。
(1)给出无忙等待的p,v操作的定义(1)考虑以下p,v操作的定义p(s):if s.value>0thens.value =s.value-1else beginplace this process in s.queue;block;end ;v(s)if there is at least one process waitting on semaphorethen beginremove a process p from s.queueplace process p on ready listendelses.value=s.value +1请问,当使用信号量和p,v操作做进程的同步和互斥控制时,是否可以在不改动程束时的情况下互换的使用(1)(2)中的p,v操作?这2组p,v操作有何不同?10,某工厂有3个生产车间和一个装配车间,3个生产车间分别生产a。
国防第3 版 《编译原理》课后答案
![国防第3 版 《编译原理》课后答案](https://img.taocdn.com/s3/m/39726a02bed5b9f3f90f1c6f.png)
S A
S
a
A S
d
确定化:
S
A
a
b
{0,2,5,7,10}
{1,2,5,7,8,10}
{2,3,5,7,10}
{11}
{6}
{1,2,5,7,8,10}
{2,5,7,8,10}
{2,3,5,7,9,10}
{11}
{6}
{2,3,5,7,10}
{2,4,5,7,8,10}
{2,3,5,7,10}
(((T),^,(a)),a)
((S,^,(a)),a)
((T,^,(a)),a)
((T,S,(a)),a)
((T,(a)),a)
((T,(S)),a)
((T,(T)),a)
((T,S),a)
((T),a)
(S,a)
(T,S)
(T)
S
“移进-归约”过程:
步骤栈输入串动作
0#(((a,a),^,(a)),a)#预备
确定化:
0
1
{X,1,Y}
{1,Y}
{2}
{1,Y}
{1,Y}
{2}
{2}
{1,Y}
φ
φ
φ
φ
给状态编号:
0
1
0
1
2
1
1
2
2
1
3
3
3
3
0
0
1 0
1 1
1
0
最小化:
0
11 1
0
0
第四章
P81–1
(1)按照T,S的顺序消除左递归
递归子程序:
procedureS;
begin
1996年国防科技大学编译原理和操作系统试题答案
![1996年国防科技大学编译原理和操作系统试题答案](https://img.taocdn.com/s3/m/beeceef90242a8956bece4c7.png)
国防科技大学研究生院1996年硕士生入学考试编译原理和操作系统试题操作系统部分参考答案(非标准答案)一.选择题(每题3分,共15分)1.(①②④⑥)2.(①③④⑤)3.(③)4.(①②③④)5.(①②⑦)二、当驻留集为3时,采用FIFO替换算法,页面故障数为9次;采用LRU替换算法时,页面故障数为10次。
当驻留集为4时,采用FIFO替换算法,页面故障数为10次;采用LRU替换算法时,页面故障数为8次。
结果表明,FIFO替换算法的故障数不随驻留集增大而减少;而LRU算法的故障数随驻留集增大而减少。
三.把记录文件的目录分成主文件目录和由其主管的若干个子目录,各子目录的位置由主目录中的一项指出。
应用中常设一个主文件目录,而为系统中每一个用户设立一张主文件目录MFD,每个用户的所有文件均设立一个用户文件目录UFD,作为MFD中的一项。
用以描述UFD的文件名和物理位置,即UFD是用户全部文件的文件控制块的全体。
在二级文件目录中,欲共享文件需给出一个文件的全路径名。
由系统从根目录开始检索;或者用户将其当前目录指向另一用户的子目录上,以实现共享访问。
四.采用FCFS调度算法的被调度顺序为1→2→3→4→5平均周转时间为T =(T1+T2+T3+T4+T5)/ 5 = (2+2.95+3.5+2+2) / 5 =2.49 (小时) 采用SJF调度算法的被调度顺序为1→3→5→4→2平均周转时间为T=T1+T2+T3+T4+T5)/ 5 = (2 +2.5 +0.5 +1.25 + 4.45 ) / 5 =2.14(小时)五.定义如下公共信号量:mutex0 ~ mutex3 : 分别用于控制互斥访问M0 ~ M 3,初值为1。
full0 ~ full3 : 分别用于控制同步访问M0 ~ M3 ,其中full0 初值为3,full1 ~ full3 初值为0,表示信箱中消息条数。
empty0 ~ empty3 : 分别用于同步控制对M0 ~ M3的访问。
编译原理 国防科技大学 Chapt3
![编译原理 国防科技大学 Chapt3](https://img.taocdn.com/s3/m/5952b0e44afe04a1b071de22.png)
通常, 出发, 通常,用 α1 ⇒ n 表示:从α1出发,经过 α 表示: 一步或若干步,可以推出αn。 一步或若干步,可以推出α 表示: 出发,经过0 用 α1 ⇒αn 表示:从α1出发,经过0步或 若干步,可以推出α 若干步,可以推出αn。 所以 : α ⇒β 即 α = β 或
国防科技大学计算机系602教研室 教研室 国防科技大学计算机系
词法分析器
源程序 词法分 析器 单词符号 取下一单词 语法分 析器 ...
符号表
国防科技大学计算机系602教研室 教研室 国防科技大学计算机系
3.2 词法分析器的设计
预处理 子程序 扫描器 单词符号
输入 列表 输入缓冲区
扫描缓冲区 词法分析器的结构
国防科技大学计算机系602教研室 教研室 国防科技大学计算机系
3.1 对于词法分析器的要求
一、词法分析器的功能和输出形式 功能:输入源程序、 功能:输入源程序、输出单词符号 单词符号的种类: 单词符号的种类:
基本字:如 begin,repeat,… begin,repeat, 基本字: 标识符——表示各种名字:如变量名、数组 表示各种名字: 标识符 表示各种名字 如变量名、 名和过程名 常数: 常数:各种类型的常数 运算符: 运算符:+,-,*,/,… 界符:逗号、分号、 界符:逗号、分号、括号和空白
国防科技大学计算机系602教研室 教研室 国防科技大学计算机系
第三章 词法分析
词法分析的任务: 词法分析的任务:从左至右逐个字符地 对源程序进行扫描, 对源程序进行扫描,产生一个个单词符 号。 词法分析器(Lexical Analyzer) 又称扫描 词法分析器 器(Scanner):执行词法分析的程序 :
【国防科大 编译原理】9.1.1目标程序运行时的活动 - 目标程序运行时的活动
![【国防科大 编译原理】9.1.1目标程序运行时的活动 - 目标程序运行时的活动](https://img.taocdn.com/s3/m/f65233b6a98271fe900ef932.png)
22
参数传递方式——传地址
• 把实在参数的地址传递给相应的形式参数 • 方法 • 调用段预先把实在参数的地址传递到被调用段可以拿到的地方 • 程序控制转入被调用段之后,被调用段首先把实在参数的地址抄进
3
9.1 目标程序运行时的活动
• 以Pascal为例,假定程序由若干个过程组成 • 过程(procedure)定义 • 一个过程的活动指的是该过程的一次执行 • 过程P一个活动的生存期,指的是从执行该过程体第一步操作到最后
一步操作之间的操作序,包括执行P时调用其它过程花费的时间 • 过程可以是递归的
15
测试:参数传递 … procedure P(w,x,y,z); begin
y := y*w; z := z+x; end begin a := 5; b := 3; P(a+b,a-b,a,a); write(a); end
• 传值 •A. 5 •B. 42 •C. 7 •D. 77 • E.其他值
19
参数传递方式——传值
• 把实在参数的值传递给相应的形式参数 • 方法 • 调用段预先把实在参数的值计算出来并放在被调用段可以拿到的
地方 • 被调用段开始工作时,首先把实参的值抄入形式参数相应的单元 • 被调用段中,象引用局部数据一样引用形式单元
20
例:
传值
…
procedure P(w,x,y,z); w
11
参数传递方式——传值
• 把实在参数的值传递给相应的形式参数 • 方法 • 调用段预先把实在参数的值计算出来并放在被调用段可以拿到的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.词法分析程序作为单独的子程序
S.P.(字符串)
词法分 析程序
取单词 单词
语法分 析程序
3.2 词法分析器的设计
3.2.1 输入、预处理
1、输入源程序文本放入输入缓冲区。 2、预处理----预处理子程序:删除注释和其他一些非程序必要 成分(空白符、跳格符、回车符、换行符)。
将预处理结果放入扫描缓冲区 3、扫描缓冲区的安排:分成两个半区,互补使用 单词定界:起点指示器——开始位置
标识符 无符号整数
字母、数字
S 字母 标
非字母数字
数字
S 数字 数
非数字
*
出口
*
出口
单字符分界符
S
+*, ()
出口
读字符
字母、数字
S 字母 标
非字母数字
数字
数字 数
非数字
+*, ()
出口
运算符、分界符
查保留字表
*标识符
出口
出口 *无符号整数
其他 出错
返回S
状态转换图的实现:
两种思路:
根据状态转换图的子图结构设计相应的程序结构,不同输入转 入不同(状态)处理过程
词法分析程序的输出形式-----单词的内部形式
通常用整数编码, 编码原则:利于处理
单词类别 单词值
单词符号的特征 或特性
几种常用的单词内部形式: 1、按单词种类分类 2、关键字、运算符和界符采用一符一类 3、标识符和常数的单词值又为指示字(指针值)
例1:按单词种类分类,关键字和分界符分别 用公用一个类别编码
BEGIN END FOR DO ……… : + * , (
1 2 3 4 5 6 7 8 9 ……. 20 21 22 23 …….
内部字符串 整数值 数值 0或1 内部字符串
….. பைடு நூலகம்-
例:词法分析 while (i >= j) i--;
转换为单词序列: <while,-> <(,-> <id,指向i的符号表项的指针> < >=,-> < id,指向j的符号表项的指针> <),-> <id,指向i的符号表项的指针> <--,-> <;,->
实现状态转换表,程序在当前状态和当前输入驱动下进行状态 转化工作
第一种:以输入处理为核心
状态对应一段处理程序,终态一般对应的程序段有一个return 语句,返回识别出来的单词。
不含回路的分支状态子图,对应一个switch( )语句结构或一组 if-else语句结构。
含回路的状态子图,对应一个while语句结构。 例如,图2-4(a)的状态i所对应的switch语句如下:
3.2.3 状态转换图
词法分析程序的设计:
词法规则
状态图
词法分析程序
概念:有限个结点的有向图 表示方法:状态(结点)、初态、终态、状态转换(弧) 用处:可用来识别某个字符串是否是某个正规语言的句子 (如识别整常数的状态图可识别出‘32172’是一个整常数)
L(M) = { Bn | n>0 }, 其中 B= {01,10} ,识别该语言句子 的其状态图为:
单词序列的机器编码表示示例 : <10,-> <22,-> <1,1> <28,-> <1,2> <29,-> <1,3> <25,-> <20,->
3.1.2 实现方案:
1.词法分析单独作为一遍
第一遍
单词串
S.P.(字符串)
词法分析
S.P.(符号串)
第二遍 语法分析
优点: 结构清晰、各遍功能单一 缺点:效率低
单词名称
类别编码
标识符
1
无符号常数(整) 2
无符号浮点数
3
布尔常数
4
字符串常数
5
关键字
6
分界符
7
单词值
内部字符串 整数值 数值 0 或1 内部字符串 关键字字串或内部编码 分界符或内部编码
例2:关键字、运算符和分界符采用一符一类
单词名称
类别编码
单词值
标识符 无符号常数(整) 无符号浮点数 布尔常数 字符串常数
3.1 对词法分析器的要求
词法分析器又名扫描器(scanner)。
词法分析的任务是:从左到右逐个字符地对源程序进行扫描, 产生一个个单词符号,把源程序改造成单词符号串表示的中间 程序。
3.1.1 词法分析器的功能和输出形式
词法分析:输入源程序,根据词法规则识别及组合单词。 删去空格字符和注解。
单词符号的类别: 1.关键字(保留字):begin、end、for、do … 2. 标识符:变量名、过程名、数组名等 3. 常数:无符号数、布尔常数、字符串常数等 4.运算符:+、-、*、/等 5.界符: 逗号、分号、括号、/* */、等等
getchar ( );
while (letter( )||digit( ))
getchar (); …; /*实现状态j功能的语句*/
第二种:以状态转换为核心 用变量s表示当前状态,token表示当前识别的单词。 用一个大的分支语句实现状态转换表功能,整个程序 在表驱动下,循环读入字符,进行状态转换。其他类 似以输入处理为核心。 以图2-3 (a)为例,
搜索指示器——终点位置
3.2.2 扫描识别单词
扫描器的实现技术是词法分析器实现的核心技术,后面详细介绍, 本小节只简单介绍其中的一项小技术:超前搜索技术
超前搜索技术在单词识别中的应用: (在某些语言中,单词间可以没有空格或其他分隔符分隔,关键字 也可作为变量名) • 关键字的识别:例IF(5.EQ.M)(对比IF(5)=9) • 标识符的识别:例DO99K=1.10(对比DO99K=1,10) • 常数的识别:例123.34 • 算符和界符的识别:例i++;
S
1
U
0
1
0
0
V
Z
1
例:输入字符串x=01101 和1001
•识别算法(自然语言描述)
利用状态图可按如下步骤分析和识别字符串x:
1、置初始状态为当前状态,从x的最左字符开始, 重复步骤2,直到x右端为止。
2、扫描x的下一个字符,在当前状态所射出的弧中 找出标记有该字符的弧,并沿此弧过渡到下一个状 态;如果找不到标有该字符的弧,那么x不是句子, 过程到此结束;如果扫描的是x的最右端字符,并 从当前状态出发沿着标有该字符的弧过渡到下一个 状态为终止状态Z,则x是句子。
–例如,图3-4(a)的状态i所对应的switch语句如下:
s=getchar ( ); switch (s) { case 'a'- 'z':
… ; /*实现状态j功能的语句*/ case '0'-'9': … ; /*实现状态k功能的语句*/ }
例 如 , 图 2-4(b) 的 状 态 i 所 对 应 的 while语句如下: