X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=token.h;h=c44989c09f7ca99651f9287432c23828b8e909e7;hp=be3c1e392ca4890490b46d873261588e0b3e05a9;hb=044e6a2a498a002c3a6b1c419600e7cf2a4f28cf;hpb=3385b366632d03745033fa6b19faabf60219bc6b diff --git a/token.h b/token.h index be3c1e3..c44989c 100644 --- a/token.h +++ b/token.h @@ -3,14 +3,13 @@ // TOKEN.H - Token Handling // Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 -// Source Utilised with the Kind Permission of Landon Dyer +// Source utilised with the kind permission of Landon Dyer // #ifndef __TOKEN_H__ #define __TOKEN_H__ #include "rmac.h" -//#include "risca.h" // Include Files and Macros #define SRC_IFILE 0 // Input source is IFILE @@ -28,7 +27,7 @@ // Tunable definitions #define LNSIZ 256 // Maximum size of a line of text #define TOKBUFSIZE 400 // Size of token-line buffer -#define QUANTUM 4096L // #bytes to eat at a time from a file +#define QUANTUM 4096L // # bytes to eat at a time from a file #define LNBUFSIZ (QUANTUM*2) // Size of file's buffer #define KWSIZE 7 // Maximum size of keyword in kwtab.h @@ -63,6 +62,7 @@ #define CR_MACDEF 'w' // ^^macdef - is macro defined? #define CR_TIME 'x' // ^^time - DOS format time #define CR_DATE 'y' // ^^date - DOS format date +#define CR_ABSCOUNT 'z' // ^^abscount - count the number of bytes defined in curent .abs section // Character Attributes #define ILLEG 0 // Illegal character (unused) @@ -110,15 +110,24 @@ IFILE { char ifbuf[LNBUFSIZ]; // Line buffer }; +#define TOKENSTREAM struct _tokenstream +TOKENSTREAM { + TOKEN token[32]; // 32 ought to be enough for anybody (including XiA!) + char * string[32]; // same for attached strings +}; + // Information about a macro invocation IMACRO { IMACRO * im_link; // Pointer to ancient IMACROs - LONG * im_nextln; // Next line to include +// LONG * im_nextln; // Next line to include + struct LineList * im_nextln; // Next line to include WORD im_nargs; // # of arguments supplied on invocation WORD im_siz; // Size suffix supplied on invocation LONG im_olduniq; // Old value of 'macuniq' SYM * im_macro; // Pointer to macro we're in char im_lnbuf[LNSIZ]; // Line buffer + uint32_t argBase; // Base in argPtrs[] for current macro + TOKENSTREAM argument[20]; // Assume no more than 20 arguments in an invocation }; // Information about a .rept invocation @@ -142,15 +151,17 @@ extern unsigned orgactive; extern unsigned orgaddr; extern LONG sloc; extern int mjump_align; +extern char * string[]; // Prototypes int include(int, char *); -void init_token(void); -void setfnum(WORD); -int tokln(void); +void InitTokenizer(void); +void SetFilenameForErrorReporting(void); +int TokenizeLine(void); int fpop(void); -//int d_goto(WORD); -int d_goto(void); +int d_goto(WORD); +//int d_goto(void); INOBJ * a_inobj(int); +void DumpTokenBuffer(void); #endif // __TOKEN_H__