亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? resource.cpp

?? c語言的簡化編譯器
?? CPP
字號:
/* u1comp resource.c
 *
 * History:
 * 30.10.2000 - created, made framework for recursing through tree, ress doublescope
 */
#include "stdafx.h"

#include "resource.h"
#include "error.h"
#include "tree.h"

/* ****************** UTILITY FUNCTIONS ******************** */
extern FUNCTION *funCinit;

int label;
int offset;
int localslimit;

int nextlabel()
{ return label++;
}

int nextoffset()
{ offset++;
  if (offset > localslimit) localslimit = offset;
  return offset;
}

/* **************** RECURSION ********************** */



void resSCRIPTCOLLECTION(SCRIPTCOLLECTION *s)
{
  if(s->toplevels != NULL)
    resTOPLEVEL(s->toplevels);

  if(s->toplevels != NULL)
  {
	offset = 0;
	localslimit = 0;
	label = 0;
    resTOPLEVEL_SIMPLEDECL(s->toplevels);	
	funCinit->localslimit = localslimit + 1;
	funCinit->labelcount = label;
  }
}

void resTOPLEVEL(TOPLEVEL *t)
{
  switch(t->kind){
  case functionK:
    resFUNCTION(t->val.functionT);
    break;
  case programK:
    resPROGRAM(t->val.programT);
    break;
  }

  if(t->next != NULL)
    resTOPLEVEL(t->next);
}

void resTOPLEVEL_SIMPLEDECL(TOPLEVEL *t)
{
  switch(t->kind){
  case simpledeclK:
    resSIMPLEDECL(t->val.decl);
	break;
  }

  if(t->next != NULL)
    resTOPLEVEL_SIMPLEDECL(t->next);
}

void resFUNCTION(FUNCTION *f)
{
  offset = 0;
  localslimit = 0;
  label = 0;
    
  if(f->formals != NULL)
    resDECL(f->formals);
  
  if(f->stms != NULL) 
    resSTM(f->stms);
  
  f->labelcount = label;
  /* +1 because offset is zero-based, but count should be actual number of locals */
  f->localslimit = localslimit+1; 
  

}

void resPROGRAM(PROGRAM *s)
{
  offset = 0;
  localslimit = 0;
  label = 0;
  
  if(s->stms != NULL)
    resSTM(s->stms);
  
  s->labelcount = label;
  s->localslimit = localslimit+1;
  
}

/* chenhongyu, 2004-9-17. */
/* 這里關于全局變量的處理不知是否正確. */
void resSIMPLEDECL(DECL *d)
{
	d->val.simplevarD.offset = nextoffset();
  
    if(d->val.simplevarD.initialization != NULL)
      resEXP(d->val.simplevarD.initialization);	
}


void resDECL(DECL *d)
{
  switch(d->kind){
  case formalK:
    d->val.formalD.offset = nextoffset();
    break;
  case variableK:
    /* at this point no difference because of weeding */
    d->val.variableD.offset = nextoffset();
      
    if(d->val.variableD.initialization != NULL)
      resEXP(d->val.variableD.initialization);
    break;
  case simplevarK:
    
    d->val.simplevarD.offset = nextoffset();
  
    if(d->val.simplevarD.initialization != NULL)
      resEXP(d->val.simplevarD.initialization);
    break;
  }

  if(d->next != NULL)
    resDECL(d->next);
}

void resFORINIT(FORINIT *f)
{
  switch(f->kind){
  case declforinitK:
    /* a declaration like 'int a=0' */
    resDECL(f->val.declforinitF);
    break;
  case expforinitK:
    /* an expression on existing variables 'a=0' */
    resEXP(f->val.expforinitF);
    break;
  }

  if(f->next != NULL)
    resFORINIT(f->next);
}


void resSTM(STM *s)
{
  int baseoffset;
  
  switch(s->kind){
  case skipK:
    break;
  case expK:
    resEXP(s->val.expS);
    break;
  case declstmK:
    resDECL(s->val.declstmS);
    break;
  case returnK:
    if(s->val.returnS.exp != NULL)
      resEXP(s->val.returnS.exp);
    break;
  case ifK:
    s->val.ifS.stoplabel = nextlabel();
    resEXP(s->val.ifS.condition);
    resSTM(s->val.ifS.body);
    break;
  case ifelseK:
    s->val.ifelseS.elselabel = nextlabel();
    s->val.ifelseS.stoplabel = nextlabel();
    resEXP(s->val.ifelseS.condition);
    resSTM(s->val.ifelseS.thenpart);
    resSTM(s->val.ifelseS.elsepart);
    break;
  case whileK:
    s->val.whileS.startlabel = nextlabel();
    s->val.whileS.stoplabel = nextlabel();
    resEXP(s->val.whileS.condition);
    resSTM(s->val.whileS.body);
    break;
  case forK:
    s->val.forS.startlabel = nextlabel();
    s->val.forS.stoplabel = nextlabel();
    resFORINIT(s->val.forS.inits);
    resEXP(s->val.forS.condition);
    resEXP(s->val.forS.updates);
    resSTM(s->val.forS.body);
    break;
  case sequenceK:
    resSTM(s->val.sequenceS.first);
    resSTM(s->val.sequenceS.second);
    break;
  case scopeK:
    /* Notice how we save offset to be able to go back to it */
    baseoffset = offset;
    resSTM(s->val.scopeS.stm);
    offset = baseoffset;
    break;
  case setintK:
    resEXP(s->val.setintS.modelname);
    resEXP(s->val.setintS.nr);
    resEXP(s->val.setintS.val);
    break;
  case sleepK:
    resEXP(s->val.sleepS.time);
    break;
  }
}


void resEXP(EXP *e)
{
  if (e == NULL)
    return;
  
  switch (e->kind) {
  case intconstK:
    break;
  case boolconstK:
    break;
  case stringconstK:
    break;
  case uminusK:
    resEXP(e->val.uminusE);
    break;
  case notK:
    e->val.notE.truelabel = nextlabel();
    e->val.notE.stoplabel = nextlabel();
    resEXP(e->val.notE.exp);
    break;
  case lvalueK:
    break;
  case assignmentK:
    resEXP(e->val.assignmentE.right);
    break;
  case equalsK:
    e->val.equalsE.truelabel = nextlabel();
    e->val.equalsE.stoplabel = nextlabel();
    resEXP(e->val.equalsE.left);
    resEXP(e->val.equalsE.right);
    break;
  case nequalsK:
    e->val.nequalsE.truelabel = nextlabel();
    e->val.nequalsE.stoplabel = nextlabel();
    resEXP(e->val.nequalsE.left);
    resEXP(e->val.nequalsE.right);
    break;
  case lessK:
    e->val.lessE.truelabel = nextlabel();
    e->val.lessE.stoplabel = nextlabel();
    resEXP(e->val.lessE.left);
    resEXP(e->val.lessE.right);
    break;
  case greaterK:
    e->val.greaterE.truelabel = nextlabel();
    e->val.greaterE.stoplabel = nextlabel();
    resEXP(e->val.greaterE.left);
    resEXP(e->val.greaterE.right);
    break;
  case lequalsK:
    e->val.lequalsE.truelabel = nextlabel();
    e->val.lequalsE.stoplabel = nextlabel();
    resEXP(e->val.lequalsE.left);
    resEXP(e->val.lequalsE.right);
    break;
  case gequalsK:
    e->val.gequalsE.truelabel = nextlabel();
    e->val.gequalsE.stoplabel = nextlabel();
    resEXP(e->val.gequalsE.left);
    resEXP(e->val.gequalsE.right);
    break;
  case plusK:
    resEXP(e->val.plusE.left);
    resEXP(e->val.plusE.right);
    break;
  case minusK:
    resEXP(e->val.minusE.left);
    resEXP(e->val.minusE.right);
    break;
  case multK:
    resEXP(e->val.multE.left);
    resEXP(e->val.multE.right);
    break;
  case divK:
    resEXP(e->val.divE.left);
    resEXP(e->val.divE.right);
    break;
  case moduloK:
    resEXP(e->val.moduloE.left);
    resEXP(e->val.moduloE.right);
    break;
  case andK:
    e->val.andE.falselabel = nextlabel();
    resEXP(e->val.andE.left);
    resEXP(e->val.andE.right);
    break;
  case orK:
    e->val.orE.truelabel = nextlabel();
    resEXP(e->val.orE.left);
    resEXP(e->val.orE.right);
    break;
  case callK:
	  /* 是否需要加上針對系統(tǒng)函數(shù)的處理呢? chenhongyu, 2004-9-26. */
    if(e->val.callE.arguments != NULL)
      resEXP(e->val.callE.arguments);
    break;
  case castK:
    resEXP(e->val.castE.exp);
    break;
  } /* end switch */

  if(e->next != NULL)
    resEXP(e->next);
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩综合av| 国产一区二区三区蝌蚪| 久久国产精品色婷婷| jlzzjlzz国产精品久久| 香蕉久久夜色精品国产使用方法 | 国产成人a级片| 91精品欧美久久久久久动漫| 国产精品天天看| 精品中文字幕一区二区小辣椒 | 成人国产精品免费观看视频| 欧美一区二区网站| 亚洲一区二区不卡免费| 99久久精品免费看| 国产精品女同互慰在线看| 国产美女一区二区三区| 欧美一二三区在线观看| 婷婷亚洲久悠悠色悠在线播放| 99久久久无码国产精品| 国产精品麻豆一区二区| 国产成人在线视频免费播放| 久久久一区二区| 国产综合久久久久久鬼色| 精品日产卡一卡二卡麻豆| 热久久久久久久| 高清在线成人网| 久久九九国产精品| 国产99久久久国产精品潘金| 久久久精品综合| 看电视剧不卡顿的网站| 精品裸体舞一区二区三区| 麻豆久久久久久久| 欧美第一区第二区| 精品制服美女久久| 久久久午夜电影| 国产成人免费网站| 亚洲天堂精品视频| 91福利在线观看| 亚洲成人免费影院| 欧美一级片免费看| 久久99国内精品| 国产欧美一区二区精品性色超碰| 国产成人午夜视频| 中文字幕一区二区三区不卡| 色综合婷婷久久| 精品国产一区二区三区av性色| 蜜臀av性久久久久蜜臀av麻豆| 日韩欧美国产一区二区三区 | 国产亚洲综合色| www.欧美亚洲| 亚洲一级二级在线| 日韩三级视频中文字幕| 国产大陆a不卡| 亚洲免费观看在线视频| 欧美一级久久久久久久大片| 国产一区视频网站| 亚洲乱码中文字幕| 91精品国产高清一区二区三区蜜臀| 日本va欧美va欧美va精品| 久久亚洲捆绑美女| 色天天综合色天天久久| 日韩中文字幕麻豆| 国产精品无圣光一区二区| 欧美亚洲动漫精品| 国产伦理精品不卡| 亚洲伊人伊色伊影伊综合网| 精品久久久久久久一区二区蜜臀| 成人黄页在线观看| 男男gaygay亚洲| 国产精品盗摄一区二区三区| 欧美电影在哪看比较好| 国产成人精品免费在线| 亚洲成人777| 国产精品久久久久一区 | 欧美日韩亚洲综合在线| 国产一区二区导航在线播放| 亚洲一区二区四区蜜桃| 国产欧美日韩综合| 日韩午夜在线播放| 在线免费不卡电影| bt7086福利一区国产| 美女www一区二区| 亚洲麻豆国产自偷在线| 国产欧美日韩久久| 日韩午夜av电影| 欧美调教femdomvk| 97se亚洲国产综合自在线| 久久超级碰视频| 日本v片在线高清不卡在线观看| 中文天堂在线一区| 久久精品网站免费观看| 欧美一区二区免费| 欧美特级限制片免费在线观看| 岛国精品在线播放| 麻豆精品一区二区三区| 亚洲va欧美va人人爽午夜| 亚洲女与黑人做爰| 国产精品九色蝌蚪自拍| 中文字幕巨乱亚洲| 久久精品一区八戒影视| 欧美精品一区二区在线观看| 在线综合视频播放| 欧美日韩精品一区二区天天拍小说 | 欧洲一区二区三区免费视频| 成人av电影免费观看| 成人一区在线看| 国产东北露脸精品视频| 国产精品一二三区| 国产一区二区三区av电影 | 天天综合网天天综合色| 夜夜操天天操亚洲| 亚洲精品va在线观看| 一级特黄大欧美久久久| 亚洲精品美国一| 亚洲在线一区二区三区| 亚洲国产精品麻豆| 亚洲一区二区欧美激情| 日韩—二三区免费观看av| 日韩激情av在线| 青椒成人免费视频| 韩国午夜理伦三级不卡影院| 国产乱码精品一区二区三区忘忧草| 国产专区欧美精品| 大白屁股一区二区视频| 99久久精品国产精品久久| 99国产精品视频免费观看| 91成人免费在线视频| 欧美午夜宅男影院| 日韩亚洲欧美中文三级| 337p粉嫩大胆噜噜噜噜噜91av| 2021中文字幕一区亚洲| 国产精品久久久久久久久搜平片| 日韩久久一区二区| 亚洲国产精品一区二区www在线 | 波多野结衣中文字幕一区二区三区| 不卡av在线免费观看| 欧洲视频一区二区| 日韩一级二级三级| 国产精品久久久久一区二区三区| 亚洲激情欧美激情| 看片网站欧美日韩| 99re8在线精品视频免费播放| 欧美日韩中文一区| 精品国产制服丝袜高跟| 亚洲欧洲色图综合| 亚洲sss视频在线视频| 韩国一区二区三区| 日本高清不卡aⅴ免费网站| 日韩精品一区二区三区在线| 国产精品视频一区二区三区不卡| 亚洲制服丝袜一区| 国产麻豆精品95视频| 在线看不卡av| 国产欧美一区二区精品性| 亚洲va中文字幕| av在线播放成人| 日韩欧美久久久| 亚洲一区二区欧美| 成人不卡免费av| 日韩美女天天操| 亚洲综合免费观看高清在线观看| 国产美女主播视频一区| 欧美美女激情18p| 国产精品卡一卡二| 狠狠色狠狠色综合| 欧美三级电影网站| 亚洲天堂免费看| 国产乱码精品一品二品| 5858s免费视频成人| **欧美大码日韩| 国产一区在线视频| 日韩欧美高清一区| 亚洲国产综合在线| 91香蕉视频黄| 欧美激情一区三区| 久久国产尿小便嘘嘘| 欧美日本视频在线| 亚洲成人一区二区| 91久久一区二区| 1区2区3区精品视频| 国产精品一区二区免费不卡 | 大桥未久av一区二区三区中文| 制服丝袜中文字幕一区| 亚洲线精品一区二区三区| 99久久精品国产精品久久| 国产精品视频麻豆| 国产成人av网站| 欧美国产日韩精品免费观看| 国产精品一线二线三线| 精品国产91亚洲一区二区三区婷婷| 日韩高清国产一区在线| 91精品综合久久久久久| 亚洲一区二区偷拍精品| 欧美吻胸吃奶大尺度电影 | 韩国v欧美v日本v亚洲v| 日韩一级黄色片| 久久机这里只有精品| 日韩欧美国产一区二区在线播放| 青青草97国产精品免费观看 | 亚洲成人资源网| 欧美撒尿777hd撒尿|