Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

/home/groups/n/no/noxwizard/cvs/src/compiler/sc.h File Reference

#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <setjmp.h>
#include "osdefs.h"
#include "amx/amx.h"

Go to the source code of this file.

Compounds

struct  __s_alias
struct  __s_stringlist
struct  __s_arginfo
struct  __s_constval
struct  __s_symbol
struct  value

Defines

#define PUBLIC_CHAR   '@'
#define CTRL_CHAR   '^'
#define DIRSEP_CHAR   '/'
#define sDIMEN_MAX   2
#define sDEF_LITMAX   500
#define sLINEMAX   511
#define sNAMEMAX   31
#define sDEF_AMXSTACK   4096
#define sSTKMAX   80
#define PREPROC_TERM   '\x7f'
#define iLABEL   0
#define iVARIABLE   1
#define iREFERENCE   2
#define iARRAY   3
#define iREFARRAY   4
#define iARRAYCELL   5
#define iARRAYCHAR   6
#define iEXPRESSION   7
#define iCONSTEXPR   8
#define iFUNCTN   9
#define iREFFUNC   10
#define iVARARGS   11
#define uDEFINE   0x01
#define uREAD   0x02
#define uWRITTEN   0x04
#define uRETVALUE   0x04
#define uCONST   0x08
#define uPROTOTYPED   0x08
#define uPREDEF   0x08
#define uPUBLIC   0x10
#define uNATIVE   0x20
#define uSTOCK   0x40
#define uMISSING   0x80
#define uRETNONE   0x10
#define uSIZEOF   0x80
#define uMAINFUNC   "main"
#define sGLOBAL   0
#define sLOCAL   1
#define sSTATIC   2
#define wqTABSZ   (24*wqSIZE)
#define opcodes(n)   ((n)*sizeof(cell))
#define opargs(n)   ((n)*sizeof(cell))
#define tFIRST   256
#define tMIDDLE   279
#define tLAST   316
#define taMULT   256
#define taDIV   257
#define taMOD   258
#define taADD   259
#define taSUB   260
#define taSHL   261
#define taSHRU   262
#define taSHR   263
#define taAND   264
#define taXOR   265
#define taOR   266
#define tlOR   267
#define tlAND   268
#define tlEQ   269
#define tlNE   270
#define tlLE   271
#define tlGE   272
#define tSHL   273
#define tSHRU   274
#define tSHR   275
#define tINC   276
#define tDEC   277
#define tELLIPS   278
#define tDBLDOT   279
#define tASSERT   280
#define tBREAK   281
#define tCASE   282
#define tCHAR   283
#define tCONST   284
#define tCONTINUE   285
#define tDEFAULT   286
#define tDEFINED   287
#define tDO   288
#define tELSE   289
#define tENUM   290
#define tEXIT   291
#define tFOR   292
#define tFORWARD   293
#define tGOTO   294
#define tIF   295
#define tNATIVE   296
#define tNEW   297
#define tOPERATOR   298
#define tPUBLIC   299
#define tRETURN   300
#define tSIZEOF   301
#define tSLEEP   302
#define tSTATIC   303
#define tSTOCK   304
#define tSWITCH   305
#define tWHILE   306
#define tpASSERT   307
#define tpDEFINE   308
#define tpELSE   309
#define tpEMIT   310
#define tpENDIF   311
#define tpENDINPUT   312
#define tpENDSCRPT   313
#define tpIF   314
#define tINCLUDE   315
#define tpPRAGMA   316
#define tTERM   317
#define tENDEXPR   318
#define tNUMBER   319
#define tRATIONAL   320
#define tSYMBOL   321
#define tLABEL   322
#define tSTRING   323
#define tEXPR   324
#define sSTARTREORDER   1
#define sENDREORDER   2
#define sEXPRSTART   0xc0
#define sMAXARGS   64
#define xEXIT   1
#define xASSERTION   2
#define xSTACKERROR   3
#define xBOUNDSERROR   4
#define xMEMACCESS   5
#define xINVINSTR   6
#define xSTACKUNDERFLOW   7
#define xHEAPUNDERFLOW   8
#define xCALLBACKERR   9
#define xSLEEP   12
#define FALSE   0
#define TRUE   1
#define sIN_CSEG   1
#define sIN_DSEG   2
#define sCHKBOUNDS   1
#define sSYMBOLIC   2
#define sNOOPTIMIZE   4
#define sRESET   0
#define sFORCESET   1
#define sEXPRMARK   2
#define sEXPRRELEASE   3
#define _MAX_PATH   255
#define PUBLICTAG   0x8000u
#define FIXEDTAG   0x4000u
#define TAGMASK   (~PUBLICTAG)
#define SC_VDECL   extern

Typedefs

typedef void * stkitem
typedef __s_arginfo arginfo
typedef __s_constval constval
typedef __s_symbol symbol
typedef __s_alias namealias
typedef __s_stringlist stringlist

Enumerations

enum  {
  wqBRK, wqCONT, wqLOOP, wqEXIT,
  wqSIZE
}
enum  { statIDLE, statFIRST, statWRITE, statSKIP }

Functions

int sc_compile (int argc, char **argv)
int sc_addconstant (char *name, cell value, int tag)
int sc_addtag (char *name)
int sc_printf (const char *message,...)
int sc_error (int number, char *message, char *filename, int firstline, int lastline, va_list argptr)
void * sc_opensrc (char *filename)
void sc_closesrc (void *handle)
void sc_resetsrc (void *handle, void *position)
char * sc_readsrc (void *handle, char *target, int maxchars)
void * sc_getpossrc (void *handle)
int sc_eofsrc (void *handle)
void * sc_openasm (char *filename)
void sc_closeasm (void *handle, int deletefile)
void sc_resetasm (void *handle)
int sc_writeasm (void *handle, char *str)
char * sc_readasm (void *handle, char *target, int maxchars)
void * sc_openbin (char *filename)
void sc_closebin (void *handle, int deletefile)
void sc_resetbin (void *handle)
int sc_writebin (void *handle, void *buffer, int size)
long sc_lengthbin (void *handle)
symbolfetchfunc (char *name, int tag)
char * funcdisplayname (char *dest, char *funcname)
int constexpr (cell *val, int *tag)
constvalappend_constval (constval *table, char *name, cell val)
constvalfind_constval (constval *table, char *name)
void delete_consttable (constval *table)
void add_constant (char *name, cell val, int vclass, int tag)
void pushstk (stkitem val)
stkitem popstk (void)
int plungefile (char *name)
void preprocess (void)
void lexinit (void)
int lex (cell *lexvalue, char **lexsym)
void lexpush (void)
void lexclr (void)
int matchtoken (int token)
int tokeninfo (cell *val, char **str)
int needtoken (int token)
void stowlit (cell value)
int alphanum (char c)
int ishex (char c)
void delete_symbol (symbol *root, symbol *sym)
void delete_symbols (symbol *root, int level, int del_labels, int delete_functions)
int refer_symbol (symbol *entry, symbol *bywhom)
void markusage (symbol *sym, int usage)
uint32_t namehash (char *name)
symbolfindglb (char *name)
symbolfindloc (char *name)
symbolfindconst (char *name)
symbolfinddepend (symbol *parent)
symboladdsym (char *name, cell addr, int ident, int vclass, int tag, int usage)
symboladdvariable (char *name, cell addr, int ident, int vclass, int tag, int dim[], int numdim, int idxtag[])
int getlabel (void)
char * itoh (ucell val)
int check_userop (void(*oper)(void), int tag1, int tag2, int numparam, value *lval, int *resulttag)
int matchtag (int formaltag, int actualtag, int allowcoerce)
int expression (int *constant, cell *val, int *tag, int chkfuncresult)
int hier14 (value *lval1)
void writeleader (void)
void writetrailer (void)
void begcseg (void)
void begdseg (void)
void setactivefile (int fnumber)
cell nameincells (char *name)
void setfile (char *name, int fileno)
void setline (int line, int fileno)
void setlabel (int index)
void endexpr (void)
void startfunc (char *fname)
void endfunc (void)
void alignframe (int numbytes)
void defsymbol (char *name, int ident, int vclass, cell offset)
void symbolrange (int level, cell size)
void rvalue (value *lval)
void address (symbol *ptr)
void store (value *lval)
void memcopy (cell size)
void copyarray (symbol *sym, cell size)
void fillarray (symbol *sym, cell size, cell value)
void const1 (cell val)
void const2 (cell val)
void moveto1 (void)
void push1 (void)
void push2 (void)
void pushval (cell val)
void pop1 (void)
void pop2 (void)
void swap1 (void)
void ffswitch (int label)
void ffcase (cell value, char *labelname, int newtable)
void ffcall (symbol *sym, int numargs)
void ffret (void)
void ffabort (int reason)
void ffbounds (cell size)
void jumplabel (int number)
void defstorage (void)
void modstk (int delta)
void setstk (cell value)
void modheap (int delta)
void setheap_pri (void)
void setheap (cell value)
void cell2addr (void)
void cell2addr_alt (void)
void addr2cell (void)
void char2addr (void)
void charalign (void)
void addconst (cell value)
void os_mult (void)
void os_div (void)
void os_mod (void)
void ob_add (void)
void ob_sub (void)
void ob_sal (void)
void os_sar (void)
void ou_sar (void)
void ob_or (void)
void ob_xor (void)
void ob_and (void)
void ob_eq (void)
void ob_ne (void)
void relop_prefix (void)
void relop_suffix (void)
void os_le (void)
void os_ge (void)
void os_lt (void)
void os_gt (void)
void lneg (void)
void neg (void)
void invert (void)
void nooperation (void)
void inc (value *lval)
void dec (value *lval)
void jmp_ne0 (int number)
void jmp_eq0 (int number)
void outval (cell val, int newline)
int error (int number,...)
void errorset (int code)
void assemble (FILE *fout, FILE *fin)
void stgbuffer_cleanup (void)
void stgmark (char mark)
void stgwrite (char *st)
void stgout (int index)
void stgdel (int index, cell code_index)
int stgget (int *index, cell *code_index)
void stgset (int onoff)
int phopt_init (void)
int phopt_cleanup (void)
namealiasinsert_alias (char *name, char *alias)
namealiasfind_alias (char *name)
int lookup_alias (char *target, char *name)
void delete_aliastable (void)
stringlistinsert_path (char *path)
char * get_path (int index)
void delete_pathtable (void)

Variables

symbol loctab
symbol glbtab
celllitq
char pline []
char * lptr
constval tagname_tab
constval libname_tab
constvalcurlibrary
symbolcurfunc
char * inpfname
char outfname []
char errfname []
char sc_ctrlchar
int litidx
int litmax
int stgidx
int labnum
int staging
cell declared
cell glb_declared
cell code_idx
int ntv_funcid
int errnum
int warnnum
int sc_debug
int charbits
int sc_packstr
int sc_listing
int sc_compress
int sc_needsemicolon
int sc_dataalign
int sc_alignnext
int makereport
int curseg
cell sc_stksize
int freading
int fline
int fnumber
int fcurrent
int intest
int sideeffect
int stmtindent
int indent_nowarn
int sc_tabsize
int sc_allowtags
int sc_status
int sc_rationaltag
int rational_digits
FILE * inpf
FILE * inpf_org
FILE * outf
jmp_buf errbuf


Define Documentation

#define _MAX_PATH   255
 

#define CTRL_CHAR   '^'
 

#define DIRSEP_CHAR   '/'
 

#define FALSE   0
 

#define FIXEDTAG   0x4000u
 

#define iARRAY   3
 

#define iARRAYCELL   5
 

#define iARRAYCHAR   6
 

#define iCONSTEXPR   8
 

#define iEXPRESSION   7
 

#define iFUNCTN   9
 

#define iLABEL   0
 

#define iREFARRAY   4
 

#define iREFERENCE   2
 

#define iREFFUNC   10
 

#define iVARARGS   11
 

#define iVARIABLE   1
 

#define opargs      ((n)*sizeof(cell))
 

#define opcodes      ((n)*sizeof(cell))
 

#define PREPROC_TERM   '\x7f'
 

#define PUBLIC_CHAR   '@'
 

#define PUBLICTAG   0x8000u
 

#define SC_VDECL   extern
 

#define sCHKBOUNDS   1
 

#define sDEF_AMXSTACK   4096
 

#define sDEF_LITMAX   500
 

#define sDIMEN_MAX   2
 

#define sENDREORDER   2
 

#define sEXPRMARK   2
 

#define sEXPRRELEASE   3
 

#define sEXPRSTART   0xc0
 

#define sFORCESET   1
 

#define sGLOBAL   0
 

#define sIN_CSEG   1
 

#define sIN_DSEG   2
 

#define sLINEMAX   511
 

#define sLOCAL   1
 

#define sMAXARGS   64
 

#define sNAMEMAX   31
 

#define sNOOPTIMIZE   4
 

#define sRESET   0
 

#define sSTARTREORDER   1
 

#define sSTATIC   2
 

#define sSTKMAX   80
 

#define sSYMBOLIC   2
 

#define taADD   259
 

#define taAND   264
 

#define taDIV   257
 

#define TAGMASK   (~PUBLICTAG)
 

#define taMOD   258
 

#define taMULT   256
 

#define taOR   266
 

#define taSHL   261
 

#define taSHR   263
 

#define taSHRU   262
 

#define tASSERT   280
 

#define taSUB   260
 

#define taXOR   265
 

#define tBREAK   281
 

#define tCASE   282
 

#define tCHAR   283
 

#define tCONST   284
 

#define tCONTINUE   285
 

#define tDBLDOT   279
 

#define tDEC   277
 

#define tDEFAULT   286
 

#define tDEFINED   287
 

#define tDO   288
 

#define tELLIPS   278
 

#define tELSE   289
 

#define tENDEXPR   318
 

#define tENUM   290
 

#define tEXIT   291
 

#define tEXPR   324
 

#define tFIRST   256
 

#define tFOR   292
 

#define tFORWARD   293
 

#define tGOTO   294
 

#define tIF   295
 

#define tINC   276
 

#define tINCLUDE   315
 

#define tLABEL   322
 

#define tlAND   268
 

#define tLAST   316
 

#define tlEQ   269
 

#define tlGE   272
 

#define tlLE   271
 

#define tlNE   270
 

#define tlOR   267
 

#define tMIDDLE   279
 

#define tNATIVE   296
 

#define tNEW   297
 

#define tNUMBER   319
 

#define tOPERATOR   298
 

#define tpASSERT   307
 

#define tpDEFINE   308
 

#define tpELSE   309
 

#define tpEMIT   310
 

#define tpENDIF   311
 

#define tpENDINPUT   312
 

#define tpENDSCRPT   313
 

#define tpIF   314
 

#define tpPRAGMA   316
 

#define tPUBLIC   299
 

#define tRATIONAL   320
 

#define tRETURN   300
 

#define TRUE   1
 

#define tSHL   273
 

#define tSHR   275
 

#define tSHRU   274
 

#define tSIZEOF   301
 

#define tSLEEP   302
 

#define tSTATIC   303
 

#define tSTOCK   304
 

#define tSTRING   323
 

#define tSWITCH   305
 

#define tSYMBOL   321
 

#define tTERM   317
 

#define tWHILE   306
 

#define uCONST   0x08
 

#define uDEFINE   0x01
 

#define uMAINFUNC   "main"
 

#define uMISSING   0x80
 

#define uNATIVE   0x20
 

#define uPREDEF   0x08
 

#define uPROTOTYPED   0x08
 

#define uPUBLIC   0x10
 

#define uREAD   0x02
 

#define uRETNONE   0x10
 

#define uRETVALUE   0x04
 

#define uSIZEOF   0x80
 

#define uSTOCK   0x40
 

#define uWRITTEN   0x04
 

#define wqTABSZ   (24*wqSIZE)
 

#define xASSERTION   2
 

#define xBOUNDSERROR   4
 

#define xCALLBACKERR   9
 

#define xEXIT   1
 

#define xHEAPUNDERFLOW   8
 

#define xINVINSTR   6
 

#define xMEMACCESS   5
 

#define xSLEEP   12
 

#define xSTACKERROR   3
 

#define xSTACKUNDERFLOW   7
 


Typedef Documentation

typedef struct __s_arginfo arginfo
 

typedef struct __s_constval constval
 

typedef struct __s_alias namealias
 

typedef void* stkitem
 

typedef struct __s_stringlist stringlist
 

typedef struct __s_symbol symbol
 


Enumeration Type Documentation

anonymous enum
 

Enumeration values:
wqBRK 
wqCONT 
wqLOOP