资源简介
设计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个文件信息
相关资源
- 基于Qt5的俄罗斯方块游戏
- Effective_STL中文版.pdf
- Latex_Samples.rar
- 屏幕保护程序含文档
- 3个完全不同的书店管理系统以及参考
- vc实现向指定ip端口发送数据或文件,
- SkinSharp 完整破解版 带51款皮肤
- DOOM启示录David Kushner 著.pdf
- LR1分析器代码实现
- 运用定时器函数制作计时器
- 基于QtcpServer的网络库
- hdf5 Linux下的安装包 以及make文件
- windows程序设计(第五版).pdf
- amazong 棋 亚马逊棋
- 宿舍管理系统源代码+论文 有图形界面
- 一个通用的线程池实现代码(Windows
- 基于opencv的人脸表情识别的预处理
- cocos2dx 3.4 拼图游戏 源代码及运行文件
- 南航行李价格计算软件及其测试报告
- Ubuntu下Opencv显示中文
- 串口调试助手 vc 源代码
- 单USB双目摄像头拍摄程序
- 旅行模拟查询系统
-
openfr
ameworks英文教程 - VS2010 用CxImage读入各种图片格式后在内
- 程序员的自我修养(Epub)
- 航空订票系统 设计题目、需求分析、
- Windows网络编程第二版源码(补充材料
- 学生管理系统(参考)
- 毕业设计-即时通信软件含论文
评论
共有 条评论