资源描述:
《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 ","= ","<