bastype.cpp
来自「一个basic语言的编译工具。」· C++ 代码 · 共 236 行
CPP
236 行
#include"type.cpp"
#ifndef bastype
#define bastype
/*----------------CLASS-------------------*/
struct edits
{
uint len,first,now,fl;
uchar x,y;
uint aline[26];
uchar huge*t;
uchar fn[80];
};
class cur
{
public:
uint cx,cy,cc;
void savecur();
void storecur();
};
class EDIT
{
private:
uchar ISCH;
uint XL;
uint XO;
uint YO;
uchar ISNAMED;
void ADCUR(int);
void makenl();
void UPCUR();
void DNCUR();
void LTCUR();
void RTCUR();
void DEL();
void END();
void HOME();
void CHOME();
void CEND();
void CY();
void SETXL(uint);
void SETYL(uint);
void INSCHAR(uchar);
uchar SVEDIT(uchar);
void OPENFILE();
void SVP(uchar);
void LCP();
void REN();
void NEW();
void READFILE();
uchar QUIT();
void GETFN(uchar*fn,char*t);
public:
struct edits e;
uint YL;
uchar FL;
EDIT(){ISCH=0,XL=78,YL=21,XO=2,YO=3,FL=0;};
void NAMED(uchar n){ISNAMED=n;}
void PGUP();
void PGDN();
uchar LDEDIT(uchar*fn);
void DRAW();
void createdit(uchar far*fn);
uchar edit();
void dispedit();
};
class VAR
{
private:
dosmem INTVARNAME/*(256)*/,FLOATVARNAME/*512*/,STRVARNAME/*512*/;
dosmem INTDATA/*32*/,FLOATDATA/*128*/,STRDATA/*32*/;
int far*INTVAR;float far*FLOATVAR; /* int 256 float 512*/
uchar far*STRVAR;
public:
int IVMAX,FVMAX,SVMAX;
VAR():INTVARNAME(256),FLOATVARNAME(512),INTDATA(32),FLOATDATA(128),
STRVARNAME(512),STRDATA(32)
{IVMAX=0;FVMAX=0;SVMAX=0;
INTVAR=(int far*)INTDATA.p;
FLOATVAR=(float far*)FLOATDATA.p;
STRVAR=STRDATA.p;
}
uchar VAR::SETFVAR(uchar a[],float x);
uchar VAR::SETIVAR(uchar a[],int x);
uchar VAR::SETSVAR(uchar a[],uchar far*x);
uchar VAR::VARNUM(uchar a[]);
void VAR::DELFVAR(uchar a[]);
void VAR::DELIVAR(uchar a[]);
void VAR::DELSVAR(uchar a[]);
void VAR::CHGFVAR(uchar n,float f);
void VAR::CHGIVAR(uchar n,int f);
void VAR::CHGSVAR(uchar n,uchar far*f);
void VAR::CLEANVAR();
int VAR::GETIVAR(uchar far*fn);
uchar far*VAR::GETSVAR(uchar far*fn);
float VAR::GETFVAR(uchar far*fn);
};
/*------------MAIN------------------------*/
/*****************/
extern uint crc;
extern EDIT ed;extern Stack basstack;
extern uint end,lineend;
extern uchar huge*erp,huge*BP,*BPZ;
extern uchar huge*buf;
extern uchar huge*linename;extern uint huge*lineplace,LN;
extern dosmem linen,linep;
/****************/
void RUN();
void GETS(uchar *a);
void SCANLINE();
uchar isakeywd(uchar far*a);
uchar isnumstr(uchar far*a);
uchar far*ERMS(uchar e);
void run();
uint linenum(uchar far*line);
/*-------------RUN--------------------------*/
/*---------FUNC--------------*/
void PRINT();
void LET(uchar far*varn,uchar far*num);
void INPUT();
void IF();
void GOTO();
void FOR();
void NEXT();
void DIM();
void ERASE();
void GOSUB();
void RETURN();
uchar huge*NEXTLINE();
/*--------------EDIT--------------------------*/
/*-----------------DATA-----------------*/
extern uchar ns[82],nl[170];
extern uchar title[];
/*---------------------------PAPA--------------*/
/*-----------------DATA-----------*/
extern uchar huge*erp,huge*BP;
extern uint end,lineend;extern uchar far*LBP;
extern uchar huge*bp;extern uchar aword[255];
extern uchar THISIS,THISISASTR[256];
extern int THISISAINT;
extern float THISISAFLOAT;
extern uchar aline[255];
/*-----------------FUNC------------*/
void WHATSTHIS(uchar far*a);
uchar far*CALCSTR(uchar far*a);
uchar huge*getaword(uchar huge*bp);
void getaobj();
void SCANTHEWORD();
uchar huge*GETBPZ(uchar*s1,uchar*s2,uchar*s3,uchar*s4);
void getapara(uchar huge*bpz);
/*-------------------CALC--------------*/
/*------------DATA---------------*/
extern VAR var;
extern float unit[30];extern uchar un;
extern char P1,P2;
extern uchar verb[20],verbp[20],vn;
extern uchar fn[30];
extern uchar FUNMAX; /*------*/
extern uchar CF[30],CFI,CALCERR;
extern uchar verbl[20];
extern uchar fname[30][30];
/*------------FUNC---------------*/
void SCAN(uchar a[]);
uchar GETV();
void set(uchar t,uchar n);
float VAL(char p1,char p2);
float CALC(uchar*a);
uchar getverbl(uchar i);
double getarray(uchar a[],uchar*i);
double getarraydat(uchar*a,uint b);
void delarray(uchar a[]);
double cot(double n);
double LOG10(double n);
double LOG(double n);
double SQR(double n);
double INT(double);
double Asin(double);
double Acos(double);
double POW(double,double);
extern double (*fun[30])(double);
void ERR(uchar a);
double getarray(uchar a[],uchar*i);
double getarraydat(uchar*a,ulong b);
uchar creatarray(uchar a[],ulong b);
void setarray(uchar a[],double b);
void setarraydat(uchar a[],ulong b,double d);
void cleanarray();
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?