编译原理实验整体(2)词法分析器实验报告

编译原理实验整体(2)词法分析器实验报告

ID:41562980

大小:123.11 KB

页数:8页

时间:2019-08-27

编译原理实验整体(2)词法分析器实验报告_第1页
编译原理实验整体(2)词法分析器实验报告_第2页
编译原理实验整体(2)词法分析器实验报告_第3页
编译原理实验整体(2)词法分析器实验报告_第4页
编译原理实验整体(2)词法分析器实验报告_第5页
资源描述:

《编译原理实验整体(2)词法分析器实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、词法分析器实验报告班级:1203105学号:1120310528姓名:陈向军一.实验冃的:编译原理是理论与实践并重的课程。在本次实验中,通过自己编写一个小型的词法分析器,进而在训练编程能力的同时,加深对编译过程中词法分析部分的理解。二.实验内容1.设计原理词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号理论基础:有限自动机、正规文法词法分析器:执行词法分析的程序2.词法分析器的功能和输出形式功能:输入源程序,输出单词符号(token)o即:把构成源程序的字符串转换成“等价的”单词

2、(记号)序列符号程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符3.输出的单词符号的表示形式:采用2元组形式,〈种别,属性值〉1.流程图:一.关键字:{,,breakl/,BREAK,'},{•'continue"J2/,C0NTINUEM},{“else",3,“ELSE”},{“float”,4,“FLOAT”},{“for”,5,”FOR“},{,,int,7/,INT,,}>{,,return,S/'RETURN1'},{"void9/,V0ID,'}J{,,wh

3、ile,,J10/,WHILE,,}?{“printf”,41,“OUTPUT”},{"scanf42/,INPUT,'}>{"main"^43,"MAIN"},{”function”,44,"function"}{,,+,,>16/,PLUSn},{”・”,17,“MINUS”},{”*",18「MULT:[”},{”/”J9「RDIV”},{”=”,20,“ASSIGN”},{”>“,22,”GT”},{”<=“,23,“LE”},{“>=”,24J'GE“},{”!=”,25,”NE”},26

4、,”LR_BRAC”},{“)”,27,”RR_BRAC”},{”,”,28,”COMMA”},{”;”,29,”SEMIC”},{“[”,30「LS_BRAC••},RS_BRAC”},32「LB_BRAC,{"},,J33/,RB_BRAC,,}J{”%”_,34「REMAINDER”},{”&&”,35,“AND”},{n

5、

6、,,J36/,OR,,}J{”!“,37,”NOT”},{”++”,38「INC”},{”==“,39,”EQ“},{”&“,40,”ADDR”}一.常量,字符串,注释的状

7、态转移图(DFA)常量:(浮点数,一)(浮点数,字符串:考虑到转义符的问题注释:\二.程序部分设计用字符串数组表示DFA:常量:publicstaticStringdigitDFA[]={〃#〃,〃###(!###〃,〃#####-d〃,〃######d〃,};字符串:publicstaticStringstConDFA[]={“#\d#“,”##a#“,”#\d“”,”####“};注释:publicstaticStringnoteDFA[]={“#“,“##*##”,"##c*#H,“##

8、//”,”#####“};常量的DFA处理:ints=1;Booleanisfloat=false;while(ch!=''&&(isDigit(ch)IIch==7IIch=OIIch==T){isfloat=true;intk;for(k=1;k<=6;k++){chartmpstr[]=digitDFA[s].toCharAn^ayO;if(tmpstrfk]!='#'&&1==in_digitDFA(ch,tmpstr[k]))token+=ch;s=k;break;}}if(k>6)br

9、eak;i++;if(i>=strLineJength)break;ch=strLine[i];字符串DFA的处理:while(s!=3){i++;if(i>=strLine.length-1){haveMistake=true;break;ch=strLine[i];if(ch==、0'){haveMistake=true;break;}for(intk=0;k<4;k++){chartmpstrLJ=stConDFA[sJ.toCharArray();if(in_stConDFA(ch,tmpst

10、r[kj)){token1+=ch;if(k==2&&s==1){讦(isEsSt(ch))//是转义字符token=token+AX1+ch;elsetoken+=ch;}elseif(k!=3&&k!=1)token+=ch;s=k;break;注释DFA的处了讦(ch=={token+=ch;//ch==ints=2;while(s!=4){i++;if(i>=strLine.length)break;ch=strLine[i];//注意判断溢出!

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

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

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