Home | History | Annotate | Line # | Download | only in fgen
fgen.h revision 1.1
      1  1.1  eeh /*
      2  1.1  eeh  * fgen.h -- stuff for the fcode tokenizer.
      3  1.1  eeh  */
      4  1.1  eeh 
      5  1.1  eeh /* Type of a Cell */
      6  1.1  eeh typedef long Cell;
      7  1.1  eeh 
      8  1.1  eeh /* Token from the scanner. */
      9  1.1  eeh struct tok {
     10  1.1  eeh 	int type;
     11  1.1  eeh 	char *text;
     12  1.1  eeh };
     13  1.1  eeh 
     14  1.1  eeh #define TOKEN struct tok
     15  1.1  eeh #define YY_DECL TOKEN* yylex __P((void))
     16  1.1  eeh 
     17  1.1  eeh #define FCODE	0xF00DBABE
     18  1.1  eeh #define MACRO	0xFEEDBABE
     19  1.1  eeh 
     20  1.1  eeh /* Defined fcode and string. */
     21  1.1  eeh struct fcode {
     22  1.1  eeh 	char *name;
     23  1.1  eeh 	long num;
     24  1.1  eeh 	int type;
     25  1.1  eeh 	struct fcode *l;
     26  1.1  eeh 	struct fcode *r;
     27  1.1  eeh };
     28  1.1  eeh 
     29  1.1  eeh /* macro instruction as separate words */
     30  1.1  eeh struct macro {
     31  1.1  eeh 	char *name;
     32  1.1  eeh 	char *equiv;
     33  1.1  eeh 	int type;
     34  1.1  eeh 	struct macro *l;
     35  1.1  eeh 	struct macro *r;
     36  1.1  eeh };
     37  1.1  eeh 
     38  1.1  eeh /*
     39  1.1  eeh  * FCode header -- assumes big-endian machine,
     40  1.1  eeh  *	otherwise the bits need twiddling.
     41  1.1  eeh  */
     42  1.1  eeh struct fcode_header {
     43  1.1  eeh 	char	header;
     44  1.1  eeh 	char	format;
     45  1.1  eeh 	short	checksum;
     46  1.1  eeh 	int	length;
     47  1.1  eeh };
     48  1.1  eeh 
     49  1.1  eeh /* Tokenizer tokens */
     50  1.1  eeh enum toktypes {
     51  1.1  eeh 	TOK_OCTAL = 8,
     52  1.1  eeh 	TOK_DECIMAL = 10,
     53  1.1  eeh 	TOK_HEX = 16,
     54  1.1  eeh 
     55  1.1  eeh 	TOK_NUMBER,
     56  1.1  eeh 	TOK_STRING_LIT,
     57  1.1  eeh 	TOK_C_LIT,
     58  1.1  eeh 	TOK_PSTRING,
     59  1.1  eeh 	TOK_TOKENIZE,
     60  1.1  eeh 	TOK_COMMENT,
     61  1.1  eeh 	TOK_ENDCOMMENT,
     62  1.1  eeh 	TOK_COLON,
     63  1.1  eeh 	TOK_SEMICOLON,
     64  1.1  eeh 	TOK_TOSTRING,
     65  1.1  eeh 
     66  1.1  eeh 	/* These are special */
     67  1.1  eeh 	TOK_AGAIN,
     68  1.1  eeh 	TOK_ALIAS,
     69  1.1  eeh 	TOK_GETTOKEN,
     70  1.1  eeh 	TOK_ASCII,
     71  1.1  eeh 	TOK_BEGIN,
     72  1.1  eeh 	TOK_BUFFER,
     73  1.1  eeh 	TOK_CASE,
     74  1.1  eeh 	TOK_CONSTANT,
     75  1.1  eeh 	TOK_CONTROL,
     76  1.1  eeh 	TOK_CREATE,
     77  1.1  eeh 	TOK_DEFER,
     78  1.1  eeh 	TOK_DO,
     79  1.1  eeh 	TOK_ELSE,
     80  1.1  eeh 	TOK_ENDCASE,
     81  1.1  eeh 	TOK_ENDOF,
     82  1.1  eeh 	TOK_EXTERNAL,
     83  1.1  eeh 	TOK_FIELD,
     84  1.1  eeh 	TOK_HEADERLESS,
     85  1.1  eeh 	TOK_HEADERS,
     86  1.1  eeh 	TOK_IF,
     87  1.1  eeh 	TOK_LEAVE,
     88  1.1  eeh 	TOK_LOOP,
     89  1.1  eeh 	TOK_OF,
     90  1.1  eeh 	TOK_REPEAT,
     91  1.1  eeh 	TOK_THEN,
     92  1.1  eeh 	TOK_TO,
     93  1.1  eeh 	TOK_UNTIL,
     94  1.1  eeh 	TOK_VALUE,
     95  1.1  eeh 	TOK_VARIABLE,
     96  1.1  eeh 	TOK_WHILE,
     97  1.1  eeh 	TOK_OFFSET16,
     98  1.1  eeh 
     99  1.1  eeh 	/* Tokenizer directives */
    100  1.1  eeh 	TOK_BEGTOK,
    101  1.1  eeh 	TOK_EMIT_BYTE,
    102  1.1  eeh 	TOK_ENDTOK,
    103  1.1  eeh 	TOK_FLOAD,
    104  1.1  eeh 
    105  1.1  eeh 	TOK_OTHER
    106  1.1  eeh };
    107