DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式).doc 立即下载
2024-12-11
约8.6千字
约12页
0
114KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

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

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

预览

免费试读已结束,剩余 7 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开








(二)DO-WHILE循环语句的翻译程序设计(简单优先法、输出四元式)
一、1.简单优先法的基本思想
根据优先关系的定义,将简单优先文法中各文法符号之间的这种关系用一个矩阵表示,称作简单优先矩阵。PDA读入一个单词后,比较栈顶符号和该单词的优先级,若栈顶符号优先级低于该单词,继续读入;若栈顶符号优先级高于或等于读入符号,则找句柄进行归约,找不到句柄就继续读入。直到最后栈内只剩下开始符号,输入串读到“#”为止。此时识别正确。可分点描述如下:
(1)、对句型中相邻的文法符号规定优先关系,以寻找句型中的句柄;
(2)、规定句柄内各相邻符号之间具有相同的优先级;
(3)、规定句柄两端符号优先级要比位于句柄之外而又和句柄相邻的符号的优先级高,以先归约句柄;
(4)、对于文法中所有符号,只要它们可能在某个句型中相邻,就要为它们规定相应的优先关系,若某两个符号永远不可能相邻,则它们之间就无关系.
2.简单优先矩阵
用于表示文法符号之间的简单优先关系的矩阵。
3.简单优先法的优缺点
优点:技术简单,当做简单优先矩阵是要求较短。
缺点:适用范围小,分析表尺寸太大。
二、源代码实现:
#include<iostream>
#defineMAX35
#include<list>
#include<string>
#include<fstream>
usingnamespacestd;
#define		TABLE_LEN		8
#define		STR_LEN			256
intzhlen;
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]={'K','L','P','S','E','G','T','R','F','Q','\0'};
charVT[15]={'i','=','<','>','+','-','*','/','(',')','d','w',';','#','\0'};
charp[18][6]={"dLwS\0","SP\0",";SP\0","\0","iQE\0","TG\0","+TG\0","-TG\0","\0","FR\0",
"*FR\0","/FR\0","\0","(E)\0","i\0","=\0","<\0",">\0"};
charstack[MAX];
charqueue[MAX];
intsp,front;
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,-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];//存放待输出的四元式
//charkeyword[2][7]={"do\0","while\0"};
boolIsCharInStr(charc,chars[])
{
	for(inti=0;s[i]!='\0';i++)
	{
		if(s[i]==c)
			returntrue;
	}
	returnfalse;
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

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

文档大小:114KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用