编译原理词法分析器实验报告(共6页).doc

上传人:飞****2 文档编号:6776633 上传时间:2022-02-10 格式:DOC 页数:6 大小:605.50KB
返回 下载 相关 举报
编译原理词法分析器实验报告(共6页).doc_第1页
第1页 / 共6页
编译原理词法分析器实验报告(共6页).doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《编译原理词法分析器实验报告(共6页).doc》由会员分享,可在线阅读,更多相关《编译原理词法分析器实验报告(共6页).doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上编 译 原 理实验报告 词法分析器 院系: 班级: 姓名: 学号:词法分析器实验报告一、实验目的:设计一个词法分析程序,理解词法分析器实现的原理,掌握程序设计语言中的各类单词的词法分析方法,加深对词法分析原理的理解。二、实验原理:词法分析是从左向右扫描每行源程序的符号,拼成单词,换成统一的二元式 (单词种别码,单词符号的属性值)表示。对给定的程序通过词法分析器识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示,本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示)三、实验说明:(1)关键字:begin,end,if,then,else,whi

2、le,write,read,do, call,const,char,until,procedure,repeat(2)运算符:+,-,*,/,=(3)界符:,;,.,(,),:(4)其他标记 如字符串,表示以字母开头的标识符(5)空格、回车、换行符跳过(6)运行结果在屏幕上以如下格式显示:1 $无符号整数begin $关键字 if $关键字 + $运算符 ; $界符 a $普通标识符 /“$“为美元符号,不是大写字母S 测试功能时,可以多次设置包含不同字符,关键字的待解析文件,但要保证输入文件和后缀名时准确无误,仔细察看运行结果,检测该分析器的分析结果是否正确四、源代码:#include #i

3、ncludeusing namespace std;#define MAX 22 char ch = ;string key15=begin,end,if,then,else,while,write,read,do, call,const,char,until,procedure,repeat;int Iskey(string c) /关键字判断 int i; for(i=0;iMAX;i+) if(pare(c)=0) return 1; return 0;int IsLetter(char c) /判断是否为字母 if(c=a)|(c=A) return 1; else return 0;

4、int IsDigit(char c) /判断是否为数字 if(c=0&c=9) return 1; else return 0;void analyse(FILE *fpin) string arr=; while(ch=fgetc(fpin)!=EOF) arr=; if(ch= |ch=t|ch=n) else if(IsLetter(ch) while(IsLetter(ch)|IsDigit(ch) if(ch=A) ch=ch+32; arr=arr+ch; ch=fgetc(fpin); fseek(fpin,-1L,SEEK_CUR); if (Iskey(arr)coutar

5、rt$关键字endl; else coutarrt$普通标识符endl; else if(IsDigit(ch) while(IsDigit(ch)|ch=.&IsDigit(fgetc(fpin) arr=arr+ch; ch=fgetc(fpin); fseek(fpin,-1L,SEEK_CUR); coutarrt$无符号实数endl; else switch(ch) case+: case- : case* : case= : case/ :coutcht$运算符endl;break; case( : case) : case : case : case; : case. : cas

6、e, : case : case :coutcht$界符endl;break; case: :ch=fgetc(fpin); if(ch=) cout:=t$运算符endl; else cout=t$运算符 :ch=fgetc(fpin); if(ch=) cout=t$运算符)coutt$输入控制符endl; else coutt$运算符endl; fseek(fpin,-1L,SEEK_CUR); break; case :ch=fgetc(fpin); if(ch=)cout=t$运算符endl; else if(ch=)coutt$输出控制符) coutt$运算符endl; elsec

7、outt$运算符endl; fseek(fpin,-1L,SEEK_CUR); break; default : coutcht$无法识别字符endl; void main() char in_fn30; FILE * fpin; coutin_fn; if(fpin=fopen(in_fn,r)!=NULL) break; else cout文件路径错误!请输入源文件名(包括路径和后缀名):; coutn*分析如下*endl; analyse(fpin); fclose(fpin); coutendl; cout按任意键结束a;运行结果截图:输入:输出: 生成的单词表目标文件:专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com