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