资源简介
WHILE循环语句的翻译程序设计,可更改为四元式的程序。要求是 WHILE循环语句的翻译程序设计(LR方法、输出三地址码)

代码片段和文件信息
// WHILE循环语句的翻译程序设计(LR方法、输出三地址码)
#include //字符串处理
#include //参数化输入/输出
#include //数据流输入/输出
#include //文件输入/输出
#include //字符处理
#include //STL 堆栈容器
#include “conio.h“ //控制台进行数据输入和数据输出
using namespace std;
ofstream coutf(“LR(0).txt“ ios::out);
ofstream couty(“yufa.txt“ ios::out);
char shuru[100] tmp;
char sr[100];
char jiefu[10] caozuofu[10] panduanfu[10];
char word[10];
int q = 0;
struct Table //存储LR(0)分析表
{
char act_0[10];
int act_1[10];
int go[4];
}action[18];
struct sanyuanshi //三地址码结构体
{
char f;
char op1;
char op2;
char result;
}sandizhi[10];
void Init() {
cout << “产生式集合:“ << endl;
cout << “(1)S->while(B){E}“ << endl;
cout << “(2)E->AE“ << endl;
cout << “(3)E->A“ << endl;
cout << “(4)A->i op A “ << endl;
cout << “(5)A->i;“ << endl;
cout << “(6)B->i rop i“ << endl;
cout << “(7)B->i“ << endl;
//--------------- ACTION -----------------------
action[0].act_0[0] = ‘s‘; action[0].act_1[0] = 2;
action[1].act_0[9] = ‘Z‘;
action[2].act_0[1] = ‘s‘; action[2].act_1[1] = 3;
action[3].act_0[5] = ‘s‘; action[3].act_1[5] = 5;
action[4].act_0[2] = ‘s‘; action[4].act_1[2] = 6;
action[5].act_0[2] = ‘r‘; action[5].act_1[2] = 7;
action[5].act_0[7] = ‘s‘; action[5].act_1[7] = 7;
action[6].act_0[3] = ‘s‘; action[6].act_1[3] = 9;
action[7].act_0[5] = ‘s‘; action[7].act_1[5] = 8;
action[8].act_0[2] = ‘r‘; action[8].act_1[2] = 6;
action[9].act_0[5] = ‘s‘; action[9].act_1[5] = 14;
action[10].act_0[4] = ‘r‘; action[10].act_1[4] = 3;
action[10].act_0[5] = ‘s‘; action[10].act_1[5] = 14;
action[11].act_0[4] = ‘s‘; action[11].act_1[4] = 12;
action[12].act_0[9] = ‘r‘; action[12].act_1[9] = 1;
action[13].act_0[4] = ‘r‘; action[13].act_1[4] = 2;
action[14].act_0[8] = ‘s‘; action[14].act_1[8] = 17;
action[14].act_0[6] = ‘s‘; action[14].act_1[6] = 15;
action[15].act_0[5] = ‘s‘; action[15].act_1[5] = 14;
action[16].act_0[4] = ‘r‘; action[16].act_1[4] = 4;
action[16].act_0[5] = ‘r‘; action[16].act_1[5] = 4;
action[17].act_0[4] = ‘r‘; action[17].act_1[4] = 5;
action[17].act_0[5] = ‘r‘; action[17].act_1[5] = 5;
//-------------------- GOTO -------------------------
action[0].go[0] = 1;
action[3].go[2] = 4;;
action[9].go[1] = 11;
action[9].go[3] = 10;
action[10].go[1] = 13;
action[10].go[3] = 10;
action[15].go[3] = 16;
}
void cifafenxi()
{
int i = 0 j = 0 k = 0 m = 0;
for (q = 5; q < strlen(sr); q++)
{
tmp = sr[q];
if (tmp >= ‘0‘&&tmp <= ‘9‘ || tmp >= ‘a‘&&tmp <= ‘z‘ || tmp >= ‘A‘&&tmp <= ‘Z‘)
word[i++] = tmp;
else if (tmp == ‘+‘ || tmp == ‘-‘ || tmp == ‘/‘ || tmp == ‘*‘)
caozuofu[j++] = tmp;
else if (tmp == ‘>‘ || tmp == ‘<‘)
panduanfu[k++] = tmp;
else if (tmp == ‘(‘ || tmp == ‘)‘ || tmp == ‘{‘ || tmp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2020-01-05 21:39 WHILE循环语句的翻译程序设计\LR(0).txt
文件 11975 2020-01-05 21:39 WHILE循环语句的翻译程序设计\main.cpp
文件 0 2020-01-05 21:39 WHILE循环语句的翻译程序设计\yufa.txt
目录 0 2020-03-25 08:21 WHILE循环语句的翻译程序设计\
- 上一篇:白车身模型
- 下一篇:音频信号的谱分析及去噪
相关资源
- FTP课程设计(服务端+客户端)
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- 单片机课程设计 篮球计分器
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 步进电机课程设计(个人设计)
- 校园网络规划与设计课程设计
- 编译原理课程设计:词法语法编译器
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- 数据库VFP课程设计
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
- 航空订票系统_数据结构课程设计
- c 课程设计 职工信息管理系统
- 汇编语言,课程设计,红绿灯
- 机床液压系统课程设计卧式钻床动力
- 课程设计蔬菜大棚自动控制系统,包
- 密码学课程设计:DES加密解密算法的
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- PL/0功能扩充break功能
- 数据库课程设计以及指导思想
- ATM自动取款机系统的分析与设计
- 留言板课程设计 报告加设计
- 数据结构课程设计——图书管理系统
评论
共有 条评论