DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)

DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)

ID:47527592

大小:114.00 KB

页数:12页

时间:2020-01-13

DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)_第1页
DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)_第2页
DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)_第3页
DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)_第4页
DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)_第5页
资源描述:

《DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、(二)DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)一、1.简单优先法的基本思想根据优先关系的定义,将简单优先文法中各文法符号之间的这种关系用一个矩阵表示,称作简单优先矩阵。PDA读入一个单词后,比较栈顶符号和该单词的优先级,若栈顶符号优先级低于该单词,继续读入;若栈顶符号优先级高于或等于读入符号,则找句柄进行归约,找不到句柄就继续读入。直到最后栈内只剩下开始符号,输入串读到“#”为止。此时识别正确。可分点描述如下:(1)、对句型中相邻的文法符号规定优先关系,以寻找句型中的句柄;(2)、规定句柄内各相邻符号之间具有相同的优先级;(3)、规定句柄两端符号优先级要比位于句柄之

2、外而又和句柄相邻的符号的优先级高,以先归约句柄;(4)、对于文法中所有符号,只要它们可能在某个句型中相邻,就要为它们规定相应的优先关系,若某两个符号永远不可能相邻,则它们之间就无关系.2.简单优先矩阵用于表示文法符号之间的简单优先关系的矩阵。3.简单优先法的优缺点优点:技术简单,当做简单优先矩阵是要求较短。缺点:适用范围小,分析表尺寸太大。二、源代码实现:#include#defineMAX35#include#include#includeusingnamespacestd;#defineTABLE_LEN8#define

3、STR_LEN256intzhlen;charsTable[TABLE_LEN+1]={"+-*/()i#"};//顺序索引intShipTable[TABLE_LEN][TABLE_LEN]=//优先表{{1,1,-1,-1,-1,1,-1,1},{1,1,-1,-1,-1,1,-1,1},{1,1,1,1,-1,1,-1,1},{1,1,1,1,-1,1,-1,1},{-1,-1,-1,-1,-1,0,-1,-2},{1,1,1,1,-2,1,-2,1},{1,1,1,1,-2,1,-2,1},{-1,-1,-1,-1,-1,-2,-1,0}};charX,a;charVN[11]={

4、'K','L','P','S','E','G','T','R','F','Q',''};charVT[15]={'i','=','<','>','+','-','*','/','(',')','d','w',';','#',''};charp[18][6]={"dLwS","SP",";SP","","iQE","TG","+TG","-TG","","FR","*FR","/FR","","(E)","i","=","<",">"};charstack[MAX];charqueue[MAX];intsp,fr

5、ont;intM[10][14]={{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1},{1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,-1},{4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{5,-1,-1,-1,-1,-1,-1,-1,5,-1,-1,-1,-1,-1},{-1,-1,-1,-1,6,7,-1,-1,-1,-1,-1,8,8,8},{9,-1,-1,-1,-1,-1,-1,-1,9,-1

6、,-1,-1,-1,-1},{-1,-1,-1,-1,12,12,10,11,-1,-1,-1,12,12,12},{14,-1,-1,-1,-1,-1,-1,-1,13,-1,-1,-1,-1,-1},{-1,15,16,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},};intf=0;intcount=0;intc=0;chararr_i[MAX];charvar[MAX];//表格管理inttd[MAX];intt=0;intopd=-1;intopr=-1;intid=0;intd=0;chararr[MAX][4];//存放待输出的四元式//charkeywo

7、rd[2][7]={"do","while"};boolIsCharInStr(charc,chars[]){for(inti=0;s[i]!='';i++){if(s[i]==c)returntrue;}returnfalse;}intGetIndex(chars[],charc){for(inti=0;s[i]!='';i++){if(c==s[i])returni;}return-1;}//stri

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

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

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