2023年词法分析器实验报告及源代码.docx
《2023年词法分析器实验报告及源代码.docx》由会员分享,可在线阅读,更多相关《2023年词法分析器实验报告及源代码.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数学与软件科学学院实验报告学期:ia至ia_第一2学期月17日课程名称:编译原理实验编号:。 实验项目:词法分析器姓名:张世镯学号:2023 年 3专业:2 023级“班指导教师一王开端实验成绩:一、目的学习编译原理,词法分析是编译的第一个阶段,其任务是从左至右挨个字符地对源程序进行 扫描,产生个个单词符号,把字符串形式的源程序改导致单词符号串形式的中间程序。执行 词法分析的程序称为词法分析程序,也称为词法分析器或扫描器。词法分析器的功能是输入 源程序,输出单词符号做一个关于C的词法分析器,C +实现二、任务及规定I.词法分析器 产生下述C的单词序列这个C的所有的单词符号,以及它们的种别编码和
2、内部值如下表:单词符号及种别编码单词符号种别编码单词符号种别编码main128i n t229char3(30if4)31el s e532for6:33w h ile734标记符I D1035整型常数NUM20=37if(stri= a r r t)for (t=0;tn )r e turn i ;)/*判断i当前所指的字符是否为一个分界 符,是的话返回真,反之假*/bo o 1 I sBo u n d ary( str i n g str, inti)(int t;cha r arr 7 = r eturn true;ret urn false;/*判断i当前所指的字符是否为一个运算 符,
3、是的话返回真,反之假*/b oo 1 I sOpera t i on (st r i ng s t r , i n t i)(i nt t;c h ar a r r / J );for (t=0: t 7 ; t+ + )i f(str i =a r r t)r e tu r n t rue :re t u rn f a 1 sc;)/*此函数将一个个字符串数组输出到一个文 献中* /v o id 0 u t Fil e (v e ctor p air v)(cout 请输入目的文献名(涉及途径 和后缀名):”;ofst ream o u t file(file_ n ame. c_str (
4、), ios:: out);i f (! outfi le)(c err V”无法打开文献! V V file_name. c _str () * ! !*endl;ex i t (-1);coutendl;i n t i ;f o r (i= 0 ; i v . s i z e () ; i+)out f i le *vi .fir s t,* v i.second*endl;o u tfi le nn* * * * 大* * *n*;ou t fi 1 e . clo s eO ;ret urn;)/*此函数接受一个字符串数组,对它进行词 法分析,返回一个pa i r型数组*/v ec t
5、 o r p a ir analyst (v e ctor vec)v e c t orpa i r temp;i n t i ;fo r (i=0; i *11veci=* I | v e c i =!)&veci + l=)string jk = vec i :jk. app e n d (vec +i, 0.1);pair p p(4 , j k ):t e mp. pu s h _back(pp);con t inue;if ( veci = + &ve ci + l = + ) I | (ve c &v e c i+ 1 =-*)(string j k =v e ci;jk. app
6、 end( vec+i,0. 1);pai r PP(4, j k);p a i r ptem p . push_ b ac k (pp): c o nt i nue;)i f (I s Bou n da r y ( v eci. 0)(P a ir pp (5, ve c i );temp, pus h back(pp): els c if(IsO p e r a tion(ve ci. 0)(P a ir pp(4, ve c i );temp.p u sh_ba c k(pp);)else if (ve c i 0= 0)(P a i rPP(3, v e c i);temp, pu s
7、 h _ba c k (pp);P (2, v e c i );temp, p u sh_b a c k ( p P);)else if (vec i 0= 0 ,)(pai r p p (3, veci);temp, pus h b ack ( p p );else if (I s Key(v e c i)(p air pp (1,v eci);t emp. push back (pp):else(pa i r p p (2, veci):t emp. push_back ( p p);elser et u r n temp:ve c t or ppp (p, p+1 6 ); i n t
8、u:/*此函数判断传递的参数是否为关健字,是的f o r(u=O: up p p. sizeO ; u +4-) 话,返回真,反之返回假*/i f (!s t r. c o mpare (pp p u) bool I s Key (str i ng st r )r e turn true;(retu r n false;stri n g p 1 6 = (*ch a r , d o u b le*, *)i n t, long, d o u b 1 c, float , f/*f inis hod * /o r , while , do , break , c on t i nue , s w
9、i tc n , s n ort , case , re t ur n-i f ;+22 =382339*241 =40/25&4 1(26&42)27II43关键字mai n in t char i f els e f o r w h i 1c都是小写并都是保存字。算符和界 符: + */ &= !=& | | , : ; ()ID和NUM的正规定义式为:IDf 1 e t t e r (1 e t ter | d i d i t ) *NUM-* d i gi t digi t *letter-* a | z | A I Zdigi t_* 0 I I 9假如关键字、标记符和常数之间没有拟
10、定的算符或界符作间隔,则至少用一个空格作间 隔。空格由空白、制表符和换行符组成。三、大约设计1 .设计原理词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。理论基础:有限自动机、正规文法、正规式词法分析器乂称扫描器:执行词法分析的程序2 .词法分析器的功能和输出形式功能:输入源程序、输出单词符号程序语言的单词符号一般分为以下五种:关键字、标记符、常数、运算符、界符。3 .输出的单词符号的表达形式:(单词种别,单词符号的属性值)单词种别用整数编码,关键字一字一种,标记符统归 为一种,常数一种,各种符号各一种。4.状态转换图实现三、程序设计1.词法分析器的流程图输入源文 件路
11、径.络径是否音公、效/打开源文件初始化文件指针识别指针内容文件结束?是一(结束:强豕H白戢换是字母吗跳过该字符指向下一字符, 输出ord为 普通标示符否一X兔数字后一否+ 是界符叫将字符加入字符数-rd 口将字符加入字符数Oord指向下一字符将word与关键字表key进行匹配否CE配?)i输出word为关键字将字符加 入字符数 组必rd 口指向下一字符识别指针内容是数字吗: 否输出word 为常数2.总体模块设计/*用来存储目的文献名*/string f ile name;符字组口 字入数M 将加符必是输出Word内容为不可识别/*提取文本文献中的信息。*/st r i n g Ge t Te
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 词法 分析器 实验 报告 源代码
限制150内