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

📄 para.cpp

📁 一个basic语言的编译工具。
💻 CPP
字号:
#include"type.cpp"
#include"calc.cpp"




/*----------------CODE---------------*/

uchar huge*getaword(uchar huge*bp)
{
 uchar huge*p;uchar c,cfi=0;

 while(*bp==' ')bp++;
 if((ulong)bp>=(ulong)BPZ){end=1;return bp;}
 if(*bp=='\n'||*bp==':'){lineend=1;return bp+1;}
 if(*bp==0){end=1;return bp+1;}
 erp=bp;
 if(*bp==0){aword[0]=0;return bp;}
 p=aword;
 if(*bp==','||*bp==';')
 {while(*bp==','||*bp==';')
   *(p++)=*(bp++);
  *p=0;return bp;
 }
 while(*bp!=' '&&*bp!=':'&&*bp!='\n'&&*bp!=0&&*bp!=','&&*bp!=';')
 {
  c=*(bp++);
  if(c=='"')
  {*(p++)=c;
   while(*bp!='"'&&*bp!=0&&*bp!='\n')
    *(p++)=*(bp++);
   if(*bp!='"'){erp=bp;ERR(12);}
   *(p++)=*(bp++);
   continue;
  }
  if(c=='(')
  {cfi=1;
   *(p++)=c;
   for(;;)
   {
    switch(*bp)
    {
     case '(':cfi++;break;
     case ')':cfi--;break;
     case '\n':
     case 0:erp=bp;ERR(12);break;
    }
    *(p++)=*(bp++);
    if(cfi==0)break;
   }
   goto lop;
  }
  {*(p++)=c;continue;}
lop: }
 *p=0;return bp;
}

/*void getaobj()
{register uchar i;
 uchar huge*p,huge*bp,c,cf=0;

 while(*LBP==' '||*LBP=='\n')LBP++;erp=BP-strlen(aline)+(LBP-aline);
 if(*LBP==0){end=1;aword[0]=0;return;}
 p=aword;
 for(;;)
 {
 for(i=0;i<PUNCMAX;i++)
  if(*LBP==PUNC[i]){
   THISIS=i+5;
   return;}

  if(*LBP=='"')
  {
   do {
   if(*LBP=='\n'){er=1;return;}
    *(p++)=*(LBP++);
   }
   while(*LBP!='"');
   *(p++)=*(LBP++);
  }

  if(*LBP=='(')
  {
   for(;;)
   {
    switch(*LBP)
    {
     case '(':cf++;break;
     case ')':cf--;break;
     case 0:;
     case '\n':er=1;return;
    }
    *(p++)=*(LBP++);
    if(cf==0)break;
   }
  }

  if(*LBP==' '||*LBP=='\n'||*LBP==':'||*LBP==0)break;
  *(p++)=*(LBP++);
 }
 *p=0;
 SCANTHEWORD();
}

void getaline()
{uchar huge*bp,huge*p2;
 bp=BP;
 erp=bp;p2=aline;
 while(*bp==' ')bp++;
 if(*bp=='\n'||*bp==':'){THISIS=0;return;}
 if(!isalpha(*bp)&&!isalnum(*bp)&&*bp!='"'&&*bp!='-'&&*bp!='+'){er=2;return;}
 for(;;)
 {
  if(*bp=='"')
  {
   do {
   if(*bp=='\n'){er=1;return;}
   *(p2++)=*(bp++);
   }
   while(*bp!='"');
   *(p2++)=*(bp++);
  }
  if(*bp=='\n'||*bp==':'||*bp==0)break;
  *(p2++)=*(bp++);
 }
 *p2=0;
 BP=bp;
 bp=aline;
}

void SCANTHEWORD()
{uchar far*p;
 p=aword;THISIS=255;
 for(;;)
 {
  while(isalpha(*p)||isalnum(*p))p++;
  switch(*p)
  {
   case '%':if(THISIS==255)THISIS=1;break;
   case '$':
   case '"':if(THISIS==255)THISIS=3;break;
  }
 }
 switch(THISIS

  */

uchar huge*GETBPZ(uchar*s1,uchar*s2,uchar*s3,uchar*s4)
{uchar huge*bp,huge*t,i;
 bp=BP;end=0;
 for(;;)
 {BP=getaword(BP);
  if(aword[0]==0){BP=bp;BPZ=(uchar far*)0xF000FFFF;return BPZ;}
  if(strcmpn(s1,aword)){t=BP;BP=bp;t-=strlen(s1);BPZ=t;return t;}
  if(strcmpn(s2,aword)){t=BP;BP=bp;t-=strlen(s2);BPZ=t;return t;}
  if(strcmpn(s3,aword)){t=BP;BP=bp;t-=strlen(s3);BPZ=t;return t;}
  if(strcmpn(s4,aword)){t=BP;BP=bp;t-=strlen(s4);BPZ=t;return t;}
  if(end){BP=bp;BPZ=(uchar far*)0xF000FFFF;return BPZ;}
  lineend=end=0;
 }
}

void getapara(uchar huge*bpz)
{uchar far*p,huge*tbp;
 tbp=getaword(BP);
 if(isakeywd(aword)){BP=NEXTLINE();THISIS=0;lineend=1;return;}
 BP=tbp;
 if(BP>bpz||lineend||end){THISIS=0;THISIS=0;lineend=1;return;}
 p=aword;THISIS=255;
 if(aword[0]==0){THISIS=0;return;}
 while(isalpha(*p)||isalnum(*p))p++;
 switch(*p)
 {
  case '%':if(THISIS==255)THISIS=1;break;
  case '$':
  case '"':if(THISIS==255)THISIS=3;break;
  case ';':THISIS=6;break;
  case ',':THISIS=7;break;
 }
 switch(THISIS)
 {
  case 255:THISIS=2;THISISAFLOAT=CALC(aword);break;
  case 1:THISISAINT=CALC(aword);break;
  case 2:break;
  case 3:CALCSTR(aword);break;
 }
}

uchar far*CALCSTR(uchar far*a)
{register uchar*p;
 if(*a=='"')a++;
  else{dellastchar(aword);strcpy(aword,var.GETSVAR(aword));}
 strcpy(THISISASTR,a);
 p=THISISASTR;
 while(*p)p++;
 if(*(p-1)=='"')*(p-1)=0;
 return THISISASTR;
}

⌨️ 快捷键说明

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