资源简介
一个能编译运行大部分C0语句的编译器。北航大三上编译原理课设作业,最终得分88。有充足的注释说明,供需要的同学参考(切勿抄袭哦~)。
代码片段和文件信息
//
// Created by Andy on 2017/11/22.
//
#include “main.h“
bool errorFlag = false;
string errorMessages[] = {
“Number starts with zero.“
“Number too large or too long.“
“! without = backward.“
“Empty character.“
“Illegal character between ‘‘.“
“Character more than one or ‘ lost.“
“Illegal character inside string.“
“String longer than 50.“
“Unknown word.“
“Sign before zero.“
“Number error.“
“Not a variable or function.“
“Identifier repeatedly define.“
“Char const error.“
“Const definition type error“
“Array index error.“
“Definition head error.“
“Identifier not define.“
“Invalid factor.“
“Identifier kind not match.“
“Step length couldn‘t be 0.“
“Case element not a constant.“
“Parameter count exceeds.“
“Illegal type.“
“Printf symbol lost.“
“Scanf symbol lost.“
“Return symbol lost.“
“Default symbol lost.“
“Colon lost.“
“Case symbol lost.“
“Switch symbol lost.“
“Plus or minus lost.“
“For symbol lost.“
“If symbol lost.“
“Becomes symbol lost.“
“Void symbol lost.“
“Left brace lost.“
“Right brace lost.“
“Left parenthesis lost.“
“Right parenthesis lost.“
“Right bracket lost.“
“Identifier lost.“
“Semicolon lost.“
“Assignment symbol lost.“
“Type definition lost.“
“Step length lost“
“Statement error“
“Illegal syntax.“
};
string warningMessage[] = {
“Type conflicts.“ // 0
};
bool skipFlag = false;
bool inNexts(symbol nexts[] symbol tempSy) {
for (int i = 0; i < sizeof(nexts) / sizeof(symbol); ++i) {
if (nexts[i] == tempSy) {
return true;
}
}
return false;
}
void error(int errorNum) {
static int currentLine = -1;
if (currentLine != linePtr) { // Error in a new line accepted
currentLine = linePtr;
if (!errorFlag) { // Used to avoid mips code generation
errorFlag = true;
}
cout << “[Line “<< linePtr << “] Error: “ << errorMessages[errorNum] << endl;
}
}
void skipUntil(symbol nexts[]) {
while (!inNexts(nexts sy)) {
insymbol();
}
skipFlag = true;
}
void warn(int warnNum) {
cout << “[Line “<< linePtr << “] Warning: “ << warningMessage[warnNum] << endl;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-11 15:21 C0_Compiler-master\
文件 49 2018-03-11 15:21 C0_Compiler-master\.gitignore
文件 523 2018-03-11 15:21 C0_Compiler-master\README.md
文件 2343 2018-03-11 15:21 C0_Compiler-master\error&warn.cpp
文件 6521 2018-03-11 15:21 C0_Compiler-master\idTable.cpp
文件 4505 2018-03-11 15:21 C0_Compiler-master\infixNotation.cpp
文件 24003 2018-03-11 15:21 C0_Compiler-master\infixOpt.cpp
文件 7082 2018-03-11 15:21 C0_Compiler-master\lexical.cpp
文件 2254 2018-03-11 15:21 C0_Compiler-master\main.cpp
文件 5666 2018-03-11 15:21 C0_Compiler-master\main.h
文件 56725 2018-03-11 15:21 C0_Compiler-master\parser.cpp
文件 21335 2018-03-11 15:21 C0_Compiler-master\target.cpp
文件 27273 2018-03-11 15:21 C0_Compiler-master\targetOpt.cpp
文件 325 2018-03-11 15:21 C0_Compiler-master\tools.cpp
文件 419 2018-03-11 15:21 C0_Compiler-master\tools.h
- 上一篇:cdslmd.exe
- 下一篇:miniImagenet 数据集 百度云 链接
相关资源
- ADC0808工作时序图
- 用MC68HC05JB4开发USB外设
- MC68HC08单片机程序设计速成
- 飞思卡尔68HC08Metrowerks_CodeWarrior开发软
- AT89C51+ADC0808 PROTEUS仿真
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 数据采集系统——ADC0808的应用
- 8086微机应用DAC0832控制小直流电机转速
- 北京航空航天大学研究生数值分析计
- 以单片机AT89S52、光电脉宽调制器芯片
- 北航鲁棒控制理论及实践课程讲义
- 北航《操作系统》期末试题与答案
- 5G-BTS3900&BTS5900 V100R016C00SPC100 MML命令参
- 北航软件学院复试专业基础
- 北航研究生计网实验报告.rar
- 应用程序无法正常启动0xc0150002
- pl/0编译器 语法分析
- 北航算法期末考试题答案
- 北航算法期末考试题整理
- 编译原理课设c编译器
- 北航《计算机组成原理》本科期末试
- ADC0808 数字电压表仿真+C程序
- 完整C-编译器源代码
- TINY+编译器 改编自原版TINY
- 基于PLC的自动化立体车库毕业设计北
- STM32使用模拟IIC实现24C02读取
- VC10 精简版(只有编译器标准库必要的
- 自己动手写编译器链接器_源码
- Ξb-→π-Ds-Ξc02790Ξc02815和&Xi
- 基于STM32的蓝牙模块调试
评论
共有 条评论