合肥工业大学编译原理实验

合肥工业大学编译原理实验

ID:21798736

大小:13.75 MB

页数:29页

时间:2018-10-24

合肥工业大学编译原理实验_第1页
合肥工业大学编译原理实验_第2页
合肥工业大学编译原理实验_第3页
合肥工业大学编译原理实验_第4页
合肥工业大学编译原理实验_第5页
资源描述:

《合肥工业大学编译原理实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、宣城校区实验报告课程名称编译原理专业班级计算机0001班学生姓名及学号赵保飞2015216768指导教师李芒宏实验地点计算机中心楼第四机房2017~2018学年第一学期《编译原理》课程实验报告实验名称词法分析设计姓名赵保飞系院专业计算机科学与技术班级计算机01班学号2015216768实验日期2017.10.18指导教师李芒宏成绩一、实验目的和要求通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。二、实验原理(1)实验数据结构说明K[]String数组-关

2、键字表;s[]char数组—分界符;m[]char数组—算术运算符;r[]String数组—关系运算符;ArrayList型String数组ci—常数;ArrayList型String数组id—标识符(2)实验算法描述(3)算法流程图三、源程序代码和测试结果packagelexicalAnalysis;importjava.util.*;importjava.io.*;publicclasslexicalAnalysis{staticStringk[]={"for","main","if","while","void","public","static","printf

3、","scanf","asm","do","return","typedef","auto","double","break","short","using","default","long"};//关键字staticchars[]={',',';','(',')','[',']','{','}'};//2分界符staticcharm[]={'+','-','*','/'};//3算术运算符staticStringr[]={"<","<=","=",">",">=","<>"};//4关系运算符ArrayListci=newArrayList

4、g>();//5常数ArrayListid=newArrayList();//6标识符StringtempToken="";//临时存放组成一个“词”单位串intpint,row=1,line=1;//当前指针指示,行数,列数charch;//存放最新读入源程序字符Stringinstring;//存放输入de源程序代码publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstublexicalAnalysisone=newlexicalAn

5、alysis();System.out.println("单词"+"t二元序列"+"t类型"+"t位置(行,列)");one.readtext();}booleanisdigit(charc){//判断所读字符是否为数字,是则返回ture,否则返回falseif(c>=48&&c<=57)returntrue;elsereturnfalse;}booleanisletter(charc){//判断所读字符是否为字母,是则返回true,否则返回falseif((c>64&&c<91)

6、

7、(c>96&&c<123))returntrue;elsereturnfalse

8、;}booleanisline(charc){//判断字符c是否是下划线"_"if(c=='_')returntrue;elsereturnfalse;}booleanremove(){//用于在判断关系运算符时,判断是否是要再读一个字符charb=instring.charAt(pint+1);//string类charAt()方法用于返回指定索引处的字符。索引范围为从0到length()-1if(b=='='

9、

10、b=='>')//当其后的字符是=或>时,要再读一个字符。否则不要再读。returntrue;elsereturnfalse;}voidclearBlank

11、(){//检查空白直到读入字符非空白while(ch==''){getchar();}}voidgetchar(){pint++;if(pint<=instring.length()-1){ch=instring.charAt(pint);if(ch==''){change_row_line();getchar();}}elsech='';//instring数据读取完,需重新读入}voidretract(){//读入前一个字符pint--;ch=instring.charAt(pint);}voiddistinguishLeter(

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

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

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