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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? yabasic.c

?? 很簡(jiǎn)單的編譯器!不過(guò)最重要的是思想!
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
  b=pop();
  if (a->type!=stSTRING || b->type!=stSTRING) {
    error(FATAL,"Need strings to concat");
    return;
  }
  aa=a->pointer;
  bb=b->pointer;
  cc=(char *) my_malloc(sizeof(char)*(strlen(aa)+strlen(bb)+1));
  strcpy(cc,bb);
  strcat(cc,aa);
  c=push();
  c->type=stSTRING;
  c->pointer=cc;
}  


void create_pushstr(char *s) /* creates command pushstr */
{
  struct command *cmd;
	
  cmd=add_command(cPUSHSTR);
  cmd->pointer=my_strdup(s); /* store string */
}


void pushstr(struct command *cmd) 
{
  /* push string onto stack */
  struct stackentry *p;
	
  p=push();
  p->pointer=my_strdup((char *)cmd->pointer);
  p->type=stSTRING;
}


void create_goto(char *label) /* creates command goto */
{
  struct command *cmd;
	
  cmd=add_command(cGOTO);
  /* specific info */
  cmd->pointer=my_strdup(label);
}


void create_gosub(char *label) /* creates command gosub */
{
  struct command *cmd;
	
  cmd=add_command(cGOSUB);
  /* specific info */
  cmd->pointer=my_strdup(label);
}


void jump(struct command *cmd) 
     /* jump to specific Label; used as goto or gosub */
{
  struct command *curr;
  struct stackentry *ret;
  int type;
	
  type=cmd->type;
  if (type==cQGOSUB || type==cGOSUB) {
    ret=push();
    ret->pointer=current;
    ret->type=stRETADD;
  }
  if (type==cQGOSUB || type==cQGOTO) {
    current=(struct command *)cmd->pointer;
    return;
  }
  curr=cmdroot;
  while(curr!=cmdhead) {   /* go through all commands */
    if (curr->type==cLABEL && !strcmp(curr->pointer,cmd->pointer)) {
      /* found right Label ! */
      current=curr; /* jump to new location */
      /* use the address instead of the name next time ! */
      cmd->pointer=curr;
      cmd->type=(type==cGOTO) ? cQGOTO:cQGOSUB; /* quick jump from now on */
      return;
    }
    curr=curr->next;
  }
  /* label not found */
  sprintf(string,"Can't find label '%s'",(char *)cmd->pointer);
  error(ERROR,string);
}

void myreturn() /* return from gosub */
{
  struct stackentry *address;
	
  address=pop();
  if (address->type!=stRETADD) {
    error(ERROR,"RETURN without GOSUB");
    return;
  }
  current=(struct command *)address->pointer;
  return;
}


void create_label(char *label) /* creates command label */
{
  struct command *cmd,*curr;
	
  /* check, if label is duplicate */
  curr=cmdroot;
  while(curr!=cmdhead) {   /* go through all commands */
    if (curr->type==cLABEL && !strcmp(curr->pointer,label)) {
      /* found duplicate Label ! */
      sprintf(string,"duplicate label '%s'",(char *)curr->pointer);
      error(ERROR,string);
      return;
    }
    curr=curr->next;
  }
	
  cmd=add_command(cLABEL);
  /* store label */
  cmd->pointer=my_strdup(label);
}


void skipper()
     /* used for on_goto/gosub, skip specified number of commands */
{
  int i,len;
  struct command *ahead; /* command to follow */
	
  len=(int)pop()->value;
  i=1;
  current=current->next; /* advance to first goto/gosub */
  for(i=1;i<len;i++) {
    ahead=current->next->next; /* skip interleaving findnop statement */
    if (ahead->type==cNOP) 
      break;
    else
      current=ahead;
  }
}


void skiponce(struct command *cmd) /* skip next command exectly once */
{
  if (cmd->tag) current=current->next;
  cmd->tag=0;
}


void resetskiponce(struct command *cmd) /* find and reset next skip */
{
  struct command *c;
  
  c=cmd;
  while(c->type!=cSKIPONCE) c=c->next;
  c->tag=1;
}


void findnop()
     /* used for on_gosub, find trailing nop command */
{
  while(current->type!=cNOP) {
    current=current->next; /* next label */
  }
}


void create_print(char type) /* create command 'print' */
{
  struct command *cmd;
	
  cmd=add_command(cPRINT);
  cmd->pointer=my_malloc(sizeof(int));
  /* store type of print  */
  cmd->tag=type;
}


void print(struct command *cmd) /* print on screen */
{
  int type;
  struct stackentry *p,*q;
  static int last='n';
  char *s;
#ifdef UNIX
  int x,y;
#endif

  type=cmd->tag;
  switch(type) {
  case 'n':  /* print newline */
    if (curinized && coutstr==stdout) {
#ifdef WINDOWS
      printf("\n");
      break;
#else
      getyx(stdscr,y,x);
      if (y>=LINES-1) {
	scrl(1);
	y=y-1;
      }
      move(y+1,0);
      refresh();
      break;
#endif
    } else {
      string[0]='\n';
      string[1]='\0';
    }
    onestring(string);
    break;
  case 'd':  /* print double value */
    p=pop();
    sprintf(string,"%s%g",(last=='d')?" ":"",p->value);
    onestring(string);
    break;
  case 'u':
    p=pop();
    q=pop();
    type='d';
    s=string;
    if (last=='d') {
      *s=' ';
      s++;
    }
    if (!myformat(s,q->value,p->pointer)) {
      sprintf(string,"'%s' is not a valid format",(char *)p->pointer);
      error(ERROR,string);
      break;
    }
    onestring(string);
    break;
  case 's': 
    p=pop();
    onestring((char *)p->pointer);
    break;
  }
  last=type;
}


void mymove() /* move to specific position on screen */
{
  int x,y;
#ifdef WINDOWS
  COORD coord;
#endif
	
  y=(int)pop()->value;
  if (y<0) y=0;
  if (y>LINES-1) y=LINES-1;
  x=(int)pop()->value;
  if (x<0) x=0;
  if (x>COLS-1) x=COLS-1;
  if (!curinized) {
    error(ERROR,"need to call 'clear screen' first");
    return;
  }
#ifdef UNIX
  move(y,x);
  refresh();
#else
  coord.X=x;
  coord.Y=y;
  SetConsoleCursorPosition(ConsoleOutput,coord);
#endif
}


void clearscreen() /* clear entire screen */
{
#ifdef WINDOWS
  DWORD written; /* number of chars actually written */
  COORD coord; /* coordinates to start writing */
#endif
	
  if (!curinized) curinit();
#ifdef UNIX
  clear();
  refresh();
#else
  coord.X=0;
  coord.Y=0;
  FillConsoleOutputCharacter(ConsoleOutput,' ',LINES*COLS,
			     coord,&written);
  FillConsoleOutputAttribute(ConsoleOutput,
			     FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,LINES*COLS,
			     coord,&written);
  SetConsoleCursorPosition(ConsoleOutput,coord);
#endif
}


void curinit() /* initialize curses */
{
#ifdef WINDOWS
  CONSOLE_SCREEN_BUFFER_INFO coninfo; /* receives console size */
#endif
	
#ifdef UNIX
  initscr();
  setscrreg(0,LINES);
  scrollok(stdscr,TRUE);
  def_prog_mode();
  keypad(stdscr,TRUE);
#else
  GetConsoleScreenBufferInfo(ConsoleOutput,&coninfo);
  COLS=coninfo.dwSize.X;
  LINES=coninfo.dwSize.Y;
#endif
  curinized=TRUE;
}


char *replace(char *string) /* replace \n,\a, etc. */
{
  char *from,*to;
	
  from=to=string;
  while(*from) {
    if (*from=='\\') {
      from++;
      switch(*from) {
      case 'n':	*to='\n';break;
      case 't':	*to='\t';break;
      case 'v':	*to='\v';break;
      case 'b':	*to='\b';break;
      case 'r':	*to='\r';break;
      case 'f':	*to='\f';break;
      case 'a':	*to='\a';break;
      case '\\': *to='\\';break;
      case '\?': *to='\?';break;
      case '\'': *to='\'';break;
      case '\"': *to='\"';break;
      default:
	*to='\\';
	to++;
	*to=*from;
      }
    }
    else
      *to=*from;
    from++;
    to++;
  }
  *to='\0';
  return string;
}


void create_myopen(double stream,int num) /* create command 'myopen' */
{
  struct command *cmd;
	
  if (badstream((int)stream)) return;
  cmd=add_command(cOPEN);
  cmd->args=(int) stream;
  cmd->tag=num;
}


void myopen(struct command *cmd) /* open specified file for given name */
{
  FILE *handle;
  int stream;
  char *name;
  char *mode;
  char **pmode;
  static char *valid_modes[]={"r","w","a","rb","wb","ab",""};

	
  if (cmd->tag==3)
    mode=pop()->pointer;
  else 
    mode="a";
  name=pop()->pointer;
  stream=cmd->args;
  if (streams[stream]!=NULL) {
    error(ERROR,"Stream already in use");
    return;
  }
  for(pmode=valid_modes;**pmode;pmode++) if (!strcmp(*pmode,mode)) break;
  if (!**pmode) {
    sprintf(string,"\'%s\' is not a valid filemode",mode);
    error(ERROR,string);
    return;
  }
	
  handle=fopen(name,mode);
  if (handle==NULL) {
    sprintf(string,"Could not open '%s'",name);
    error(ERROR,string);
    return;
  }
  streams[stream]=handle;
}


void create_myclose(double stream) /* create command 'myclose' */
{
  struct command *cmd;
	
  if (badstream((int)stream)) return;
  cmd=add_command(cCLOSE);
  cmd->args=(int) stream;
  return;
}


void myclose(struct command *cmd) /* close the specified stream */
{
  int s;
	
  s=cmd->args;
  if (streams[s]==NULL) {
    sprintf(string,"Stream %d already closed",s);
    error(WARNING,string);
    return;
  }
  fclose(streams[s]);
  streams[s]=NULL;
}


void create_myswitch(int stream) /* create command myswitch */
{
  struct command *cmd;
	
  if (stream!=0 && badstream((int)stream)) return;
  cmd=add_command(cSWITCH);
  cmd->args=stream;
}


void myswitch(struct command *cmd) /* switch to specified stream */
{
  int stream;
	
  stream=cmd->args;
  if (stream==0) {
    cinstr=stdin;
    coutstr=stdout;
  }
  else  {
    cinstr=streams[stream]; /* switch to stream */
    coutstr=cinstr;
    if (streams[stream]==NULL) {
      sprintf(string,"Stream %d not opened",stream);
      error(ERROR,string);
      return;
    } 
  }
  return;
}


void create_testeof(double stream) /* create command 'testeof' */
{
  struct command *cmd;
	
  if (badstream((int)stream)) return;
  cmd=add_command(cTESTEOF);
  cmd->args=(int) stream;
  return;
}


void testeof(struct command *cmd) /* close the specified stream */
{
  int s,c;
  struct stackentry *result;
	
  s=cmd->args;
  result=push();
  result->type=stNUMBER;
  if (streams[s]==NULL) {
    result->value=TRUE;
    return;
  }
  c=getc(streams[s]);
  if (c==EOF) {
    result->value=TRUE;
    return;
  }
	
  result->value=FALSE;
  ungetc(c,streams[s]);
  return;
}


int badstream(int stream) /* test for valid stream id */
{
  int max;
	
  max=(FOPEN_MAX-3<9)?FOPEN_MAX-3:9;
  if (stream>max || stream<1) {
    sprintf(string,"Can handle only streams from 1 to %d",max);
    error(ERROR,string);
    return TRUE;
  }
  return FALSE;
}


void create_myread(char type,int rl) /* create command 'read' */
{
  struct command *cmd;
	
  cmd=add_command(cREAD);
  cmd->args=rl; /* true, if read should go til eol */
  cmd->tag=type; /* can be 'd' or 's' */
}


void myread(struct command *cmd) /* read string or double */
{
  double d;
  char buffer[INBUFFLEN]; /* buffer with current input */
  int numread; /* number of bytes read */
  int tileol; /* true, if read should go til end of line */
  struct stackentry *s;
  int currch; /* current character */
	
  numread=0; /* no chars read'til now */
  buffer[0]='\0';
  tileol=cmd->args;
	
  /* skip leading whitespace */
  if (!tileol) {
    do {
      currch=onechar();
    } while(currch==' ' || currch=='\t');
    /* put back last char */
    if (currch!=EOF && currch!='\0') backchar(currch);
    if (currch=='\0' || currch==EOF) goto done;
  }      
	
  /* read chars */
  do {
    currch=onechar();
    buffer[numread]=currch;
    numread++;
  } while(((tileol && currch!='\0') ||

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本青草视频在线怡红院 | 久久久国产精华| 久久久91精品国产一区二区精品| 久久精品人人做| 亚洲精品v日韩精品| 日韩专区欧美专区| 国产91在线观看| 欧美亚洲国产一区在线观看网站| 欧美成人精品福利| 国产精品国产a级| 视频在线观看91| 国产成人av在线影院| 欧美在线免费视屏| 精品免费日韩av| 最新日韩在线视频| 奇米影视一区二区三区小说| 99在线热播精品免费| 777欧美精品| 国产精品久久久一区麻豆最新章节| 亚洲大片免费看| 成人午夜电影小说| 日韩免费福利电影在线观看| 亚洲免费在线看| 国产一区二区三区四区五区美女| 欧美性高清videossexo| 国产丝袜欧美中文另类| 日韩激情一二三区| 色婷婷av一区二区| 欧美激情自拍偷拍| 奇米色777欧美一区二区| 色婷婷av一区二区| 国产视频一区二区在线观看| 青青草一区二区三区| 色诱视频网站一区| 欧美激情一区二区三区不卡 | 欧美日韩卡一卡二| 中文字幕成人av| 紧缚捆绑精品一区二区| 欧美日韩国产成人在线91| 中文字幕免费不卡在线| 久久激五月天综合精品| 欧美日韩免费高清一区色橹橹| 国产精品久久久久久久久搜平片| 麻豆精品一区二区三区| 欧美日韩国产美| 亚洲乱码国产乱码精品精98午夜 | 久久免费偷拍视频| 蜜桃av一区二区在线观看| 欧美性猛片aaaaaaa做受| 最新高清无码专区| 国产成人综合亚洲网站| 日韩视频免费观看高清完整版| 亚洲国产裸拍裸体视频在线观看乱了| voyeur盗摄精品| 亚洲国产精品成人久久综合一区| 激情五月婷婷综合| 日韩免费高清电影| 男男gaygay亚洲| 91精品国产一区二区| 午夜视频在线观看一区| 欧美日韩专区在线| 亚洲午夜久久久久中文字幕久| 色妹子一区二区| 亚洲欧美日韩久久| 一本一道久久a久久精品| 国产精品精品国产色婷婷| 成人精品一区二区三区中文字幕| 国产日韩欧美一区二区三区综合| 国产精品一区二区三区99| 久久这里只有精品6| 国产高清无密码一区二区三区| 欧美精品一区二区三区蜜臀| 国产在线精品一区二区夜色| 欧美成人a视频| 国产九色精品成人porny| ww亚洲ww在线观看国产| 国产乱码精品一区二区三区av | 国产成人aaaa| 国产精品女同一区二区三区| 不卡在线观看av| 中文字幕一区二区三中文字幕| 成人av资源站| 一区二区成人在线观看| 欧美日韩国产小视频| 日韩国产欧美在线播放| 欧美大片顶级少妇| 国产精品性做久久久久久| 国产精品天美传媒沈樵| 91丨porny丨中文| 午夜精品久久久久| 日韩美女一区二区三区| 国产99久久久国产精品免费看| 亚洲欧洲日韩综合一区二区| 欧美丝袜第三区| 蜜桃视频一区二区| 国产女人18毛片水真多成人如厕| 96av麻豆蜜桃一区二区| 五月婷婷综合在线| 久久无码av三级| 色婷婷亚洲婷婷| 日本vs亚洲vs韩国一区三区 | 成人丝袜视频网| 亚洲女人****多毛耸耸8| 欧美精品色一区二区三区| 精品在线观看视频| 成人欧美一区二区三区1314| 欧美日韩高清不卡| 国产美女在线精品| 一区二区三区不卡在线观看| 欧美一区二区免费观在线| 国产成人精品影视| 亚洲成人av一区| 久久久不卡网国产精品二区| 色乱码一区二区三区88| 精品一区二区三区久久| 1024成人网| 欧美成人a∨高清免费观看| 色综合久久88色综合天天免费| 免费高清视频精品| 亚洲乱码国产乱码精品精的特点| 欧美成人a视频| 色88888久久久久久影院按摩| 精品一区二区三区在线播放| 亚洲激情在线播放| 久久综合色婷婷| 欧美三片在线视频观看| 成人一道本在线| 麻豆精品精品国产自在97香蕉| 亚洲人成人一区二区在线观看| 欧美videos大乳护士334| 色呦呦国产精品| 国产91丝袜在线18| 日本不卡一区二区| 亚洲美女视频在线| 久久先锋影音av| 91麻豆精品国产91久久久资源速度 | 91在线观看高清| 精彩视频一区二区| 亚洲3atv精品一区二区三区| 亚洲欧美综合另类在线卡通| xnxx国产精品| 日韩欧美在线综合网| 日本韩国精品在线| 成人免费毛片高清视频| 美女视频黄a大片欧美| 一区二区三区四区蜜桃| 中日韩av电影| 日韩一区和二区| 欧美日韩国产综合视频在线观看| av亚洲精华国产精华精| 国产精品资源在线| 美腿丝袜亚洲三区| 水蜜桃久久夜色精品一区的特点| 一区二区三区美女视频| 中文字幕中文字幕在线一区 | 成人永久免费视频| 激情五月婷婷综合| 麻豆91精品91久久久的内涵| 国产成人免费在线| 日韩国产欧美在线视频| 亚洲国产wwwccc36天堂| 夜夜嗨av一区二区三区中文字幕| 国产精品理伦片| 中文字幕不卡三区| 国产日韩精品一区二区三区| 久久亚洲春色中文字幕久久久| 日韩欧美一级二级三级久久久| 4438x亚洲最大成人网| 欧美久久久一区| 欧美日韩精品一区二区三区四区| 色综合久久综合中文综合网| 99久久精品免费| 99久久99久久综合| 99re这里只有精品首页| 99在线精品免费| 91亚洲精品久久久蜜桃| 97久久超碰国产精品| 99久久精品国产精品久久| jlzzjlzz亚洲日本少妇| 91丨九色丨蝌蚪丨老版| 99视频国产精品| 日本久久一区二区| 欧美性视频一区二区三区| 欧美亚洲高清一区二区三区不卡| 欧美午夜精品久久久久久孕妇| 欧美日韩亚洲综合在线| 6080yy午夜一二三区久久| 91精品国产综合久久精品图片 | 免费成人结看片| 国内精品嫩模私拍在线| 国产一区二区女| 成人的网站免费观看| 色婷婷综合视频在线观看| 欧美性大战久久久久久久蜜臀| 欧美色国产精品| 欧美一区二区三区电影| 精品国产制服丝袜高跟| 国产午夜精品一区二区| 亚洲免费观看在线观看| 午夜影院久久久|