欢迎来到天天文库
浏览记录
ID:50999823
大小:69.50 KB
页数:6页
时间:2020-03-08
《使用直接分析法编制C语言子集的词法分析程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、题目使用直接分析法编制C语言子集的词法分析程序二、目的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法.三、要求1.根据具体情况,由同学们自己选取C语言的一个适当大小的子集(可取一类典型单词,也可以尽可能使各种类型的单词都兼顾到);在实习前一定要制出相应的表.2.实验时间:4-8学时.3.检查内容及时间:A)完整的实验报告(算法流程必须要有);B)在机器上调试成功的源程序;实 验 报 告 题目: 用直接分析方法编制PASCAL语言子集的词法分析程序.一、分
2、析 对于单词符号我们将其分成四类:保留字K、标识符I、常数C和界符P,每类单词符号均可使用一张表格表示.在词法分析过程中,保留字K和界符P这两个表格的内容是固定不变的(由语言确定),源程序字符串只能从其中选取,而标识符I、常数C这两表是在分析过程中不断形成的. 对于一个具体源程序而言,在扫描字符串时识别出一个单词,若这个单词的类型是K、I、C或P中之一,那么就以单词的二元式形式输出.每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直到整个源程序全部扫描完毕,从而形成相应的单词串. 各类单词的二元式表述均具有相同的结构与长度,形式如下:(
3、单词种别t,单词自身的值i)t是单词种别,而单词种别共分为K、I、C、P四类且每类对应一张表格.因此,t实际上就是一个指向这四类中某一类对应表格的指针.i则为指向该类表格中一个特定项目的指针. 所以整个的词法分析过程就是从源程序中获得一个个的单词符号,将这些符号分别填入四张类表中,并且有一个二元式序列构成一个索引,这个索引为以后的语法分析提供处理上的方便. 为了减少实习量,可以适量地选取K,P中的一个子集来进行.如下表:表1 保留字K表内部地址12345678910保留字BEGINCONSTDOELSE ENDIFPROCEDURETHENVARWHI
4、LE表2 界符P表内部地址12345678910界 符;+::(,)<<<组合界符==> 保留字表包括10个有代表性的保留字,界符表包括关系运算符三种(8,9,10),算术运算符(2),分隔符三种(1,4,6),一对圆括号,加上赋值号共10种.这两表的内容表明PASCAL语言的条件语句,赋值语句,WHILE型循环语句,复合语句,过程及变量说明均可作为源程序例子输入给词法分析程序,标识符表I中的每一项包含一个标识符,常数表C中的每一项包含一个整常数,后两表的内容都是在词法分析过程中产生的. 如何从源程序中识别出一个个的单词符号呢?图1中的流图清晰地反映出
5、这一过程. 图1中,双圆圈的状态表示终态,即能到达终态就代表识别出一个单词符号,而带有*号的终态是指处理时应回退一字符.其它界符数字字母出错处理有C表有此单词否?形成一项无形成(C,i)十进制数转化成二进制数K表有此单词否?形成(I,i)形成(K,i)有无查界符表形成(P,i)源程序完否?输出二元式开始开始对源程序扫描扫描到的单词符号首字母是什么?完未完图2词法分析算法流图2字母非字母与数字1字母与数字0空白4数字非数字3数字+6;58:非=7=9(10,11)12其它1714<非=1315>16=图1 扫描程序的状态转换图二、算法 词法分析器在扫描过
6、程中,依次从源程序中取出源字符,根据图1的扫描过程状态转换图,当碰到终态时,即双圆圈的状态时就得到一个单词符号,此时可以根据第一个字符判断单词属于K,I,C,P中哪一类,从而确定单词的"单词种别"和"单词自身的值".整个词法分析的算法流程如图2.三、实现 选择实习环境为TURBOC2.0语言.实现程序见附录.四、总结 上机前应做好准备.即根据实习目的、要求和分析,选择相应的数据结构,使用C语言参照算法中的流程编写词法分析的程序.将编好的程序上机进行调试.注意调试的例子应有词法正确的,也应有词法错误的或是超出所选数据结构范围的. 实验完成达到实习目的之
7、后,若尚有余力者,可以对所选子集适当扩大或是增加相应功能如:扩充界符和保留字数目;允许实型常数;进行词法错误检查;最大范围扩充以至PASCAL语言所有字符的集合.实验完成以后编写出完整的实验报告,反映出最后的实验学习结果.附录/*词法分析器程序分析对象为PASCAL语言源程序文件分析程序主文件:wanalyse.c;保留字文件:token.txt;分析结果存放文件:result.txtWORDANALYSEDEMOFORTURBOC2.0Copyright(c)2006,07Authors:WQJAllrightsreserved.Fromthecomma
8、ndline,use:C:>wanalyseOBJECT.PAS
此文档下载收益归作者所有