资源简介
这是我们的课程设计,一个C语言小子集的四元式生成,改成汇编也很方便@!!
代码片段和文件信息
#include“grammar.h“
void Grammar::showCode() {
int tabcnt = 0;
bool flag = false;
bool IF = false;
bool ELSE = false;
for (auto &word : Format) {
if (word == “未知符号错误“) break;
if (word == “if“) IF = true;
if (word == “}“) tabcnt--;
if (word == “{“ || word == “}“) {
cout << ‘\n‘;
}
if (word == “else“) cout << ‘\n‘ flag = true tabcnt-- ELSE = false;
int t = tabcnt;
if (flag || word == “{“ || word == “}“) {
while (t--) cout << “ “;
if (ELSE)cout << “ “ ELSE = false;
flag = false;
}
cout << word << ‘ ‘;
if (word == “else“) cout << ‘\n‘ flag = trueELSE =true;
if (word == “{“) tabcnt++;
if (word == “;“ || word ==“}“ || word==“{“) cout << ‘\n‘ flag = true;
if (IF && word == “)“) cout << ‘\n‘ flag = true IF = false tabcnt++;
}
}
void Grammar::debug() {
cout <<“ln:“< }
WORD Grammar::errors(string str) {
int row = nowWord.row;
int col = nowWord.col;
errorTable.push_back(WORD(str ERROR row col));
return WORD(str ERROR row col);
}
void Grammar::showFour() {
for (int i = 1; i < Fours.size(); i++) {
cout << “Line“ << i << “:\t( “;
cout << Fours[i].op << “\t“ << Fours[i].sym1 << “\t“ << Fours[i].sym2 << “\t“ << Fours[i].res << “\t)“ << endl;
}
cout << Fours.size() << endl;
}
void Grammar::run() {
parseS();
if (errorTable.size() == 0) {
showFour();
} else {
cout << “共有“ << errorTable.size() << “个错误“ << ‘\n‘;
for (int i = 0; i < errorTable.size(); i++) {
WORD now = errorTable[i];
cout<<“错误编号“< cout << “行号:“ << now.row<<‘\t‘;
cout << “列号:“ << now.col<<‘\t‘;
cout << “错误信息:“ << now.word << endl;
}
}
}
void Grammar::makeFour(string a string b string c string d) {
Fours.push_back(Four(a b c d));
}
void Grammar::GetNewWord() {
nowWord = lex.getWord();
Format.push_back(nowWord.word);
}
// S->main A
void Grammar::parseS(){
GetNewWord();
if (nowWord.word != “main“) {
errors(“main匹配失败“);
}
else GetNewWord();
parseA();
}
// A->(){B}
void Grammar::parseA() {
if (nowWord.word != “(“) {
errors(“缺少(“);
}
else GetNewWord();
if (nowWord.word != “)“) {
errors(“缺少)“);
}
else GetNewWord();
if (nowWord.word != “{“) {
errors(“缺少{“);
}
else GetNewWord();
parseB();
if (nowWord.word != “}“) {
errors(“缺少}“);
}
else GetNewWord();
}
// 分析B <分程序>::=<变量说明部分>;<语句部分>
// B->Def ; F
// F 代表语句部分
// select = {int}
void Grammar::parseB() {
parseDef();
if (nowWord.word != “;“) errors(“缺少分号“);
else GetNewWord();
parseF();
}
// Def -> int LIST
void Grammar::parseDef() {
if (nowWord.word != “int“) {
errors(“缺少变量声明部分中的int“);
}
else GetNewWord();
parseList();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 44544 2019-01-01 14:45 源代码\Compiler\.vs\Compiler\v15\.suo
文件 6279168 2019-01-01 07:32 源代码\Compiler\.vs\Compiler\v15\Browse.VC.db
..A..H. 46 2019-01-01 14:26 源代码\Compiler\.vs\Compiler\v15\Browse.VC.opendb
文件 39649280 2019-01-01 14:26 源代码\Compiler\.vs\Compiler\v15\ipch\AutoPCH\2ad8544a4b9f25e4\GRAMMAR.ipch
文件 41680896 2019-01-01 14:26 源代码\Compiler\.vs\Compiler\v15\ipch\AutoPCH\481bd3790af93714\GRAMMAR.ipch
文件 41680896 2019-01-01 14:26 源代码\Compiler\.vs\Compiler\v15\ipch\AutoPCH\58c149eb7fe50928\MAIN.ipch
文件 41680896 2018-12-24 13:47 源代码\Compiler\.vs\Compiler\v15\ipch\AutoPCH\6f61545a27b7de65\LEXICAL.ipch
文件 41680896 2018-11-22 13:41 源代码\Compiler\.vs\Compiler\v15\ipch\AutoPCH\f60ffc8bf46a8b17\GRAMMAR.ipch
文件 6416 2018-11-22 13:53 源代码\Compiler\Compiler\Compiler.vcxproj
文件 1573 2018-11-22 13:53 源代码\Compiler\Compiler\Compiler.vcxproj.filters
文件 165 2018-11-16 13:40 源代码\Compiler\Compiler\Compiler.vcxproj.user
文件 96 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.log
文件 2186 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\CL.command.1.tlog
文件 62404 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\CL.read.1.tlog
文件 4850 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\CL.write.1.tlog
文件 214 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\Compiler.lastbuildstate
文件 1528 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\li
文件 4042 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\li
文件 750 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Compiler.tlog\li
文件 892317 2019-01-01 04:00 源代码\Compiler\Compiler\Debug\grammar.obj
文件 511484 2018-12-24 14:23 源代码\Compiler\Compiler\Debug\lexical.obj
文件 551298 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\Main.obj
文件 281600 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\vc141.idb
文件 626688 2019-01-01 14:45 源代码\Compiler\Compiler\Debug\vc141.pdb
文件 492 2018-12-23 17:26 源代码\Compiler\Compiler\defination.h
文件 9466 2019-01-01 04:00 源代码\Compiler\Compiler\grammar.cpp
文件 2614 2018-12-24 13:13 源代码\Compiler\Compiler\grammar.h
文件 128 2019-01-01 03:59 源代码\Compiler\Compiler\input.txt
文件 3439 2018-12-24 14:23 源代码\Compiler\Compiler\lexical.cpp
文件 1217 2018-11-28 13:27 源代码\Compiler\Compiler\lexical.h
............此处省略40个文件信息
- 上一篇:mfc串口程序
- 下一篇:c++飞机大战 源代码+程序 学习使用
相关资源
- 60个经典C语言项目
- 单片机C语言400
- 《数据结构与算法分析:C语言描述第
- 新概念51单片机c语言教程郭天祥清晰
- C语言标准库函数源码大全 24M涵盖所有
- C程序设计高级教程周立功完整版
- eclipse集成开发环境C语言版本
- 《单片机C语言实战开发108例》光盘
- JPEG图像压缩c语言算法
- c语言扫雷游戏graphics.h实现
- 嵌入式系统高级C语言编程详细书签版
- 谭浩强C语言程序设计第四版.zip
- 数据结构 C语言版2009年-严蔚敏 高清扫
- C语言深度解剖 第一版和第二版打包
- bm3d_C语言源码&matlab源码及测试图片
- C语言检测电脑CPU温度
- 手把手教你学51单片机C语言版
- c语言深度剖析完美高清文字版pdf
- 《C8051F系列单片机开发与C语言编程》
- C语言解惑.[美]Alan R.Feuer(带详细书签
- C语言程序设计第四版学习辅导(谭浩
- 《单片机C语言程序设计实训100例——
- 数据结构(C语言版)(严蔚敏_吴伟民
- Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.zip
- C语言核心技术中文版.PDF
- C语言实现最短路径规划
- c语言编写中国象棋人人对战graphic.h
- 数据结构与算法分析:C语言描述(第
- C语言与系统仿真 有源代码。
- C语言算法导论
评论
共有 条评论