亚洲欧美第一页_禁久久精品乱码_粉嫩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久久久久久| 日韩视频不卡中文| 国产馆精品极品| 中文字幕一区三区| 欧美四级电影网| 日本视频在线一区| 中文字幕欧美区| 一本大道久久a久久精品综合| 亚洲一区二区高清| 日韩情涩欧美日韩视频| youjizz国产精品| 午夜精品爽啪视频| 久久精品免费在线观看| 一本色道综合亚洲| 日韩精品电影一区亚洲| 久久蜜桃av一区二区天堂 | 成人教育av在线| 亚洲精品免费电影| 精品国产精品网麻豆系列| av在线综合网| 日本成人在线不卡视频| 久久精品亚洲乱码伦伦中文| 一本一道久久a久久精品| 久久不见久久见免费视频7| 亚洲欧美在线另类| 91精品国产一区二区三区| 国产99久久久久久免费看农村| 一区二区三区成人在线视频| 欧美成人三级在线| 色琪琪一区二区三区亚洲区| 久久99精品久久久久婷婷| 亚洲精品你懂的| 国产日产欧美精品一区二区三区| 欧美日韩激情一区二区三区| 国产99精品在线观看| 水蜜桃久久夜色精品一区的特点| 国产精品久久久久久久久快鸭| 日韩亚洲欧美高清| 色网综合在线观看| 国产激情视频一区二区在线观看| 午夜影院在线观看欧美| 中文字幕一区二区三区视频| 欧美大片一区二区| 欧美日韩视频在线第一区 | 中文字幕一区av| 日韩欧美中文字幕公布| 在线视频你懂得一区二区三区| 国产综合久久久久久久久久久久 | 亚洲成人中文在线| 欧美国产乱子伦| 久久亚洲综合av| 91精品国产欧美日韩| 色香蕉久久蜜桃| 成人毛片视频在线观看| 国产精品一品视频| 国产一区二区在线观看视频| 日韩高清一级片| 五月天丁香久久| 亚洲综合视频在线观看| 亚洲色图另类专区| 国产精品午夜久久| 久久婷婷国产综合国色天香| 欧美变态tickling挠脚心| 91精品国产综合久久香蕉的特点| 欧美性猛交xxxx乱大交退制版| 一本一本大道香蕉久在线精品 | 精品一区二区久久久| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩黄色一区二区| 91久久国产最好的精华液| 91在线视频播放| 91色婷婷久久久久合中文| 不卡一区二区三区四区| 成人h动漫精品| av电影一区二区| 成人av在线电影| eeuss鲁一区二区三区| 成人性生交大片免费看在线播放 | 国产精品一级在线| 成人久久久精品乱码一区二区三区 | 美腿丝袜亚洲三区| 麻豆国产欧美一区二区三区| 久久国产麻豆精品| 国产精品系列在线播放| 99视频精品全部免费在线| 色综合久久久久久久| 欧美精品在线一区二区三区| 91麻豆精品91久久久久同性| 日韩午夜三级在线| 久久综合狠狠综合久久激情| 国产精品日日摸夜夜摸av| 亚洲欧美日韩系列| 日韩精品乱码免费| 国产一区二区日韩精品| 成人一区在线看| 欧亚洲嫩模精品一区三区| 日韩一卡二卡三卡| 日本一区二区动态图| 亚洲精品成人在线| 奇米精品一区二区三区四区 | 成人午夜又粗又硬又大| 91视视频在线直接观看在线看网页在线看| 99视频精品在线| 欧美午夜精品久久久久久超碰 | 精品国产一二三区| 欧美激情艳妇裸体舞| 一区二区日韩av| 国内久久精品视频| 北条麻妃国产九九精品视频| 欧美精品aⅴ在线视频| 久久精品夜夜夜夜久久| 亚洲香肠在线观看| 国产精品亚洲专一区二区三区| 91在线观看视频| 亚洲精品一区二区三区四区高清| 亚洲视频在线观看三级| 麻豆国产一区二区| 色综合久久九月婷婷色综合| 精品奇米国产一区二区三区| 亚洲美女免费视频| 韩国视频一区二区| 欧美影院午夜播放| 国产色综合一区| 日韩综合在线视频| 99久久久无码国产精品| 欧美不卡一区二区| 亚洲成人第一页| 9色porny自拍视频一区二区| 欧美一区二区大片| 一区二区三区四区激情| 国产黑丝在线一区二区三区| 欧美日韩黄色一区二区| 亚洲欧美电影院| 成人精品免费视频| 日韩一区二区三区四区| 欧美精品一区二区三区蜜桃| 亚洲国产三级在线| aaa国产一区| 久久精品人人做人人综合| 蜜臀av性久久久久蜜臀aⅴ流畅| 91视频在线看| 国产午夜精品福利| 美女www一区二区| 91精品国产欧美一区二区18| 亚洲欧美国产高清| 91小视频免费观看| 国产精品国产三级国产三级人妇| 国产在线视频精品一区| 日韩欧美三级在线| 日韩av网站在线观看| 欧美三级日韩在线| 亚洲不卡av一区二区三区| 在线免费av一区| 亚洲专区一二三| 欧洲亚洲国产日韩| 亚洲综合在线视频| 在线欧美一区二区| 亚洲成人激情自拍| 91精品啪在线观看国产60岁| 午夜欧美大尺度福利影院在线看 | 国产精品一区二区男女羞羞无遮挡| 欧美一卡二卡三卡四卡| 日韩精品电影在线观看| 欧美一卡在线观看| 韩国成人在线视频| 久久精品亚洲精品国产欧美| 国产福利一区二区| 国产精品久久久久永久免费观看| 成人高清免费观看| 中文字幕一区二区三区在线播放| 99精品国产热久久91蜜凸| 亚洲免费av在线| 欧美日韩三级在线| 奇米777欧美一区二区| 2023国产精品自拍| 成人一区二区三区在线观看| 国产精品欧美一级免费| 91丨porny丨中文| 亚洲国产精品欧美一二99| 欧美一级黄色大片| 国产乱码精品一区二区三区五月婷| 国产色综合一区| 色综合久久中文字幕| 亚洲成人av电影在线| 日韩一级完整毛片| 高清免费成人av| 一区二区三区欧美日韩| 欧美一区二区视频在线观看 | 精品第一国产综合精品aⅴ| 国内成人精品2018免费看| 国产欧美日韩三区| 在线欧美日韩国产| 久88久久88久久久| 亚洲欧美激情插| 欧美videos中文字幕| av午夜一区麻豆|