logo

您所在位置网站首页 > 海量文档  > 计算机 > C/C++资料

编译原理课程设计词法分析语法分析语义分析代码生成.doc 26页

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
#include<cstdio> #include<iostream> #include<cstdlib> #include<fstream> #include<string> #include<cmath> using namespace std; /*********************下面是一些重要数据结构的声明***************************/ struct token//词法 token结构体 { int code;//编码 int num;//递增编号 token *next; }; token *token_head,*token_tail;//token队列 struct str//词法 string结构体 { int num;//编号 string word;//字符串内容 str *next; }; str *string_head,*string_tail;//string队列 struct ivan//语法 产生式结构体 { char left;//产生式的左部 string right;//产生式的右部 int len;//产生式右部的长度 }; ivan css[20];//语法 20个产生式 struct pank//语法 action表结构体 { char sr;//移进或归约 int state;//转到的状态编号 }; pank action[46][18];//action表 int go_to[46][11];//语法 go_to表 struct ike//语法 分析栈结构体,双链 { ike *pre; int num;//状态 int word;//符号编码 ike *next; }; ike *stack_head,*stack_tail;//分析栈首尾指针 struct L//语义四元式的数据结构 { int k; string op;//操作符 string op1;//操作数 string op2;//操作数 string result;//结果 L *next;//语义四元式向后指针 L *Ltrue;//回填true链向前指针 L *Lfalse;//回填false链向前指针 }; L *L_four_head,*L_four_tail,*L_true_head,*L_false_head;//四元式链,true链,false链 struct symb//语义输入时符号表 { string word;//变量名称 int addr;//变量地址 symb *next; }; symb *symb_head,*symb_tail;//语义符号链表 /*********************下面是与词法分析相关的一些函数的声明***************************/ void scan();//按字符读取源文件 void cifa_main();//词法分析主程序 int judge(char ch);//判断输入字符的类型 void out1(char ch);//写入token.txt void out3(char ch,string word);//写入string.txt void input1(token *temp);//插入结点到队列token void input3(str *temp);//插入结点到队列string void output();//输出三个队列的内容 void outfile();//输出三个队列的内容到相应文件中 /*********************下面是与语法分析相关的一些函数的声明***************************/ void yufa_main();//语法分析主程序 void yufa_initialize();//初始化语法分析数据结构 int yufa_SLR1(int a);//语法分析主体部分 int ID1(int a);//给输入字符编号,转化成action表列编号 string ID10(int i);//给输入字符反编号 int ID2(char ch);//给非终结状态编号,转化成go_to表列编号 int ID20(char ch);//给非终结状态编号 char ID21(int j);//给非终结状态反编号 void add(ike *temp);//给ike分析栈链表增加一个结点 void del();//给ike分析栈链表删除一个结点 /*********************下面是与语义分析相关的一些函数的声明***************************/ void

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556