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 + -
显示快捷键?