编译原理C语言词法分析器

上传人:鲁** 文档编号:490146768 上传时间:2023-11-08 格式:DOC 页数:35 大小:111.50KB
返回 下载 相关 举报
编译原理C语言词法分析器_第1页
第1页 / 共35页
编译原理C语言词法分析器_第2页
第2页 / 共35页
编译原理C语言词法分析器_第3页
第3页 / 共35页
编译原理C语言词法分析器_第4页
第4页 / 共35页
编译原理C语言词法分析器_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《编译原理C语言词法分析器》由会员分享,可在线阅读,更多相关《编译原理C语言词法分析器(35页珍藏版)》请在金锄头文库上搜索。

1、编译原理 语言词法分析器一、实验题目编制并调试C词法分析程序。a. txt源代码: mn() int sum=,i=1;/*Vaibe declrato*/ if (=1) t+; else i=it; 设计其词法分析程序,能辨认出所有的核心字、标记符、常数、运算符(涉及复合运算符,如+)、界符;能过滤掉源程序中的注释、空格、制表符、换行符;并且可以对某些词法规则的错误进行必要的解决,如:标记符只能由字母、数字和下划线构成,且第一种字符必须为字母或下划线。实验规定:要给出所分析语言的词法阐明,相应的状态转换图,单词的种别编码方案,词法分析程序的重要算法思想等。 二、实验目的 1、理解词法分析在

2、编译程序中的作用; 2、掌握词法分析程序的实现措施和技术; 3、加深对有穷自动机模型的理解。 三、重要函数vid load ( ) oichar_sarch (char *word)vo main ( ) vo itb_erch(char wod)vd san ( ) void c_seach(cha od)vid ina_sac(har *w) void c_serch(char *wrd)四、设计1.主函数 vod ma ( )绘制程序界面调用初始化函数:void load ( ) 实现文献的建立调用主扫描函数:void scan ( ) 实现文献的扫描分析完毕后指引顾客查看有关文献,直到

3、顾客输入退出命令函数结束. 初始化函数 voidlod ( )通过文献指针建立有关文献函数结束3 保存字及标记符判断函数 vid charearch(char*wr)接受数据与否为保存字否:查标记符表是:写入输出文献没找到:写入表文献找到:写入输出文献写入输出文献4 整数类型判断函数 oi ntasarc(ca *wrd)接受数据找到:写入输出文献写入输出文献查表没找到:写入整数常量表文献5 浮点类型判断函数 d intbseach(ha*word)没找到:写入整数常量表文献找到:写入输出文献查表接受数据写入输出文献6.字符串常量判断函数 voic_sach(ca wrd)7字符常量判断函数

4、vod search(chr*wor) 同4、5函数图.主扫描函数 voi scn ( )函数开始读入源文献中的一种单词判断宏定义忽视无效字符忽视调用保存字及标记符函数void char_search进行解决字符串字符常量调用字符常量判断函数void c_search进行解决调用字符串常量判断函数void cc_search进行解决字符串常量整数常量调用整数类型判断函数void inta_search进行解决调用浮点类型判断函数void intb_search进行解决浮点数常量注释写入注释文献查运算符、分隔符表并写入输出文献限制符五、核心代码#nclude #include #inclue s

5、tdlib.har ey0=,to,eak,ca,har,nst,coninue,default,do,doube,els,eu,extern,float,or,goto,if,int,ng,egister,retu,short,signe,szeo,atic,struc,sitch,tedef,_Comlex,_mgiy,unon,usgn,od,olati,hi;/保存字表*/chr ey1 ,(,),,,,;,;分隔符表*/har *key2= ,+,-,/,%,,=,=,=,!=,!,|,|,&,=,?:,-,+,-,.,-=,*=,/;/*运算符表*it x035,x10,xx23;

6、in em_key=,temp_40=0,tep_c41=0,tempc42=,_3=0;/* 初始化函数 */vodload()intm;for (mm=;mm=4;m+)x00;f (m=0;mm=;m+)xx=;for(mm=;mm=30;m+)xxmm=0;FILE*loadng;if (ldnfpen(key.txt,w))NUL)rtf(Ero!Cnt rea file: e0.tx);eturn;fco(floding);/*建立保存字表文献:ky0.tx/if (flading=fope(key1.txt,)=N)pntf(Error! an creae fe: key1.tt

7、);urn;/*建立分隔符表文献:y1.txt* (flodg=pn(y2xt,w))=ULL)printf(Errr! Can reat fie : key2.t);rtun;close(floadin);/*建立运算符表文献:key2txt*/f (foaig=oen(k3.tx,))=NU)rint(Errr! Cnt create fi : ke3.tx);retur;fcle (faing);*建立标记符表文献:ey3.xt*/if (floading=fopn(c40.tt,w)=UL)printf(Ero! Can ceae fil : c40.t);reur;fclos (fl

8、oadi);*建立整数类型常量表文献:c4.if (floading=open(41.xt,w)=L)printf(rror! Can craefie :c4.txt);retrn;fos(floan);/*建立浮点类型常量表文献:c41.x*if (floanfopn(c.txt,))ULL)pintf(Error! Cat creae fie : c42tx);eturn;fcose (floadig);/建立字符类型常量表文献:c2.tx/f (loading=open(43.xt,)=NUL)pint(Ero!antcree fie : c43.txt);ren;fclose (flo

9、din);/建立字符串类型常量表文献:c43.tt*/ if (flodingfp(definaton.tt,w)=NLL)printf(Eror! t create fle: dfai.xt);retun;fos (fladng);/建立注释文献:fnatn.ttif (fain=fopn(outptx,)=NUL)pnt(rror! Can create ie: uput.tx);et;fclose(fading);/*建立内部码文献:oupttxt/if ((fdngfopen(temp_key1,w))=NULL)rnt(Erro! Cat crte fie: tmpkey);rtur

10、n;clse (lading);/*建立保存字临时表文献:tempkey1*if ((flodig=fopen(temp_e3,w)=NULL)rn(Eror! ant creae fi : tep_key3);rn;lose (flang);/*建立标记符临时文献:tempk*/if (flaifopen(tem_c0,w))=NUL)printf(Eror! Can crete fil : em_c40);return;fcloe (floaing);/*建立整数类型常量临时文献:tep_c40*/i((floainfope(tem_c1,w))=NL)rif(Eror! Cant create file : emp_41);retur;fos (lodig);/建立浮点类型常量临时文献:tm_c1*/if ((floaing=en(te_c42,))=NULL)prif(Err! C reae il : tep_c4);e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号