2023年词法分析器实验报告.docx
《2023年词法分析器实验报告.docx》由会员分享,可在线阅读,更多相关《2023年词法分析器实验报告.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、词法分析器实验报告词法分析器设计一、实验目的:对C语言的一个子集设计并实现一个简朴的词法分析器,掌握运用状 态转换图设计词法分析器的基本方法。运用该词法分析器完毕对源程 序字符串的词法分析。输出形式是源程序的单词符号二元式的代码, 并保存到文献中。二、实验内容:1 .设计原理词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词 符号。理论基础:有限自动机、正规文法、正规式词法分析器(Lexical A n a 1 y zer)又称扫描器(S c anner):执行词法 分析的程序2 .词法分析器的功能和输出形式功能:输入源程序、输出单词符号程序语言的单词符号一般分为以下五种:关键
2、字、标记符、常数、运算符, 界符3 .输出的单词符号的表达形式:单词种别用整数编码,关键字一字一种,标记符统归为一种,常数一种,各种w h i I e(true);o vect o rpa i r mid_ r es u It;o mid_resul t = a n alyst (array);Ou t Fi I e (m i d_ r esult);co u * * * * * *n:co u程序已完毕词法分析,分析结果已经存储在文献” fi 1 e_namV”中! ! *n”;c ou 丈*火 夫 * * * * * * n ;ocoutcc”感谢使用,谢谢再见! VVendl;s y s
3、 t em (n p a u sen);return 0; o/*提取文本文献中的信息大/st r ing G e tTe x t ()s t r i ng f i I e namel;coutf il e _namel;if s t r e am inf i le (f ile_ name 1 . c _ s tr () , i os :in);i f (! in f i le)0(c e 无法丁开文而” f ile_ n a mel. c _ s tr () ! ! ! endl;oexit(- 1 );o )c ou t endl;o c h ar f 10O0;inf i le. ge
4、 t I i ne ( f , 10 0 0 , EO F );i nfi I e.close ();oprint f (f):o c out e nd I ;return f;。/*获得一个单词符号,从位置i开始查找。0 / /并且有一个引用参数j,用来返回这个单词最后一个字符在原字符串的位 置。*/o s tr i n g Ge t Wo r d (st r ing st r , in t i,int& j )0 (os t ring no_use () , ; n+=* / - );oj= s t r . fin d _f irst_o f (n o _usez i );i f (j =
5、 = -D r eturn n;i f ( i ! =j)j-;o return s tr. substr (iz j- i +1): o/ *这个函数用来除去字符串中连续的空格和换行/第一个参数为目的字符串,第二个参数为开始位置/返回值为连续的空格和换行后的第一个有效字符在字符串的位置* /i nt D e leteNull (st r ing strz in t i) (o f o r (; ; i + + )if (s t r i ! =* &str i! = * n )retur n i:0)0/*判断i当前所指的字符是否为一个分界符,是的话返回真,反之假*/ obool I sBou
6、 n dar y ( s tring str, i nt i)0 int t;0 cha r ar r 7 = 1, 1, ; 10 for (t=0; t &,;for ( t =0; t 8; t+)i f (str i=a r rt)r etu r n true;ret urn fals e ;/*此函数将一个个字符串数组输出到一个文献中*/ovo i d OutFile (vectorpair v)c outVV”请输入目的文献名(涉及途径和后缀名):”;cin file name;of s t r e am o utf il e ( f i le_ name, c_str () ,
7、i os: :out);i f (! o utfile)(ocrr 无法开文献! *f il e _ n am e , c_ s tr () n ! end I ;oexit(- 1 );)cout e ndl;o in t i;o f or(i=0;iv.si z e () ; i+)o o ooutf i I e v i. f i rs t , end I ;o oco u t v i . f irst , e n d I ;outf i 1_” nn* o outf i le. cl o s e ();r e tu r n ;0 /火此函数判断传递的参数是否为关键字,是的话,返回其,反之
8、返回假文/obo o I I s K e y (st r i ng str)(string p 7 =nma in, int , char, if, ne I s e , for*, while ;0 ovect o r ppp (p,p+7);0 oi n t u;0 f or (u = 0;uppp. si z e () ;u+4-)0 0 if ( ! s t r. c o mpare (ppp u)ore t u r n true;0 r eturn f a Ise:/ *此函数接受一个字符串数组,对它进行词法分析,返回一个pa i r型数组大 /o v ec t orpai r a
9、n al y st ( v ec t or v e c)(o vectorpair temp;o int i;f or (i= 0 ; i n&ve c i + 1 = = =)0 (o o ostri n g j k=vec i;o o j k.append (vec + i , 0,1);o opa i r pp(37, j k );o o o t emp .push_back ( p p);o ocontinu e ;oif (vec i=n&veci + l=)0 0(o o os t r i ng j k = ve c i ;o o ojk. a ppe n d (vec + + i
10、 , 0,1);o o p a ir pp (38z j k );o o o temp. pus h _back (pp);o o c o ntinue;o o oi f (v e c i = = n = n& v ec i + 1 = n )0(o o stri ng j k = vec i:jk. append ( v e c + + i , 0,1);p a i r p p (39 , j k );o o o t em p . pus h _b a c k ( p p );o o co n tin ue;o )oif ( v e c i = ! n& vec i + 1 = =n)ost
11、 r ing j k=vec i;o o o j k.append (vec + + i , 0, 1 );o o pair i nt,stringp p ( 4 0, j k );o o otem p .pus h _bac k (pp);c o nt i nue;0 0 )o o if (ve c i =n& &ve c i + 1 =& )(o o string j k =vec i;o o j k . app e nd (vec + + i, 0,1):o o p air p p ( 4 2, jk);o o o temp , p ush_ b ack ( p p);o continu
12、e;o o i f ( v ec i =* I *&v e c i+ 1 = I ,)o o st r i ng j k=ve c i ;符号各一种。4.词法分析器的结构5.状态转换图实现j k .append(vec+i ,0,1);pair p p (43, j k );ot e m p . p u sh_b a ck (pp);ocont i n ue;i f (IsBound a r y (vec i , 0)0 oif ( V eci= )0(opai r p p 1 (32z vec i);otemp.p u sh_back ( p pl);oi f (vec i = = H)(o
13、 o opair pp2 (34, vec i );tem p . push_b a ck (pp2 );o oi f (vec i = )0 0 o pai r p p 3 (30, vec i ):t e mp.push_ba c k (pp3);0 0 )o oif (ve c i =)0 0pair pp4 (31, ve c i);ot e m p . p us h _bac k (pp4);0 0 )o oif ( v e c i =* ()o(o pai r pp5 (26, ve c i );otemp. push_bac k (p p 5);0o o if (v e c i
14、=)opai r p p6 (27z vec i);temp .pus h _b a c k (pp6);ooif (v e c i =:”)o o oopair pp7 (33, v e c i);o temp.push_b a ck(pp7);00 )e I se i f (IsOp e ration (vec i , 0 )o oif(vec i = + )0 0 000o o p a i r p p 8 (22, vec i );o o temp. push_back (pp8);if (vec i=一)o o opair pp9 (23,veci);t e mp. p ush_bac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 词法 分析器 实验 报告
限制150内