资源简介
C语言实现一个编译器-编译原理南开大学的编译原理期末大作业:
南开大学的编译原理期末大作业,C语言实现一个编译器,可以实现将程序源代码转换为汇编程序然后执行。
南开大学的编译原理期末大作业,C语言实现一个编译器,可以实现将程序源代码转换为汇编程序然后执行。
代码片段和文件信息
#include “com.h“
Table table(Table tp int level)
{
int i;
Table newTemp = (Table)malloc(sizeof(struct table));
newTemp->previous = tp;
newTemp->level = level;
for (i = 0; i < HASHSIZE; i++)
{
newTemp->buckets[i] = NULL;
}
//if (tp)
// newTemp->all = tp->all;
return newTemp;
}
struct symbol * install(char *name Table *tpp int level int sclass)
{
//在tp表中添加节点,名字为ID一直install的是p->sym
Table tp = *tpp;
struct entry *p;
int len;
unsigned h = name[0] & (HASHSIZE - 1);
//if (level > 0 && tp->level < level)
//tp = *tpp = table(tp level);
currentTable = tp;
p = (struct entry *) malloc(sizeof(struct entry));
len = strlen(name);
p->sym.name = (char *)malloc(len * sizeof(char));
strcpy(p->sym.name name);
//p->sym.scope = level;
p->sym.up = tp->all; //p的上一个插入的tp->all
p->sym.sclass = sclass;
tp->all = &p->sym;//tp->all就是刚插入的节点,实现了up指向的是上一个插入的节点
p->link = tp->buckets[h];
tp->buckets[h] = p;
return &p->sym;
}
struct symbol * lookup(char *name Table tp) {
struct entry *p;
unsigned h = name[0] & (HASHSIZE - 1);
if (tp == NULL) return NULL;
do
for (p = tp->buckets[h]; p; p = p->link)
{
if (p != NULL && strcmp(name p->sym.name) == 0)
return &p->sym;
}
while ((tp = tp->previous) != NULL);
return NULL;
}
Symbol makeSym(char *text)
{
int len;
Symbol temp = (Symbol)malloc(sizeof(struct symbol));
len = strlen(text);
temp->name = (char *)malloc(len * sizeof(char));
strcpy(temp->name text);
// temp->scope = currentLevel;
return temp;
}
extern void init(Symbol * b) {
// b = (Symbol)malloc(100);
//b = (Symbol *)malloc(500);
for (int i = 0; i < 50; i++) {
b[i] = NULL;
}
//printf(“oh my god“);
} //将buffer初始化为全空
extern void inittemp(Tempid * b) {
// b = (Symbol)malloc(100);
//b = (Symbol *)malloc(500);
for (int i = 0; i < 50; i++) {
b[i] = NULL;
}
//printf(“oh my god“);
} //将buffer初始化为全空
int getlength(int *a int *bint is) {
int temp = 0;
for (int i = 0; i < 50; i++) {
if (a[i] != -1) {
temp++;
b[i] = a[i];
}
}
b[temp] = is;
return temp+1;
}
extern addtemoid(char * idname int idTempid * store) { //将所有的变量存储在一起
Tempid t;
t = (Tempid)malloc(100);
t->id = id;
t->name = (char *)malloc(strlen(idname) + 20);
t->name = idname;
//printf(“hehdathe name is%s“ idname);
for (int i = 0; i < 50; i++) {
if (store[i] == NULL) {
store[i] = t;
break;
}
}
}
extern void addSymbol(Symbol b[] Symbol s) {//向symbolbuffer中加入symvol s
for (int i = 0; i < 50; i++) {
//printf(“kkkkkkk%s“ b[0]);
if (b[i] == NULL) {
// printf(“kkkkkkk%d“i);
//b[i] = (Symbol)makeSym(1);
b[i] = s;
//printf(“i am a test and the id is%id“ s->id);
break;
}
}
}
extern Symbol searchsmbol(Symbol b[] int id) {//返回名字为name的symbol
// Symbol temp = (Symbol)malloc(100);
for (int i = 0; i < 50; i++) {
if (b[i] != NULL) {
if (b[i]->id == id) {
/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10810 2018-01-02 17:06 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\com.c
文件 2573 2018-01-02 11:40 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\com.h
文件 2560 2018-01-02 20:18 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\final.exe
文件 160 2018-01-02 17:10 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\in.txt
..A..H. 46080 2018-01-02 14:08 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\.vs\lasthomework\v14\.suo
文件 923648 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\Debug\lasthomework.exe
文件 1957540 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\Debug\lasthomework.ilk
文件 7016448 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\Debug\lasthomework.pdb
文件 0 2018-01-01 16:17 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\Debug\out.asm
文件 34380 2018-01-02 17:08 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\com.obj
文件 4088 2017-12-14 19:37 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\hello.obj
文件 8288 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.log
文件 11224 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\CL.command.1.tlog
文件 46052 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\CL.read.1.tlog
文件 12318 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\CL.write.1.tlog
文件 208 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\lasthomework.lastbuildstate
文件 5560 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\li
文件 8026 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\li
文件 1632 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\li
文件 15027 2017-12-14 19:56 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lex.obj
文件 14992 2017-12-21 21:06 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lexr.obj
文件 16149 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\mylexer.obj
文件 99207 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\myparser.obj
文件 93319 2017-12-21 21:06 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\syntax.obj
文件 134144 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\vc140.idb
文件 94208 2018-01-02 19:07 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\vc140.pdb
文件 160 2018-01-02 17:10 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\in.txt
文件 193 2018-01-02 13:03 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\in1.txt
文件 74 2018-01-02 11:44 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\in2.txt
文件 96 2018-01-02 13:34 C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\in4.txt
............此处省略29个文件信息
相关资源
- 编译原理课程实验报告词法分析器及
- 编译原理与技术李文生:LR分析法C+
- PL0编译器词法检查与语法分析器
- C语言简化编译器前端 编译原理 LR1
- C-Minus编译器 编译原理实验
- MSVC编译器
- LL1文法
- 现代编译原理C语言描述-高清-完整目
- PIC_MCC18_FULL_3.30编译器.rar
- TINY扩充语言的语法分析(实现 while、
- C/C++编译仿真器
- 编译原理课程设计词法语法分析器
- g++ for win
- Matlab安装MinGW-w64 C/C++ 编译器
- 编译原理课程设计整个项目和报告
- mplabc18编译器(c编译器工具)v3.0免费
- 编译原理LL1语法分析器C++版源代码
- PL/0语言编译器源代码及测试代码
- 编译原理之算符优先算法-迭代法
- 编译原理词法分析器实验报告含源代
- VS2010编译器 vc_stdx86.part2.rar
- 编译原理词法分析器C++版源代码
- IAR环境 官方详细说明 编译器 连接器
- Dev-Cpp 5.4.0
- Microsoft Visual C++ Build Tools
- 现代编译原理-c语言描述虎书
- 合工大编译原理实验报告
- LL1文法消除左递归编译原理mfc实现完
- C-Free 5.0
- picc8.05编译器+注册机完全版+PIC C语言
评论
共有 条评论