⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.c

📁 雏形java的解释器源码。配合flex和bison可以工作
💻 C
📖 第 1 页 / 共 2 页
字号:
EXP *makeEXPintconst(int intconst){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = intconstK;  e->val.intconstE = intconst;  return e;}EXP *makeEXPboolconst(int boolconst){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = boolconstK;  e->val.boolconstE = boolconst;  return e;}EXP *makeEXPcharconst(char charconst){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = charconstK;  e->val.charconstE = charconst;  return e;}EXP *makeEXPstringconst(char *stringconst){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = stringconstK;  e->val.stringconstE = stringconst;  return e;}EXP *makeEXPnull(){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = nullK;  return e;}EXP *makeEXPcast(char *left, EXP *right){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = castK;  e->val.castE.left = left;  e->val.castE.right = right;  return e;}EXP *makeEXPcharcast(EXP *charcast){ EXP *e;  e = NEW(EXP);  e->lineno = lineno;  e->tostring = 0;  e->kind = charcastK;  e->val.charcastE = charcast;  return e;}RECEIVER *makeRECEIVERobject(EXP *object){ RECEIVER *r;  r = NEW(RECEIVER);  r->lineno = lineno;  r->kind = objectK;  r->objectR = object;  return r;}RECEIVER *makeRECEIVERsuper(){ RECEIVER *r;  r = NEW(RECEIVER);  r->lineno = lineno;  r->kind = superK;  return r;}ARGUMENT *makeARGUMENT(EXP *exp, ARGUMENT *next){ ARGUMENT *a;  a = NEW(ARGUMENT);  a->exp = exp;  a->next = next;  return a;}CODE *makeCODEnop(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = nopCK;  c->visited = 0;  c->next = next;  return c;}CODE *makeCODEi2c(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = i2cCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEnew(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = newCK;  c->visited = 0;  c->val.newC = arg;  c->next = next;  return c;} CODE *makeCODEinstanceof(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = instanceofCK;  c->visited = 0;  c->val.instanceofC = arg;  c->next = next;  return c;}CODE *makeCODEcheckcast(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = checkcastCK;  c->visited = 0;  c->val.checkcastC = arg;  c->next = next;  return c;} CODE *makeCODEimul(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = imulCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEineg(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = inegCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEirem(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = iremCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEisub(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = isubCK;  c->visited = 0;  c->next = next;  return c;}CODE *makeCODEidiv(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = idivCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEiadd(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = iaddCK;  c->visited = 0;  c->next = next;  return c;}CODE *makeCODEiinc(int offset, int amount, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = iincCK;  c->visited = 0;  c->val.iincC.offset = offset;  c->val.iincC.amount = amount;  c->next = next;  return c;}CODE *makeCODElabel(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = labelCK;  c->visited = 0;  c->val.labelC = label;  c->next = next;  return c;} CODE *makeCODEgoto(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = gotoCK;  c->visited = 0;  c->val.gotoC = label;  c->next = next;  return c;} CODE *makeCODEifeq(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ifeqCK;  c->visited = 0;  c->val.ifeqC = label;  c->next = next;  return c;} CODE *makeCODEifne(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ifneCK;  c->visited = 0;  c->val.ifneC = label;  c->next = next;  return c;} CODE *makeCODEif_acmpeq(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_acmpeqCK;  c->visited = 0;  c->val.if_acmpeqC = label;  c->next = next;  return c;} CODE *makeCODEif_acmpne(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_acmpneCK;  c->visited = 0;  c->val.if_acmpneC = label;  c->next = next;  return c;}CODE *makeCODEifnull(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ifnullCK;  c->visited = 0;  c->val.ifnullC = label;  c->next = next;  return c;}CODE *makeCODEifnonnull(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ifnonnullCK;  c->visited = 0;  c->val.ifnonnullC = label;  c->next = next;  return c;} CODE *makeCODEif_icmpeq(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpeqCK;  c->visited = 0;  c->val.if_icmpeqC = label;  c->next = next;  return c;} CODE *makeCODEif_icmpgt(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpgtCK;  c->visited = 0;  c->val.if_icmpgtC = label;  c->next = next;  return c;} CODE *makeCODEif_icmplt(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpltCK;  c->visited = 0;  c->val.if_icmpltC = label;  c->next = next;  return c;} CODE *makeCODEif_icmple(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpleCK;  c->visited = 0;  c->val.if_icmpleC = label;  c->next = next;  return c;} CODE *makeCODEif_icmpge(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpgeCK;  c->visited = 0;  c->val.if_icmpgeC = label;  c->next = next;  return c;} CODE *makeCODEif_icmpne(int label, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = if_icmpneCK;  c->visited = 0;  c->val.if_icmpneC = label;  c->next = next;  return c;} CODE *makeCODEireturn(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ireturnCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEareturn(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = areturnCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEreturn(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = returnCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEaload(int arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = aloadCK;  c->visited = 0;  c->val.aloadC = arg;  c->next = next;  return c;}CODE *makeCODEastore(int arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = astoreCK;  c->visited = 0;  c->val.astoreC = arg;  c->next = next;  return c;} CODE *makeCODEiload(int arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = iloadCK;  c->visited = 0;  c->val.iloadC = arg;  c->next = next;  return c;} CODE *makeCODEistore(int arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = istoreCK;  c->visited = 0;  c->val.istoreC = arg;  c->next = next;  return c;} CODE *makeCODEdup(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = dupCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEpop(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = popCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEswap(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = swapCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEldc_int(int arg, CODE *next){ CODE *c;  c = NEW(CODE);   c->kind = ldc_intCK;   c->visited = 0;  c->val.ldc_intC = arg;   c->next = next;  return c;} CODE *makeCODEldc_string(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = ldc_stringCK;  c->visited = 0;  c->val.ldc_stringC = arg;  c->next = next;  return c;} CODE *makeCODEaconst_null(CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = aconst_nullCK;  c->visited = 0;  c->next = next;  return c;} CODE *makeCODEgetfield(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = getfieldCK;  c->visited = 0;  c->val.getfieldC = arg;  c->next = next;  return c;} CODE *makeCODEputfield(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = putfieldCK;  c->visited = 0;  c->val.putfieldC = arg;  c->next = next;  return c;} CODE *makeCODEinvokevirtual(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = invokevirtualCK;  c->visited = 0;  c->val.invokevirtualC = arg;  c->next = next;  return c;}CODE *makeCODEinvokenonvirtual(char *arg, CODE *next){ CODE *c;  c = NEW(CODE);  c->kind = invokenonvirtualCK;  c->visited = 0;  c->val.invokenonvirtualC = arg;  c->next = next;  return c;} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -