编译原理课程设计(词法分析,语法分析,语义分析,代码生成)

编译原理课程设计(词法分析,语法分析,语义分析,代码生成)

ID:34081071

大小:105.32 KB

页数:29页

时间:2019-03-03

编译原理课程设计(词法分析,语法分析,语义分析,代码生成)_第1页
编译原理课程设计(词法分析,语法分析,语义分析,代码生成)_第2页
编译原理课程设计(词法分析,语法分析,语义分析,代码生成)_第3页
编译原理课程设计(词法分析,语法分析,语义分析,代码生成)_第4页
编译原理课程设计(词法分析,语法分析,语义分析,代码生成)_第5页
资源描述:

《编译原理课程设计(词法分析,语法分析,语义分析,代码生成)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、#include#include#include#include#include#includeusingnamespacestd;/***客*****客***********下面是—"些重要数据结构的声明**客*客***客******************/structtoken//词法token结构体{intcode;//编码intnum;//递增编号token*next;};token*token

2、_head,*token_tail;//token队列structstr〃词法string结构体{intnum;//编号stringword;//字符串内容str*next;};str*string_head,*string_tail;//string队列structivan//i§法产生式结构体{charleft;//产生式的左部stringright;//产生式的右部intlen;〃产生式右部的长度};ivancss[20];〃语法20个产生式structpank//语法action表结构体{char

3、sr;〃移进或归约intstate;//转到的状态编号};pankaction[461[181;//action表intgo_to[46][ll];//i§法go_to表structike//语法分析栈结构体,双链{ike*pre;intnum;//状态intword;//符号编码ike*next;};ike*stack_head,*stack_tail;//分析栈首尾指针structL〃语义四元式的数据结构{intk;stringop;//操作符stringopl;〃操作数stringop2;〃操作数s

4、tringresult;//结果L*next;〃语义四元式向后指针L*Ltrue;//回填true链向前指针L*LfaIse;//回填false链向前指针};L*L_four_head,*L_four_tail,*L_true_head,*L_false_head;//四元式链,true链,false链structsymb//语义输入时符号表{stringword;//变量名称intaddr;//变量地址svmb*next:};symb*symb_head,*symb_tail;〃语义符号链表/*****

5、****************下面是与词法分析相关的一些函数的声明*窃*窃*窃*窃*窃*窃*窃*窃*容*容*容*容*容*/voidscan();//按字符读取源文件voidcifa_main();//词法分析主程序intjudge(charch);〃判断输入字符的类型voidoutl(charch);//写入token.txtvoidout3(charch,stringword);//写入string.txtvoidinputl(token*temp);//插入结点到队列tokenvoidinput3(

6、str*temp);〃插入结点到队列stringvoidoutput();〃输出三个队列的内容voidoutfile();//输出三个队列的内容到相应文件中voidyufa_main();〃语法分析主程序voidyufa」nitialize();〃初始化语法分析数据结构intyufa_SLRl(inta);〃语法分析主体部分intIDl(inta);〃给输入字符编号,转化成action表列编号stringID10(inti);〃给输入字符反编号intID2(charch);〃给非终结状态编号,转化成go_

7、to表列编号intID20(charch);〃给非终结状态编号charID21(intj);〃给非终结状态反编号voidadd(ike*temp);〃给ike分析栈链表增加一个结点voiddel();〃给ike分析栈链表删除一个结点/*********************下面是与语义分析相关的一.些函数的声明*窃*窃*窃*窃*窃*窃*窃*窃*容*容*容*容*容*/voidyuyi_main(intm);〃语义分析主程序voidadd_L_four(L*temp);//向四元式链中加一个结点voidad

8、d_L_true(L*temp);//向true链中加一*个结点voidadd_L_false(L*temp);//向false链中加一个结点voidadd_symb(symb*temp);//向语义符号表链中加一个结点voidoutput_yuyi();//输出中间代码四元式和最后符号表stringnewop(intm);〃把数字变成字符串stringid_numtoname(intnum);//iE编号转换成相应的变量名i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。