资源简介
一个能编译运行大部分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 数据集 百度云 链接
相关资源
- 解决检索 COM 类工厂中 CLSID 为 {96749
- ADC0809的采样控制电路的实现.doc
- I2C读写AT24C02 基于STM32F103 cube116540
- 微软masm汇编编译器
- DAC0832波形发生器幅值及频率都精确可
- 类pascal语言编译器(编译原理实验)
- 单片机和adc0809数字电压表
- 单片机、ADC0808809设计简易数字电压表
- 北航 数值分析 Fredholm积分方程的数值
- 编译原理课程设计:词法语法编译器
- proteus_24C08—有注释(proteus里面使用的
- 数据采集系统——ADC0808的应用,单片
- ADC0809数字电压表 LCD1602显示 汇编程序
- 北航人工智能原理课大作业源代码,
- 汇编语言编译器masm5.0
- 数字电压表(源程序 protues仿真)
- C编译器源代码(超级牛b).rar
- IIC proteus仿真实验
- ADC0808工作时序图
- 用MC68HC05JB4开发USB外设
- MC68HC08单片机程序设计速成
- 飞思卡尔68HC08Metrowerks_CodeWarrior开发软
- AT89C51+ADC0808 PROTEUS仿真
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- 数据采集系统——ADC0808的应用
- 8086微机应用DAC0832控制小直流电机转速
- 北京航空航天大学研究生数值分析计
- 以单片机AT89S52、光电脉宽调制器芯片
- 北航鲁棒控制理论及实践课程讲义
- 北航《操作系统》期末试题与答案
评论
共有 条评论