编译原理实验整体词法分析器实验报告.doc

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

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

1、词法分析器实验报告班级:学号:姓名:陈向军一实验目的:编译原理是理论与实践并重的课程。在本次实验中,通过自己编写一个小型的词法分析器,进而在训练编程能力的同时,加深对编译过程中词法分析部分的理解。二实验内容1.设计原理词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号理论基础:有限自动机、正规文法词法分析器:执行词法分析的程序2. 词法分析器的功能和输出形式功能:输入源程序,输出单词符号(token)。即:把构成源程序的字符串转换成“等价的”单词(记号)序列符号程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符3. 输出的单词符号的表示形式: 采用2元组

2、形式,4. 流程图:标识符开始 大、小写字母 大、小写字母,_关键字数字0-9 0-9,. 字符或字符串“ 遍历到下一个”对应各自种别码其他各种符号三 关键字:break,1,BREAK , continue,2,CONTINUE, else,3,ELSE, float,4,FLOAT, for,5,FOR, if,6,IF, int,7,INT, return,8,RETURN, void,9,VOID, while,10,WHILE, printf,41,OUTPUT, scanf,42,INPUT,main,43,MAIN, function,44,function+,16,PLUS ,

3、 -,17,MINUS, *,18,MULTI, /,19,RDIV, =,20,ASSIGN, ,22,GT, =,24,GE, !=,25,NE, (,26,LR_BRAC, ),27,RR_BRAC, ,28,COMMA, ;,29,SEMIC, ,30,LS_BRAC, ,31,RS_BRAC, ,32,LB_BRAC, ,33,RB_BRAC, %,34,REMAINDER, &,35,AND, |,36,OR, !,37,NOT, +,38,INC, =,39,EQ, &,40,ADDR四 常量,字符串,注释的状态转移图(DFA) 常量: 字符串: 注释: 五 程序部分设计用字符串

4、数组表示DFA:常量:public static String digitDFA = #, #d.#e#, #d#, #de#, #-d, #d, #d ; 字符串:public static String stConDFA = #d#, #a#, #d, # ;注释:public static String noteDFA = #, #*#, #c*#, #c*/, # ;常量的DFA处理:int s = 1;Boolean isfloat = false;while (ch != 0& (isDigit(ch) | ch = . | ch = e | ch = -) if (ch = .

5、| ch = e)isfloat = true;int k;for (k = 1; k 6)break;i+;if(i=strLine.length) break;ch = strLinei;字符串DFA的处理:while (s != 3 ) i+;if(i=strLine.length-1) haveMistake = true;break;ch = strLinei;if (ch = 0) haveMistake = true;break;for (int k = 0; k =strLine.length) break;ch = strLinei; / 注意判断溢出!if (ch = 0)

6、 haveMistake = true;break;for (int k = 2; k = 4; k+) char tmpstr = noteDFAs.toCharArray();if (1 = in_noteDFA(ch, tmpstrk,s) token += ch;s = k;break;else if(ch = /) /这里就不用状态转移了.int index = line.lastIndexOf(/);String tmpstr=line.substring(index);int tmpint = tmpstr.length();for(int k=0;ktmpint;k+) i+;token = tmpstr;

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档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