词法分析程序实验报告.docx

词法分析程序实验报告.docx

ID:57221348

大小:23.82 KB

页数:9页

时间:2020-08-06

词法分析程序实验报告.docx_第1页
词法分析程序实验报告.docx_第2页
词法分析程序实验报告.docx_第3页
词法分析程序实验报告.docx_第4页
词法分析程序实验报告.docx_第5页
资源描述:

《词法分析程序实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、词法分析程序实验报告一、实验内容设计并实现C语言的词法分析程序,要求如下:1)可以识别C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词。2)可以统计并读取源程序中的注释。3)可以统计源程序中的语句行数、单词个数和字符个数,并输出统计结果。其中回车换行不计入字符个数,空格不计算为单词。4)检查源程序中存在的错误,并可以报告错误所在的行列位置。5)发现源程序中存在错误后,进行适当的恢复,使词法分析可以继续进行,通过一次词法分析处理,可以检查并报告源程序中存在的所有错误。二、程序特色1)全部实现上

2、述实验要求2)标识符规则符合标准C语言要求,允许以下划线开头,并包含下划线3)可识别C语言允许的所有无符号实数形式,包括整数和浮点数。其中浮点数可包含指数e或E,并遵循C语言允许省略整数部分(如.5表示0.5)或省略小数部分(如2.E2表示2.0*102)4)可识别几乎C语言所有标点符号和运算符,共计50个5)可正确识别字符和字符串中的转义字符,如‘’和“abcd”均可识别为单词不完整,并指出错误的行和列6)可识别C语言的两种注释,//和/**/,其中/**/按照C语言要求允许跨越多行一、语言说明1)

3、标识符:以字母或下划线开头,后跟字母、数字或下划线组成的字符串2)关键字:C语言所有32个关键字3)无符号数:C语言所允许的所有十进制实数形式,包括整数和浮点数。其中浮点数包括C语言允许的省略整数部分(如.5表示0.5)和省略小数部分(如2.E2表示2.0*102)4)算数运算符:+、++、-、--、*、/、%5)赋值运算符:=、+=、-=、*=、/=、%=、&=、

4、=、^=6)关系运算符:<、<=、==、>=、>、!=7)逻辑运算符:&&、

5、

6、、!8)位运算符:&、

7、、^、~、<<、>>9)其他符号:-

8、>、.、#、{、}、[、]、(、)、?、:、,、;、10)字符:以单引号开始,以单引号结束,不能跨越多行11)字符串:以双引号开始,以双引号结束,不能跨越多行12)注释:以//开始到行末,或者以/*开始,以*/结束,可以跨越多行二、运行环境CodeBlocks-13.12withGCCcompilerfromTDM-GCC(4.7.1,32bit)三、输入形式命令行界面,指定C语言源文件作为输入四、输出形式1)所有标识符写入指定的符号表文件2)分离出一个单词后,对识别出的记号以二元式的形式输出到用户指定

9、文件,其形式为<记号,属性>记号属性记号属性IDkeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeykeynumarith-oparith-oparith-oparith-oparith-oparith-oparith-op符号表序号autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharextern

10、returnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhile实数值+++---*/%asgn-opasgn-opasgn-opasgn-opasgn-opasgn-opasgn-opasgn-opasgn-oprel-oprel-oprel-oprel-oprel-oprel-oplog-oplog-oplog-opbit-opbit-opbit-opbit-opbit-opb

11、it-opothersothersothersothersothersothersothersothersothersothersothersothersothersotherscharstringcomments=+=-=*=/=%=&=

12、=^=<<===>=>!=&&

13、

14、!&

15、^~<<>>->.#{}[]()?:,;字符字面量字符串字面量-一、主要数据结构vectortable;//字符串向量,临时存储符号表setkeywords;//字符串集合,存放所有关键字str

16、ingbuffer;//输入缓冲区,存放文件的一行stringtoken;//字符串,存放当前单词string::iteratorforward;//字符串buffer的迭代器,向前扫描字符二、核心算法1)识别无符号数的有限状态自动机s0s23starts1s4s5s6Errordigite/Edigitdigitothers..digitothersdigitdigitdigit+/-/*由上图构造相应的无符号数识别子程序*

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

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

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