【精品】词法分析器

【精品】词法分析器

ID:43045769

大小:258.21 KB

页数:7页

时间:2019-09-24

【精品】词法分析器_第1页
【精品】词法分析器_第2页
【精品】词法分析器_第3页
【精品】词法分析器_第4页
【精品】词法分析器_第5页
资源描述:

《【精品】词法分析器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理实验报告院(系):计算机工程学院专业:计算机科学与技术专业学生姓名:谭家艳一班级:题目:学号:200507060词法分析器起迄日期:…5月24—6月2日设计地点:2教310室指导教师:巩玉玺完成日期:2008年6月1日c・1词法分析器c.1.1实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。C.1・2实验要求C.1.2.1待分析的简单语言的词法(1)关键字:benginifthenwhiledoend所有的关键字都是小写。(2)运算符和界符::=+-*/<<=<>>>==;()#(3)其他单词是标志符

2、(ID)和整形常数(NUM),通过以下止规式定义:ID=letter(letterldigit)*NUM=digitdigit*(4)空格由空口、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。C.1.2.2各种单词符号对应的种别码单词符号种别码单词符号种别码begin1■•17if218then3<20while4<>21do5<=22end6>23Letter(letterldigit)10>=24digitdigit*11—25+13•26-14(27*15)28/16#0C

3、.1.2.3词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其屮:syn为单词种别码;token为存放的单词口身字符串;sum为整形常数。例如:对源程序beginx:=9;ifx>0thenx:=2*x+l/3;end#的源文件,经词法分析后输出如下序列:(1,begin)(1(),'x')(1&:=)(11,9)(26,;)(2,if)...功能测试:(1)输入字符串beginx:=9;ifx>0thenx:=2*x+l/3;end#其结果如下图所示:F:Win"TCp

4、rojectsoname.exe口Xpleaseintputstring:beginx:=9;ifx>0thenx:=2*x+l/3;endttKl,begin><10,x><18,:=><11.9><26,><10,x><23,»<10,x><18,:=><11,2X15.*><10,x><13,*><11,1X16,/Xll,3X26,;><6,end><0,#>.曲x

5、(1)输入字符串ifx>2;y=3;end#H:结果如下图所示:国

6、F:Win~TCprojectsoname.exe

7、pleaseintputstring:ifx>2;y=3;endK2,i£><10,xX23.»<26.;><10,y><25.=><11.3><26,;><6,endX0,tt>(2)输入字符串where#其输出结呆如下图所示:c:F:Win-TCprojQctsonajDG.exe-口x

8、pleaseintputstring:where#<10,whereX0,tt>(4)输入字符串1234#英结果显示如下:C.1.3词法分析程序的基本思想算法的基木任务是从字符串表示的源程序屮识别出具有独立意义的单词符

9、号,其基木思想示根据扫描到单词符号的笫一字符的种类,拼出和应的单词符号。1.主程序示意图主程序示意图如图C。1所示。其屮初值包括如下两个方面:(I)关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格屮(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:char*rwtab[6]{“begin'',”if',''then",''while'',"do'',''end"};图Cl词法分析主程序示意图(2)程序中需要用到的

10、主要变虽为syn,token和sum。2.扫描子程序的算法思想首先设置3个变量:a.token用來存放构成单词符号的字符串:b.sum用來存放整形单词;c.syn用来存放单词符号的种别码。扫描子程序主要部分流程如图C.2所示。其它符号错扌图C.2词法分析程序流程C.1.4词法分析程序源代码#includc#includecharprog[80],token[6];charch;intsyn,p,m,n,sum;char*rwtab[6]={"begin","if"then","while",

11、"do","end"};main(){p=o;printf("plcascintputstring:");do{ch=getchar();prog[p++]=ch;}whilc(ch!=p=0;do{scaner();switch(syn)case11:pr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。