网站大量收购独家精品文档,联系QQ:2885784924

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

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

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
词法分析器实验报告 班级:1203105 学号:1120310528 姓名:陈向军 一.实验目的: 编译原理是理论与实践并重的课程。在本次实验中,通过自己编写一个小型的词法分析器,进而在训练编程能力的同时,加深对编译过程中词法分析部分的理解。 二.实验内容 1.设计原理 词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号 理论基础:有限自动机、正规文法 词法分析器:执行词法分析的程序 词法分析器的功能和输出形式 功能:输入源程序,输出单词符号(token)。即:把构成源程序的字符串转换成“等价的”单词(记号)序列 符号程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符 输出的单词符号的表示形式: 采用2元组形式,种别,属性值 流程图: 标识符开始 大、小写字母 大、小写字母,_ 标识符 关键字 关键字 数字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 }, {-,17,MINUS}, {*,18,MULTI}, {/,19,RDIV}, {=,20,ASSIGN}, {,21,LT}, {,22,GT}, {=,23,LE}, {=,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) 常量: 字符串: 注释: 程序部分设计 用字符串数组表示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 == . || ch == e) isfloat = true; int k; for (k = 1; k = 6; k++) { char tmpstr[] = digitDFA[s].toCharArray(); if (tmpstr[k] != # 1 == in_digitDFA(ch, tmpstr[k])) { token += ch; s = k; break; } } if (k 6) break; i++;if(i=strLine.length) break;

文档评论(0)

姚启明 + 关注
实名认证
内容提供者

80后

1亿VIP精品文档

相关文档