资源简介
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循环语句的翻译程序设计\
- 上一篇:白车身模型
- 下一篇:音频信号的谱分析及去噪
相关资源
- 数据结构课程设计内部排序算法比较
- 单片机水塔水位控制系统课程设计p
- 数据库系统课程设计-仓库管理系统
- 计算机网络课程设计 小型校园网的构
- 编译原理课程设计——编译器
- Labview课程设计低通滤波器及报告
- 计算机组成原理算法实现(二)
- 编译原理课程设计含报告,源程序和
- 聊天系统的设计与实现
- 函数信号发生器课程设计
- PLC四节传送带的模拟控制课程设计
- 编译原理课程设计+源代码
- Delphi试卷生成系统
- 销售订单数据库系统课程设计
- 数据结构课程设计报告模板计051-计
- DSP课程设计报告(基于DSP的语音信号
- 图像数字图像课程设计--数字水印设计
- 四川大学编译原理课程设计报告C-词法
- Verilog课程设计自动售货机
- 餐饮管理系统UML课程设计报告
- 《编译原理》课程设计指导书 算术表
- 气敏报警器 课程设计报告
- 汽车牌照的排序与查找问题-数据结构
- 数据挖掘的课程设计报告
- 篮球24秒计时器课程设计
- 计算机网络-端口扫描-课程设计
- 编译课程设计报告通过编程实现语法
- 数字逻辑课程设计数字密码锁
- 编译原理课程设计——简单编译器
- 数据库课程设计-工资管理系统
评论
共有 条评论