类C语言词法分析器设计文档.doc_第1页
类C语言词法分析器设计文档.doc_第2页
类C语言词法分析器设计文档.doc_第3页
类C语言词法分析器设计文档.doc_第4页
类C语言词法分析器设计文档.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论