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

📄 yabasic.h

📁 Linux下VB解释器
💻 H
📖 第 1 页 / 共 2 页
字号:
  cPRINT, cREAD, cRESTORE, cQRESTORE, cONESTRING,	/* i/o operations */  cREADDATA, cDATA, cOPEN, cCHECKOPEN, cCHECKSEEK, cCLOSE, cPUSHSTREAM,      cPOPSTREAM,  cSEEK, cSEEK2, cTESTEOF, cWAIT, cBELL, cMOVE,  cCLEARSCR, cCOLOUR, cCHKPROMPT, cERROR,  cOPENWIN, cDOT, cLINE, cCIRCLE, cTRIANGLE, cTEXT1, cTEXT2, cTEXT3, cCLOSEWIN, cCLEARWIN,	/* grafics */  cOPENPRN, cCLOSEPRN, cMOVEORIGIN, cRECT, cGCOLOUR, cGCOLOUR2,  cGBACKCOLOUR, cGBACKCOLOUR2, cPUTBIT, cPUTCHAR,  cLAST_COMMAND			/* no command, just marks end of list */};enum stackentries{				/* different types of stackentries */  stGOTO, stSTRING, stSTRINGARRAYREF, stNUMBER, stNUMBERARRAYREF, stLABEL,      stRETADD, stRETADDCALL, stFREE, stROOT,  stANY, stSTRING_OR_NUMBER, stSTRING_OR_NUMBER_ARRAYREF,	/* these will never appear on stack but are used to check with pop */  stSWITCH_MARK,		/* used to clean up stack after switch-statement */  stSWITCH_STRING, stSWITCH_NUMBER	/* only used in switch statement, compares true to every string or number */};enum symbols{				/* different types of symbols */  sySTRING, syNUMBER, syFREE, syARRAY};enum function_type{				/* different types of functions */  ftNONE, ftNUMBER, ftSTRING};enum addmodes{				/* different modes for adding symbols */  amSEARCH, amSEARCH_PRE, amADD_LOCAL, amADD_GLOBAL, amSEARCH_VERY_LOCAL};enum states{				/* current state of program */  HATCHED, INITIALIZED, COMPILING, RUNNING, FINISHED};enum yabkeys{				/* recognized special keys */  kERR, kUP, kDOWN, kLEFT, kRIGHT, kDEL, kINS, kCLEAR, kHOME, kEND,  kF0, kF1, kF2, kF3, kF4, kF5, kF6, kF7, kF8, kF9, kF10, kF11, kF12,  kF13, kF14, kF15, kF16, kF17, kF18, kF19, kF20, kF21, kF22, kF23, kF24,  kBACKSPACE, kSCRNDOWN, kSCRNUP, kENTER, kESC, kTAB, kLASTKEY};enum searchmodes{				/* modes for searching labels */  smSUB = 1, smLINK = 2, smLABEL = 4, smGLOBAL = 8};/* ------------- global types ---------------- */struct stackentry{				/* one element on stack */  int type;			/* contents of entry */  struct stackentry *next;  struct stackentry *prev;  void *pointer;		/* multiuse ptr */  double value;			/* double value, only one of pointer or value is used */};/*  symbols are organized as a stack of lists: for every procedure call   a new list is pushed onto the stack; all local variables of this  function are chained into this list. After return from this procedure,  the whole list is discarded and one element is popped from  the stack.*/struct symstack{				/* stack of symbol lists */  struct symbol *next_in_list;  struct symstack *next_in_stack;  struct symstack *prev_in_stack;};struct symbol{				/* general symbol; either variable, string */  int type;  struct symbol *link;		/* points to linked symbol, if any */  struct symbol *next_in_list;	/* next symbol in symbollist */  char *name;			/* name of symbol */  void *pointer;		/* pointer to string contents (if any) */  char *args;			/* used to store number of arguments for functions/array */  double value;};struct command{				/* one interpreter command */  int type;			/* type of command */  int cnt;			/* count of this command */  struct command *prev;		/* link to previous command */  struct command *next;		/* link to next command */  void *pointer;		/* pointer to data */  void *symbol;			/* pointer to symbol (or data within symbol) associated with command */  struct command *jump;		/* pointer to jump destination */  char *name;			/* name of symbol associated with command */  struct command *nextref;	/* next cmd within function referencing a symbol */  struct command *nextassoc;	/* next cmd within within chain of associated commands */  int args;			/* number of arguments for function/array call */  /* or stream number for open/close             */  int tag;			/* char/int to pass some information */  int line;			/* line this command has been created for */  struct libfile_name *lib;	/* associated library */  int switch_id;		/* TRUE, if in switch, FALSE else; used to check gotos */};struct array{				/* data structure for arrays */  int bounds[10];		/* index boundaries */  int dimension;		/* dimension of array */  void *pointer;		/* contents of array */  char type;			/* decide between string- ('s') and double-Arrays ('d') */};struct buff_chain{				/* buffer chain for system-input */  char buff[SYSBUFFLEN + 1];	/* content of buffer */  int len;			/* used length of buff */  struct buff_chain *next;	/* next buffer in chain */};struct libfile_name{				/* used to store library names */  char *l;			/* long version, including path */  int llen;			/* length of l */  char *s;			/* short version */  int slen;			/* length of s */  int lineno;			/* linenumber within file */  struct command *datapointer;	/* data pointer of this library */  struct command *firstdata;	/* first data-command in library */  struct libfile_name *next;	/* next in chain */};/* ------------- function prototypes defined in ... ---------------- *//* main.c */void error (int, char *);	/* reports an error and possibly exits */void error_with_line (int, char *, int);	/* reports an error and possibly exits */void *my_malloc (unsigned);	/* my own version of malloc */void my_free (void *);		/* free memory */char *my_strerror (int);	/* return description of error messages */struct command *add_command (int, char *);	/* get room for new command */void signal_handler (int);	/* handle various signals */char *my_strdup (char *);	/* my own version of strdup */char *my_strndup (char *, int);	/*  own version of strndup */struct libfile_name *new_file (char *, char *);	/* create a new structure for library names */char *dotify (char *, int);	/* add library name, if not already present */char *strip (char *);		/* strip off to minimal name */void do_error (struct command *);	/* issue user defined error */void create_docu (char *);	/* create command 'docu' */extern void add_variables (char *);	/* add pi and e to symbol table */void compile (void);		/* create a subroutine at runtime */void create_execute (int);	/* create command 'cEXECUTE' */void execute (struct command *);	/* execute a subroutine */int isbound (void);		/* check if this interpreter is bound to a program *//* io.c */void checkopen (void);		/* check, if open has been sucessfull */void create_colour (int);	/* create command 'reverse' */void colour (struct command *cmd);	/* switch reverse-printing */void create_print (char);	/* create command 'print' */void print (struct command *);	/* print on screen */void create_myread (char, int);	/* create command 'read' */void myread (struct command *);	/* read from file or stdin */void create_onestring (char *);	/* write string to file */void onestring (char *);	/* write string to file */void chkprompt (void);		/* print an intermediate prompt if necessary */void create_myopen (int);	/* create command 'myopen' */void myopen (struct command *);	/* open specified file for given name */void testeof (struct command *);	/* close the specified stream */void myclose ();		/* close the specified stream */void create_pps (int, int);	/* create command pushswitch or popswitch */void push_switch (struct command *);	/* push current stream on stack and switch to new one */void pop_switch (void);		/* pop current stream from stack and switch to it */void mymove ();			/* move to specific position on screen */void clearscreen ();		/* clear entire screen */char *inkey (double);		/* gets char from keyboard, blocks and doesn磘 print */char *replace (char *);		/* replace \n,\a, etc. *//* graphic.c */void create_openwin (int);	/* create Command 'openwin' */void openwin (struct command *);	/* open a Window */void create_openprinter (int);	/* create command 'openprinter' */void openprinter (struct command *);	/* opens a printer for WIN95 */void closeprinter (void);	/* closes printer for WIN95 */void putindrawmode (int);	/* store drawmode in previous command */void dot (struct command *);	/* draw a dot */void create_line (int);		/* create Command 'line' */void line (struct command *);	/* draw a line */void moveorigin ();		/* move origin of window */int check_alignement (char *);	/* checks, if text-alignement is valid */void circle (struct command *);	/* draw a circle */void triangle (struct command *);	/* draw a triangle */void create_text (int);		/* create Command 'text' */void text (struct command *);	/* write a text */void closewin (void);		/* close the window */void clearwin (void);		/* clear the window */void rect (struct command *);	/* draw a (filled) rect */void putbit (void);		/* put rect onto window */void putchars (void);		/* put rect onto screen */void create_marker (int);	/* create command 'cMARKER' */void marker (struct command *);	/* draw a marker */void getwinkey (char *);	/* read a key from grafics window */void gettermkey (char *);	/* read a key from terminal */char *getbit (int, int, int, int);	/* get rect from window */char *getchars (int, int, int, int);	/* get rect from screen */void change_colour (struct command *);	/* change colour */#ifdef WINDOWSLRESULT CALLBACK mywindowproc (HWND, unsigned, UINT, DWORD);#elsevoid calc_psscale (void);	/* calculate scale-factor for postscript */#endif/* function.c */void create_exception (int);	/* create command 'exception' */void exception (struct command *);	/* change handling of exceptions */void create_poke (char);	/* create Command 'POKE' */void poke ();			/* poke in internals */void pokefile (struct command *);	/* poke into file */void create_dblrelop (char);	/* create command dblrelop */void dblrelop (struct command *);	/* compare topmost double-values */void concat (void);		/* concetenates two strings from stack */void create_strrelop (char);	/* create command strrelop */void strrelop (struct command *);	/* compare topmost string-values */void create_changestring (int);	/* create command 'changestring' */void changestring (struct command *);	/* changes a string */void glob (void);		/* check, if pattern globs string */void create_boole (char);	/* create command boole */void boole (struct command *);	/* perform and/or/not */void create_function (int);	/* create command 'function' */void function (struct command *);	/* performs a function */int myformat (char *, double, char *, char *);	/* format number */void create_restore (char *);	/* create command 'restore' */void restore (struct command *);	/* reset data pointer to given label */void create_dbldata (double);	/* create command dbldata */void create_strdata (char *);	/* create command strdata */void create_readdata (char);	/* create command readdata */void readdata (struct command *);	/* read data items */void mywait ();			/* wait given number of seconds */void mybell ();			/* ring ascii bell */void getmousexybm (char *, int *, int *, int *, int *);	/* get mouse coordinates */void token (struct command *);	/* extract token from variable */void tokenalt (struct command *);	/* extract token from variable with alternate semantics *//* symbol.c */struct array *create_array (int, int);	/* create an array */void clearrefs (struct command *);	/* clear references for commands within function */void duplicate (void);		/* duplicate topmost element of stack */void negate (void);		/* negates top of stack */void create_require (int);	/* create command 'cREQUIRE' */void require (struct command *);	/* check item on stack has right type */void create_makelocal (char *, int);	/* create command 'cMAKELOCAL' */void create_makestatic (char *, int);	/* create command 'cMAKESTATIC' */void create_arraylink (char *, int);	/* create command 'cARRAYLINK' */void create_pusharrayref (char *, int);	/* create command 'cPUSHARRAYREF' */void pusharrayref (struct command *);	/* push an array reference onto stack */void arraylink (struct command *);	/* link a local symbol to a global array */void makestatic (struct command *);	/* makes symbol static */void makelocal (struct command *);	/* makes symbol local */void create_numparam (void);	/* create command 'cNUMPARAM' */void numparam (struct command *);	/* count number of function parameters */void pushdblsym (struct command *);	/* push double symbol onto stack */void popdblsym (struct command *);	/* pop double from stack */void create_pushdbl (double);	/* create command 'pushdbl' */void pushdbl (struct command *);	/* push double onto stack */void create_dblbin (char);	/* create binary expression calculation */void dblbin (struct command *);	/* compute with two numbers from stack */void pushstrsym (struct command *);	/* push string symbol onto stack */void popstrsym (struct command *);	/* pop string from stack */void create_pushstr (char *);	/* creates command pushstr */void pushstr (struct command *);	/* push string onto stack */void pushname (char *);		/* push a name on stack */void pushstrptr (struct command *);	/* push string-pointer onto stack */void forcheck (void);		/* check, if for-loop is done */void forincrement (void);	/* increment value on stack */void startfor (void);		/* compute initial value of for-variable */void create_goto (char *);	/* creates command goto */void create_gosub (char *);	/* creates command gosub */void create_call (char *);	/* creates command function call */void create_label (char *, int);	/* creates command label */void create_sublink (char *);	/* create link to subroutine */void pushgoto (void);		/* generate label and push goto on stack */void popgoto (void);		/* pops a goto and generates the matching command */void jump (struct command *);	/* jump to specific Label */void myreturn (struct command *);	/* return from gosub */void findnop ();		/* used for on_gosub, find trailing nop command */void skipper (void);		/* used for on_goto/gosub, skip commands */void skiponce (struct command *);	/* skip next command once */void resetskiponce (struct command *);	/* find and reset next skip */void decide (void);		/*  skips next command, if not 0 on stack */void logical_shortcut (struct command *type);	/* shortcut and/or if possible */void create_doarray (char *, int);	/* creates array-commands */void doarray (struct command *);	/* call an array */void create_dim (char *, char);	/* create command 'dim' */void dim (struct command *);	/* get room for array */void pushlabel (void);		/* generate goto and push label on stack */void poplabel (void);		/* pops a label and generates the matching command */void storelabel ();		/* push label on stack */void matchgoto ();		/* generate goto matching label on stack */void swap (void);		/*swap topmost elements on stack */struct stackentry *push (void);	/* push element on stack and enlarge it */struct stackentry *pop (int);	/* pops element to memory */struct symbol *get_sym (char *, int, int);	/* find and/or add a symbol */void link_symbols (struct symbol *, struct symbol *);	/* link one symbol to the other */void pushsymlist (void);	/* push a new list on symbol stack */void popsymlist (void);		/* pop list of symbols and free symbol contents */void dump_sym ();		/* dump the stack of lists of symbols */void dump_sub (int);		/* dump the stack of subroutine calls */void create_retval (int, int);	/* create command 'cRETVAL' */void retval (struct command *);	/* check return value of function */void create_endfunction (void);	/* create command cEND_FUNCTION */void function_or_array (struct command *);	/* decide whether to do perform function or array */struct command *search_label (char *, int);	/* search label */void reshufflestack (struct stackentry *);	/* reorganize stack for function call */void push_switch_mark (void);	/* push a switch mark */void create_clean_switch_mark (int, int);	/* add command clean_switch_mark */void clean_switch_mark (struct command *);	/* pop everything up to (and including) first switch_mark from stack */void push_switch_id (void);	/* generate a new switch id */void pop_switch_id (void);	/* get previous switch id */int get_switch_depth (void);	/* get current depth of switch id stack */extern void create_break_mark (int, int);	/* create marks for break */extern void mybreak (struct command *);	/* find break_here statement */void next_case (void);		/* go to next case in switch statement */void mycontinue (struct command *cmd);	/* find continue_here statement *//* flex.c */void yyerror (char *);		/* yyerror message */void open_main (FILE *, char *, char *);	/* switch to file */void open_string (char *);	/* open string with commands */FILE *open_library (char *, char **, int);	/* search and open a library */void switchlib (void);		/* switch library, called by bison */

⌨️ 快捷键说明

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