




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
您下载的软件来自:最火软件站 类C语言词法分析器设计一、问题描述词法分析器是编译工作的第一个阶段,主要完成对源程序的扫描,从而将源程序转换成单词序列,作为第二阶段语法分析的输入。二、需求分析1、 预处理:过滤掉跳格符、回车符、换行符等编辑性字符。将多个连续的空格合并成一个空格。过滤注释。2、 单词符号的识别,将每个单词符号进行不同类别的划分。单词符号可划分成5种。(1) 关键字:如if、else、while、int、float等。(2) 标识符:用户自己定义的名字,常量名、变量名和过程名。(3) 常数:各种类型的常数(4) 运算符:如+、-、*、=等。(5) 届符:如逗号、分号、括号等。3、 最后将所有的单词符号转化为便于计算机处理的机内码形式4、 用户界面使用图形化界面三、概要设计 1、 字符集说明:本词法分析演示的是C语言的一个子集,字符集如下: (1) 关键字:int,long,float,double,char,short,void,if,else,for,while,do,break,switch, continue,case,default,return,static,struct (2) 运算符:+,-,*,/,%,=,!=,=,=,+,-,!,&,&,|, (3) 界符:,,;,(,),:,”,# (4) 标识符:以字母开头的字母数字串。 (5) 常数:整型或浮点型。 2、 字符集的内编码形式: 字符机内编码字符机内编码int1=26long227char3=32return8,=,=,+,-,&,&,|,; (3) delimeter:,;,(,),:,#; (4) 说明:1-20号为关键字,可直接用下标表示,i+1就是其机内码,21-40为运算符,间接下标:i+21就是其机内码, 41-50为界符,直接下标:i+41就是其机内码;如果是用户自己定义的标识符,则其机内码为51;如果是常数,则其机内码是52;如果是错误,则机内码为0. 4、 主要类说明: (1) Analysis类:接收源程序,进行词法分析工作,再将分析结果传到用户界面。 (2) UserFrame类:不参与词法分析工作,只提供用户操作界面。接收用户的输入,并产生输出。5、 主要方法说明: (1)preTreat():预处理,消除跳格符、换行符和回车符,合并空格并消除注释。 (2)doAnalysis():主分析函数,通过调用一系列子函数,完成分析工作并输出结果。 (3)divide():完成字符的分解,返回一个独立的字符串(可能是关键字、标识符、运算符、界符或者数字串)。 (4)check():对divide()返回的字符串进行检查,判断其是数字串、单个字符还是字符串,返回不同标志。1:数字;2:单个字符;3:多个字符 (5)checkDigit():如果check()返回的是数字串,则调用该函数判断其是整型还是浮点型,返回不同标志。是正常的数字类型则返回常数对应的机内码,否则,返回错误的机内码。 (6)checkChar():如果check()返回的是单个字符,则调用该函数判断其是标识符、运算符还是界符,返回其对应的机内码。 (7)checkString():如果check()返回的是字符串,则调用该函数判断其是关键字、标识符还是运算符,返回其机内码。 6、 功能调用图:四、详细设计1、String preTreat(String ss):2、doAnalysis(String ts): 3、ArrayList divide(String ts): 4、int check(String st):5、int checkDigit():6、int checkChar(): (1) boolean isOperator(st): (2) boolean isDelimiter(st): (3)boolean isChar(st): 7、int checkString(String st)(1) boolean isKeyword(String st):(2) boolean isIdent(String st)五、测试用例:由于篇幅问题,此处只列出一个,其余测试用例在文件夹testInstance中。源程序:void main() int a; int b; int c; a = 10; b = 5; c = a + b; printf(%d,c);分析结果:1 void , 162 main , 513 ( , 434 ) , 445 , 456 int , 17 a , 518 ; , 429 int , 110 b , 5111 ; , 4212 int , 113 c , 5114 ; , 4215 a , 5116 = , 2617 10 , 5218 ; , 4219 b , 5120 = , 2621 5 , 5222 ; , 4223 c , 5124 = , 2625 a , 5126 + , 2127 b , 5128 ; , 4229 printf , 5130 ( , 4331 , 4832 % , 2533 d , 5134 , 4835 , , 4136 c , 5137 ) , 4438 ; , 4239 , 46六、实验总结:(1) 通过本次实验,我们对编译原理中的词法分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度计算机四级题库检测试题打印含完整答案详解【网校专用】
- 个人歌唱活动策划与执行要点
- 物料能量衡算精要
- 酒店微笑问好服务培训纲要
- 2026届山东省曲阜市石门山镇中学九年级化学第一学期期中学业水平测试模拟试题含解析
- 2026届山东省德州市六校化学九上期末统考模拟试题含解析
- 2026届山东滨州阳信县九年级英语第一学期期末教学质量检测模拟试题含解析
- 2026届河南省驻马店九上化学期中预测试题含解析
- 河南省南阳市宛城区等2地2025-2026学年高二上学期开学英语试题(含答案)
- 2025年腔镜技能大赛试题及答案
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 第一课 踏上强国之路 公开课一等奖创新教案 统编版道德与法治九年级上册
- 中学知识竞赛试题及答案
- 2025年中级注册安全工程师《金属非金属矿山安全实务》考试真题及答案
- 2025年职业卫生标准试题及答案
- 2025部编版八年级历史上册 第二单元 早期现代化的初步探索和民族危机加剧(大单元教学设计)
- 药械知识培训计划课件
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 2025年气瓶检验员闭卷考试题库及答案
- 2025-2026学年人教版(2024)初中数学七年级上册教学计划及进度表
- 医院环境感染监测制度
评论
0/150
提交评论