📄 bwbasic.h
字号:
};/* Structure to define bwBASIC task: UNDER CONSTRUCTION */#if PARACTstruct bwb_task { char progfile[ MAXARGSIZE ]; /* program file */ int rescan; /* program needs to be rescanned */ int number; /* current line number */ struct bwb_line *bwb_l; /* current line pointer */ struct bwb_line bwb_start; /* starting line marker */ struct bwb_line bwb_end; /* ending line marker */ struct bwb_line *data_line; /* current line to read data */ int data_pos; /* position in data_line */ struct bwb_variable var_start; /* variable list start marker */ struct bwb_variable var_end; /* variable list end marker */ struct bwb_function fnc_start; /* function list start marker */ struct bwb_function fnc_end; /* function list end marker */ struct fslte fslt_start; /* function-sub-label lookup table start marker */ struct fslte fslt_end; /* function-sub-label lookup table end marker */ int exsc; /* EXEC stack counter */ int expsc; /* expression stack counter */ int xtxtsc; /* eXecute TeXT stack counter */ struct exse excs[ EXECLEVELS ]; /* EXEC stack */ struct exp_ese exps[ ESTACKSIZE ]; /* Expression stack */ struct xtxtsl xtxts[ XTXTSTACKSIZE ];/* Execute Text stack */ };extern struct bwb_task *bwb_tasks[ TASKS ]; /* table of task pointers */#else /* not multi-tasking */extern char progfile[ MAXARGSIZE ]; /* program file */extern int rescan; /* program needs to be rescanned */extern int number; /* current line number */extern struct bwb_line *bwb_l; /* current line pointer */extern struct bwb_line bwb_start; /* starting line marker */extern struct bwb_line bwb_end; /* ending line marker */extern struct bwb_line *data_line; /* current line to read data */extern int data_pos; /* position in data_line */extern struct bwb_variable var_start; /* variable list start marker */extern struct bwb_variable var_end; /* variable list end marker */extern struct bwb_function fnc_start; /* function list start marker */extern struct bwb_function fnc_end; /* function list end marker */extern struct fslte fslt_start; /* function-sub-label lookup table start marker */extern struct fslte fslt_end; /* function-sub-label lookup table end marker */extern int exsc; /* EXEC stack counter */extern int expsc; /* expression stack counter */extern int xtxtsc; /* eXecute TeXT stack counter */extern struct exse *excs; /* EXEC stack */extern struct exp_ese *exps; /* Expression stack */extern struct xtxtsl *xtxts; /* Execute Text stack */#endifextern int bwb_curtask; /* current task */extern struct bwb_variable *ed; /* EDITOR$ variable */extern struct bwb_variable *fi; /* FILES$ variable */extern struct bwb_variable *pr; /* PROMPT$ variable */extern struct bwb_variable *im; /* IMPLEMENTATION$ variable */extern struct bwb_variable *co; /* COLORS variable *//*************************************************************** bwbasic.h Part III: Global Data***************************************************************/extern char *bwb_ebuf;extern int bwb_trace;extern int dim_base; /* set by OPTION BASE */extern struct bwb_command bwb_cmdtable[ COMMANDS ];extern FILE *errfdevice; /* output device for error messages */extern int err_line; /* line in which error occurred */extern int err_number; /* number of last error */extern char err_gosubl[ MAXVARNAMESIZE + 1 ]; /* line for error GOSUB */extern char *err_table[ N_ERRORS ]; /* table of error messages */extern int prn_col;extern struct bwb_function bwb_prefuncs[ FUNCTIONS ]; /* table of predefined functions */#if COMMON_CMDSextern struct dev_element *dev_table; /* table of devices */#endif/* Operator Structure and Table */struct bwb_op { char symbol[ 8 ]; /* BASIC symbol for the operator */ int operation; /* internal code for the operator */ int precedence; /* level of precedence, 0 = highest */ };extern struct bwb_op exp_ops[ N_OPERATORS ]; /* the table itself, filled in in bwb_tbl.c *//*************************************************************** bwbasic.h Part IV: Function Prototypes***************************************************************/#if ANSI_Cextern void *CALLOC(size_t nelem, size_t elsize, char *str); /* JBV */extern void FREE(void *ptr, char *str); /* JBV */extern void bwb_init( int argc, char **argv );extern int bwb_fload( FILE *file );extern int bwb_ladd( char *buffer, int replace );extern int bwb_findcmd( int argc, int a, struct bwb_line *l );extern struct bwb_line *bwb_xtxtline( char *buffer );extern void bwb_mainloop( void );extern void bwb_execline( void );extern int bwb_gets( char *buffer );extern int bwb_error( char *message );extern void break_handler( void );extern void break_mes( int x );extern struct bwb_line *bwb_null( struct bwb_line *l );extern struct bwb_line *bwb_rem( struct bwb_line *l );extern struct bwb_line *bwb_lerror( struct bwb_line *l );extern struct bwb_line *bwb_run( struct bwb_line *l );extern struct bwb_line *bwb_let( struct bwb_line *l );extern struct bwb_line *bwb_load( struct bwb_line *l );extern struct bwb_line *bwb_merge( struct bwb_line *l );extern struct bwb_line *bwb_chain( struct bwb_line *l );extern struct bwb_line *bwb_common( struct bwb_line *l );extern struct bwb_line *bwb_xload( struct bwb_line *l );extern struct bwb_line *bwb_new( struct bwb_line *l );extern struct bwb_line *bwb_save( struct bwb_line *l );extern struct bwb_line *bwb_list( struct bwb_line *l );extern struct bwb_line *bwb_xlist( struct bwb_line *l, FILE *file );extern struct bwb_line *bwb_go( struct bwb_line *l );extern struct bwb_line *bwb_goto( struct bwb_line *l );extern struct bwb_line *bwb_gosub( struct bwb_line *l );extern struct bwb_line *bwb_return( struct bwb_line *l );extern struct bwb_line *bwb_xend( struct bwb_line *l );extern struct bwb_line *bwb_system( struct bwb_line *l );extern struct bwb_line *bwb_tron( struct bwb_line *l );extern struct bwb_line *bwb_troff( struct bwb_line *l );extern struct bwb_line *bwb_randomize( struct bwb_line *l );extern struct bwb_line *bwb_stop( struct bwb_line *l );extern struct bwb_line *bwb_data( struct bwb_line *l );extern struct bwb_line *bwb_read( struct bwb_line *l );extern struct bwb_line *bwb_restore( struct bwb_line *l );extern struct bwb_line *bwb_delete( struct bwb_line *l );extern struct bwb_line *bwb_if( struct bwb_line *l );extern struct bwb_line *bwb_else( struct bwb_line *l );extern struct bwb_line *bwb_elseif( struct bwb_line *l );extern struct bwb_line *bwb_select( struct bwb_line *l );extern struct bwb_line *bwb_case( struct bwb_line *l );extern struct bwb_line *bwb_endselect( struct bwb_line *l );extern struct bwb_line *bwb_endif( struct bwb_line *l );extern struct bwb_line *bwb_while( struct bwb_line *l );extern struct bwb_line *bwb_wend( struct bwb_line *l );extern struct bwb_line *bwb_for( struct bwb_line *l );extern struct bwb_line *bwb_next( struct bwb_line *l );extern struct bwb_line *bwb_dim( struct bwb_line *l );extern struct bwb_line *bwb_option( struct bwb_line *l );extern struct bwb_line *bwb_open( struct bwb_line *l );extern struct bwb_line *bwb_close( struct bwb_line *l );extern struct bwb_line *bwb_get( struct bwb_line *l );extern struct bwb_line *bwb_put( struct bwb_line *l );extern struct bwb_line *bwb_rmdir( struct bwb_line *l );extern struct bwb_line *bwb_chdir( struct bwb_line *l );extern struct bwb_line *bwb_mkdir( struct bwb_line *l );extern struct bwb_line *bwb_kill( struct bwb_line *l );extern struct bwb_line *bwb_name( struct bwb_line *l );extern struct bwb_line *bwb_rset( struct bwb_line *l );extern struct bwb_line *bwb_lset( struct bwb_line *l );extern struct bwb_line *bwb_field( struct bwb_line *l );extern struct bwb_line *bwb_on( struct bwb_line *l );extern struct bwb_line *bwb_line( struct bwb_line *l );extern struct bwb_line *bwb_ddbl( struct bwb_line *l );extern struct bwb_line *bwb_dint( struct bwb_line *l );extern struct bwb_line *bwb_dsng( struct bwb_line *l );extern struct bwb_line *bwb_dstr( struct bwb_line *l );extern struct bwb_line *bwb_mid( struct bwb_line *l );extern struct bwb_line *bwb_clear( struct bwb_line *l );extern struct bwb_line *bwb_erase( struct bwb_line *l );extern struct bwb_line *bwb_swap( struct bwb_line *l );extern struct bwb_line *bwb_environ( struct bwb_line *l );extern struct bwb_line *bwb_width( struct bwb_line *l );extern struct bwb_line *bwb_write( struct bwb_line *l );extern struct bwb_line *bwb_edit( struct bwb_line *l );extern struct bwb_line *bwb_files( struct bwb_line *l );extern struct bwb_line *bwb_do( struct bwb_line *l );extern struct bwb_line *bwb_doloop( struct bwb_line *l );extern struct bwb_line *bwb_cls( struct bwb_line *l );extern struct bwb_line *bwb_locate( struct bwb_line *l );extern struct bwb_line *bwb_color( struct bwb_line *l );extern struct bwb_line *bwb_do( struct bwb_line *l );extern struct bwb_line *bwb_loop( struct bwb_line *l );extern struct bwb_line *bwb_exit( struct bwb_line *l );extern struct bwb_line *bwb_exitfor( struct bwb_line *l );extern struct bwb_line *bwb_exitdo( struct bwb_line *l );extern struct bwb_line *bwb_zline( struct bwb_line *l );extern void bwb_incexec( void );extern void bwb_decexec( void );extern int bwb_setexec( struct bwb_line *l, int position, int code );extern int bwb_getcnd( char *lb, char *lhs, char *rhs, char *op, int *n );extern int bwb_getlhs( char *lb, char *lhs, int *n );extern int bwb_getop( char *lb, char *op, int *n );extern int bwb_getrhs( char *lb, char *rhs, int *n );extern int bwb_evalcnd( char *lhs, char *rhs, char *op );extern int bwb_isstr( char *b );extern int eval_int( int l, int r, char *op );extern int eval_sng( float l, float r, char *op );extern int eval_dbl( double l, double r, char *op );extern struct exp_ese *bwb_exp( char *expression, int assignment, int *position );extern int exp_getvfname( char *source, char *destination );extern int exp_operation( int entry_level );extern int inc_esc( void );extern int dec_esc( void );extern int fnc_init( int task );extern struct bwb_function *fnc_find( char *buffer );extern struct bwb_line *bwb_def( struct bwb_line *l );extern int bwb_getargs( char *buffer );extern int bwb_stripcr( char *s );extern int bwb_numseq( char *buffer, int *start, int *end );extern int bwb_freeline( struct bwb_line *l );extern struct bwb_line *bwb_print( struct bwb_line *l );extern int bwb_xprint( struct bwb_line *l, FILE *f );extern int bwb_eltype( char *l_buffer, int p );extern int var_init( int task );extern int fslt_init( int task );extern int var_delcvars( void );extern struct bwb_variable *var_new( char *name );extern struct bwb_variable *var_islocal( char *buffer );extern int bwb_strel( char *lb, char *sb, int *n );extern struct bwb_variable *bwb_numel( char *lb, int *n );extern int bwb_const( char *lb, char *sb, int *n );extern int bwb_getvarname( char *lb, char *sb, int *n );extern struct bwb_variable *var_find( char *buffer );extern int bwb_isvar( char *buffer );extern struct bwb_line *bwb_input( struct bwb_line *l );extern int inp_adv( char *b, int *c );extern int var_make( struct bwb_variable *v, int type );extern bstring *var_getsval( struct bwb_variable *nvar );extern bstring *var_findsval( struct bwb_variable *v, int *pp );extern bstring *exp_getsval( struct exp_ese *e );extern int dim_getparams( char *buffer, int *pos, int *n_params, int **pp );extern int adv_element( char *buffer, int *pos, char *element );extern int adv_ws( char *buffer, int *pos );#if MULTISEG_LINESextern int adv_eos( char *buffer, int *pos );#endifextern int line_start( char *buffer, int *pos, int *lnpos, int *lnum, int *cmdpos, int *cmdnum, int *startpos );extern int is_cmd( char *buffer, int *cmdnum );extern int is_let( char *buffer, int *cmdnum );extern int is_eol( char *buffer, int *position );extern int is_numconst( char *buffer );extern int is_label( char *buffer );extern struct bwb_line * find_label( char *buffer );extern struct bwb_line *find_loop( struct bwb_line *l );extern int int_qmdstr( char *buffer_a, char *buffer_b );extern struct bwb_line * cnd_xpline( struct bwb_line *l, char *buffer );extern int scan_element( char *buffer, int *pos, char *element );extern int prn_precision( struct bwb_variable *v );extern int * prn_getcol( FILE *f );extern int prn_getwidth( FILE *f );extern int prn_xprintf( FILE *f, char *buffer );extern int prn_xxprintf( FILE *f, char *buffer ); /* JBV */extern int bwb_strtoupper( char *buffer );extern int getcmdnum( char *cmdstr );extern int str_btoc( char *buffer, bstring *s );extern int str_btob( bstring *d, bstring *s );extern int str_ctob( bstring *s, char *buffer );extern int str_cmp( bstring *s, bstring *t );extern char * str_cat( bstring *s, bstring *t );extern int exp_findop( char *expression );extern int exp_isop( char *expression );extern int exp_isfn( char *expression );extern int exp_isufn( char *expression );extern int exp_isnc( char *expression );extern int exp_isvn( char *expression );extern int exp_iscmd( char *expression );extern int exp_paren( char *expression );extern int exp_strconst( char *expression );extern int exp_numconst( char *expression );extern int exp_function( char *expression );extern int exp_ufnc( char *expression );extern int exp_variable( char *expression );extern int exp_validarg( char *expression );extern int ln_asbuf( struct bwb_line *l, char *s );extern int xputc( FILE *f, char c );extern int bwx_signon( void );extern int bwx_message( char *m );extern int bwx_putc( char c );extern int bwx_errmes( char *m );extern int bwx_input( char *prompt, char *buffer );extern void bwx_terminate( void );#if COMMAND_SHELLextern int bwx_shell( struct bwb_line *l );#endifint bwb_scan( void );struct bwb_line *bwb_call( struct bwb_line *l );struct bwb_line *bwb_sub( struct bwb_line *l );struct bwb_line *bwb_endsub( struct bwb_line *l );struct bwb_line *bwb_endfnc( struct bwb_line *l );struct bwb_line *bwb_function( struct bwb_line *l );extern bnumber var_getnval( struct bwb_variable *nvar );extern bnumber *var_findnval( struct bwb_variable *v, int *pp );extern bnumber exp_getnval( struct exp_ese *e );extern bnumber *exp_findnval( struct exp_ese *e );#if PARACTextern int bwb_newtask( int task_requested );#endif#if INTERACTIVEextern int bwb_interact( void );#endif#if DEBUGextern int bwb_debug( char *message );extern struct bwb_line *bwb_cmds( struct bwb_line *l );extern struct bwb_line *bwb_vars( struct bwb_line *l );extern struct bwb_line *bwb_fncs( struct bwb_line *l );#endif#ifdef ALLOW_RENUMextern struct bwb_line *bwb_renum( struct bwb_line *l );#endif#if UNIX_CMDS#if !HAVE_UNISTD /* Not needed if one has <unistd.h> (JBV) */extern int rmdir( char *path );extern int chdir( char *path );#endif#if !HAVE_SYSSTAT /* Not needed if one has <sys/stat.h> (JBV) */#if MKDIR_ONE_ARGextern int mkdir( char *path );#elseextern int mkdir( char *path, unsigned short permissions );#endif /* JBV */#endif#endif/* declarations of function commands */extern struct bwb_variable *fnc_null( int argc, struct bwb_variable *argv, int unique_id );#if COMPRESS_FUNCSextern struct bwb_variable *fnc_core( int argc, struct bwb_variable *argv, int unique_id );#elseextern struct bwb_variable *fnc_abs( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_atn( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_cos( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_log( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_sin( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_sqr( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_sgn( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_int( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_rnd( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_exp( int argc, struct bwb_variable *argv, int unique_id );extern struct bwb_variable *fnc_tan( int argc, struct bwb_variable *argv, int unique_id );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -