编译原理词法分析课程设计

上传人:lisu****2020 文档编号:138026494 上传时间:2022-08-19 格式:DOC 页数:13 大小:168.50KB
返回 下载 相关 举报
编译原理词法分析课程设计_第1页
第1页 / 共13页
编译原理词法分析课程设计_第2页
第2页 / 共13页
编译原理词法分析课程设计_第3页
第3页 / 共13页
点击查看更多>>
资源描述
DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY课程名称:编译原理 词法分析系 别: 计算机科学系年级专业: 2013级 计算机科学与技术学 号: 1350303059 姓名: 张清鉴任课教师: 朱均燕成绩:2015年12月31日目录前言1一、课程设计的目的1二、 课程设计的要求11.待分析的简单语言的词法12.各种单词符号对应的种别码23. 此法分析程序功能3三、课程设计报告内容331课程设计的环境332系统技术分析:333 系统流程图及各模块434源程序代码清单435程序调试情况9四、总结10参考文献11前言词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。词法分析是编译程序的第一个阶段且是必要阶段;词法分析的核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理;实现词法分析程序的常用途径:自动生成,手工生成.词法分析一、课程设计的目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。二、 课程设计的要求1.待分析的简单语言的词法(1)关键字:begin if then while do end 所有的关键字都是小写。(2) 运算符和界符:= + - * / :()(3)其他单词是标识符()和整型常数(),通过以下正规式定义:(4)空格由空白制表符和换行符组成。空格一般用来分隔运算符 界符和关键字,词法分析阶段通常被忽略。2.各种单词符号对应的种别码表各种单词符号对应的种别码单词符号种别码单词符号种别码begin1:17if2:=18then320while421do523letter(letter|digit)*10=24digit digit*11=25+13;26-14(27*15)28/16#03. 此法分析程序功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。例如:对源程序 beginx:=9:ifx9thenx:=2*x+1/3;end#的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)三、课程设计报告内容31课程设计的环境311 硬件环境:本系统适用于DOS环境下的计算机,内存1G、2G等现在较普遍的内存容量即可,并且配备有主机、显示屏、键盘和鼠标等硬件结构。312 软件环境: 本系统采用标准C语言,可在基于Windows操作系统的可视化集成开发环境的Visual C+ 6.0 使用。32系统技术分析:算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。主程序示意图如图3-1所示。其中初始包括以下两个方面: 图3-1 1) 关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别 出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char *rwtab6 = “begin”, “if”, “then”, “while”, “do”, “end”,;2) 程序中需要用到的主要变量为syn,token和sum。33 系统流程图及各模块 首先设置3个变量:token用来存放构成单词符号的字符串;sum用来整型单词;syn用来存放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。 图3-234源程序代码清单#include #include char prog80,token8,ch;int syn,p,m,n,sum;char *rwtab6=begin,if,then,while,do,end; scaner();main()p=0; printf(n please input a string(end with #):/n); do scanf(%c,&ch); progp+=ch; while(ch!=#); p=0; do scaner(); switch(syn) case 11:printf( %-10d%5d )n,sum,syn); break; case -1:printf(you have input a wrong stringn); getch(); exit(0); default: printf( %-10s%5d )n,token,syn); break; while(syn!=0); getch(); scaner() sum=0; for(m=0;m8;m+)tokenm+=NULL; ch=progp+; m=0; while(ch= )|(ch=n)ch=progp+; if(ch=a)|(ch=A) while(ch=a)|(ch=A)|(ch=0)&(ch=9) tokenm+=ch; ch=progp+; p-; syn=10; for(n=0;n=0)&(ch=0)&(ch=9) sum=sum*10+ch-0; ch=progp+; p-; syn=11; else switch(ch) case :tokenm+=ch; ch=progp+; if(ch=) syn=24; tokenm+=ch; else syn=23; p-; break; case +: tokenm+=ch; ch=progp+; if(ch=+) syn=17; tokenm+=ch; else syn=13; p-; break; case -:tokenm+=ch; ch=progp+; if(ch=-) syn=29; tokenm+=ch; else syn=14; p-; break; case !:ch=progp+; if(ch=) syn=21; tokenm+=ch; else syn=31; p-; break; case =:tokenm+=ch; ch=progp+; if(ch=) syn=25; tokenm+=ch; else syn=18; p-; break; case *: syn=15; tokenm+=ch; break; case /: syn=16; tokenm+=ch; break; case (: syn=27; tokenm+=ch; break; case ): syn=28; tokenm+=ch; break; case : syn=5; tokenm+=ch; break; case : syn=6; tokenm+=ch; break; case ;: syn=26; tokenm+=ch; break; case : syn=30; tokenm+=ch; break; case #: syn=0; tokenm+=ch; break; case :syn=17; tokenm+=ch; break; default: syn=-1; break; tokenm+=0; 35程序调试情况输入begin x:=9: if x0 then x:=2*x+1/3; end # 后经词法分析输出如下序列:(begin 1)(x 10)(:17)(= 18)(9 11)(;26)(if 2) 如图5-1所示:图5-1四总结 通过此次课程设计,使我更加扎实的掌握了有关词法方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!参考文献1刘铭,徐兰芳,骆婷.编译原理. 北京:电子工业出版社,2011. 32492吕映芝.编译原理.清华大学出版社,2013. 52653张素琴,吕映芝,等.编译原理.清华大学出版社,2005. 59724李赣生.编译原理.清华大学出版社,2009. 3661
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!