【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)

您所在的位置:网站首页 武汉理工大学结构设计原理 【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)

【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)

2024-03-10 02:25| 来源: 网络整理| 查看: 265

注:本文记录 WHUT-计算机学院-编译原理 课程 课内实践

>>点击查看武汉理工大学计算机专业课程资料汇总

项目下载地址:https://download.csdn.net/download/cxh_1231/10916735

纸上得来终觉浅,觉知此事需躬行!

0、笔者:

编译原理课程一共有两次实验和一次课内实践。前两次实验分别是:

赋值语句的词法分析程序设计与实现赋值语句的语义分析程序设计与实现

而课内实践的内容是:WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)

所以我就以实践为目标,从最开始就按照实践的内容来做,首先实现词法分析,然后语法分析、语义分析,输出中间结果四元式。整个过程一气呵成。所以也可以作为前面实验的内容来参考。

1、实践内容: 课内实践任务书

学生姓名:             专业班级:                

指导教师:   林老师       工作单位: 计算机科学与技术学院  

题目: WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)

初始条件:

理论:掌握编译理论、技术、方法、掌握一种计算机高级语言的使用。

实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。

要求完成的主要任务: (包括实践工作量及其技术要求,以及报告撰写等具体要求)

写出符合给定的语法分析方法的文法及属性文法。完成题目要求的中间代码四元式的描述。写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。设计报告格式按附件要求书写。课内实践报告书正文的内容应包括:

1 系统描述(问题域描述);

2 文法及属性文法的描述;

3 语法分析方法描述及语法分析表设计;

4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;

5 编译系统的概要设计;

6 详细的算法描述(流程图或伪代码);

7 软件的测试方法和测试结果;

8本设计的评价、特点、不足、收获与体会等。

2、运行截图:

3、部分代码:

仅提供部分代码,以供参考。

下面代码不能运行!不能运行!不能运行!

可以运行的代码:https://download.csdn.net/download/cxh_1231/10916735

/* 编译原理课内实践 While循环语句的翻译程序设计与实现 递归下降法 输出四元式 */ #include #include #include #include #include using namespace std; #define ERROR 0; #define OK 1; void anasyProgram(string program); void listWord(); void anasyWord(); //保存拆开后的单个符号 struct Word{ string oneword; string type; }; Word word[1000]; //程序单词个数; int num = 0; char suanshi[100]; int suanshinum = 0; //读入源程序 void inputProgram() { //首先将整个txt文件读入到program字符串里 ifstream in("program.txt", ios::in); istreambuf_iterator beg(in), end; string program(beg, end);//或者string st;st.assign(beg,end); in.close(); anasyProgram(program); } /********词法分析阶段**********/ //判端是界符:返回真 bool isDelimiter(char ch) { if (ch == '(' || ch == ')' || ch == ';' || ch == '{' || ch == '}') return true; else return false; } //判断是字母:返回真 bool isLetter(char ch) { if ((ch >= 'a' && ch = 'A' && ch = '0' && ch


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3