资源简介

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\link.command.1.tlog

     文件       8026  2018-01-02 19:07  C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\link.read.1.tlog

     文件       1632  2018-01-02 19:07  C实现一个编译器-编译原理南开大学的编译原理期末作业\1511250-刘同同-编译原理\lasthomework\lasthomework\Debug\lasthomework.tlog\link.write.1.tlog

     文件      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个文件信息

评论

共有 条评论