资源简介
设计SAMPLE语言的语法、语义分析器,输出四元式的中间结果。
检查要求:
a)启动程序后,先输出作者姓名、班级、学号(可用汉语、英语或拼音)。
b)请求输入测试程序名,键入程序名后自动开始编译。
c)输出四元式中间代码(样式见样板输出3和4)。
d)能发现程序的语法错误并输出出错信息。

代码片段和文件信息
using namespace std;
#include“base.h“
#pragma warning(disable:4996)
extern int nowaddress;//表示下一个地址
extern bianYi parse; //词法分析
extern item sign; //
extern suanfu_stack STACK; //布朗运算的栈
extern fouryuan FOMO; //四元组表
int suanfubiao[numsuanfu + 1][numsuanfu + 1] = { -2 11 1 1 1 1 11 11 1
-11-1-1-1-1-111-1-1-1
-111-1-1-1-11 1-1-1-1
-111 1-1-1-11 1-1-1-1
-111 1-2-2 -111-2-2-2
-111 1-2 -2-111-2-2-2
-1-1-1-1-1-1-101-1-1-1
11 1 1 1 1 1 1 11 11
-1-1-1-1-1-1-1-10-1-1-1
-1111 -2 -2-11 1-2-2-2
-1111 -2-2-11 1-2-2-2
-1111 -2-2-1 11 -2-2-2
};
int findfuhaobiao(int k) {
switch (k) {
case 20:return suanfu_or;
case 18:return suanfu_not;
case 1:return suanfu_and;
case 53:return suanfu_low;
case 57:return suanfu_above;
case 39:return suanfu_leftkuohao;
case 40:return suanfu_rightkuohao;
case 56:return suanfu_equ;
case 54:return suanfu_lowequ;
case 58:return suanfu_aboveequ;
case 36:
case 31:
case 13:
case 37:return suanfu_bctf;
case suanfu_end: return suanfu_jing;
default:return -1;
}
}
void superpop(int i) {
item temp[5];
int tempt = STACK.applyfortruelist();
int tempf = STACK.applyforfalselist();
// char *op1*op2;
switch (i) {
case suanfu_above:
case suanfu_low:
case suanfu_equ:
case suanfu_aboveequ:
case suanfu_lowequ: {
for (int j = 0; j < 3; j++)
STACK.suanfu_pop(temp[j]);
STACK.optop++;
/////////truelist的2位放codebegin3位放长度
FOMO.load(nowaddress temp[1] temp[2] temp[0] 0);
// cout<“<<“ “< STACK.truelist[tempt][1] = nowaddress;
STACK.falselist[tempf][1] = nowaddress;
STACK.truelist[tempt][2] = 1;
STACK.falselist[tempf][2] = 1;
STACK.truelist[tempt][3] = nowaddress;
STACK.falselist[tempf][3] = ++nowaddress;
FOMO.load(nowaddress 0);
// cout< ++nowaddress;
item tempitem(-1 tempt);
STACK.suanfu_push(tempitem);
tempitem.x = -2;
tempitem.y = tempf;
STACK.suanfu_push(tempitem);
break;
}
case suanfu_not: {
for (int j = 0; j < 3; j++)
STACK.suanfu_pop(temp[j]);
STACK.optop += 2;
STACK.truelist[tempt][0] = _available;
STACK.falselist[tempf][0] = _available;
temp[0].x = -1;
temp[1].x = -2;
STACK.truelist[temp[1].y][0] = _unavailable;
STACK.falselist[temp[0].y][0] = _unavailable;
////////////////////真假连互换
for (int zz = 0 ww; zz<3 + (STACK.truelist[temp[1].y][2]) ? (STACK.falselist[temp[0].y][2]) : (STACK.truelist[temp[1].y][2])>(STACK.falselist[temp[0].y][2]); zz++) {
ww = STACK.truelist[temp[1].y][zz];
STACK.truelist[temp[1].y][zz] = STACK.falselist[temp[0].y][zz];
STACK.fal
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 17408 2018-12-21 14:25 语法语义分析器\.vs\词法语法语义分析器\v15\.suo
文件 5410816 2018-12-21 14:25 语法语义分析器\.vs\词法语法语义分析器\v15\Browse.VC.db
文件 154112 2018-12-11 20:42 语法语义分析器\Debug\词法语法语义分析器.exe
文件 1172744 2018-12-11 20:42 语法语义分析器\Debug\词法语法语义分析器.ilk
文件 1224704 2018-12-11 20:42 语法语义分析器\Debug\词法语法语义分析器.pdb
文件 194560 2018-12-11 21:17 语法语义分析器\x64\Debug\词法语法语义分析器.exe
文件 934380 2018-12-11 21:17 语法语义分析器\x64\Debug\词法语法语义分析器.ilk
文件 880640 2018-12-11 21:17 语法语义分析器\x64\Debug\词法语法语义分析器.pdb
文件 4399 2018-12-08 00:16 语法语义分析器\词法语法语义分析器\ba
文件 7797 2018-12-11 20:41 语法语义分析器\词法语法语义分析器\bool.cpp
文件 10539 2018-12-11 20:40 语法语义分析器\词法语法语义分析器\cifa.cpp
文件 6089 2018-12-11 20:37 语法语义分析器\词法语法语义分析器\control.cpp
文件 57779 2018-12-11 20:41 语法语义分析器\词法语法语义分析器\Debug\bool.obj
文件 316601 2018-12-11 20:40 语法语义分析器\词法语法语义分析器\Debug\cifa.obj
文件 62782 2018-12-11 20:37 语法语义分析器\词法语法语义分析器\Debug\control.obj
文件 58734 2018-12-11 20:31 语法语义分析器\词法语法语义分析器\Debug\fuzhi.obj
文件 61383 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\item.obj
文件 273408 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\vc141.idb
文件 806912 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\vc141.pdb
文件 67175 2018-12-08 00:39 语法语义分析器\词法语法语义分析器\Debug\zhongjiandaima.obj
文件 121814 2018-12-07 11:35 语法语义分析器\词法语法语义分析器\Debug\主函数.obj
文件 67163 2018-12-07 11:27 语法语义分析器\词法语法语义分析器\Debug\四元式.obj
文件 56499 2018-12-07 11:27 语法语义分析器\词法语法语义分析器\Debug\布尔运算.obj
文件 62794 2018-12-07 11:27 语法语义分析器\词法语法语义分析器\Debug\控制.obj
文件 121783 2018-12-08 00:50 语法语义分析器\词法语法语义分析器\Debug\源.obj
文件 316602 2018-12-07 11:27 语法语义分析器\词法语法语义分析器\Debug\词法分析.obj
文件 168 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\词法语法语义分析器.log
文件 10234 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\词法语法语义分析器.tlog\CL.command.1.tlog
文件 89228 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\词法语法语义分析器.tlog\CL.read.1.tlog
文件 15518 2018-12-11 20:42 语法语义分析器\词法语法语义分析器\Debug\词法语法语义分析器.tlog\CL.write.1.tlog
............此处省略49个文件信息
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论