token.h
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
1 #if !defined _TOKEN_H_
2 #define _TOKEN_H_
3
4 #include "lang_dep.h"
5
6 typedef struct token {
7 int lex; /* 字句値 : 1 バイトからなるトークン ( 名前を除く ) の */
8 /* 場合は文字コードが直接入る */
9 union {
10 void *p;
11 zinc_word w;
12 } sem; /* 意味値 : 適当な情報へのポインタ */
13 } token;
14
15 /*
16 複数バイトからなるトークン ( 名前は 1 バイトの場合も含む ) などの字句値。
17 1 バイトからなるトークンと衝突する 0 〜 255 は空けておかねばならない。
18 */
19 typedef enum lexval {
20 LEXVAL_eof = 257, /* End Of File */
21 LEXVAL_name, /* 名前 ( 予約語除く ) */
22 LEXVAL_literal, /* ( 字句的に ) リテラル */
23 LEXVAL_coloneq, /* := */
24 LEXVAL_eqeq, /* == */
25 LEXVAL_bangeq, /* != */
26 LEXVAL_lt_or_eq, /* <= */
27 LEXVAL_gt_or_eq, /* >= */
28 LEXVAL_lsl, /* << */
29 LEXVAL_asr, /* >> */
30 LEXVAL_lsr, /* >>> */
31
32 LEXVAL_IF = 513, /* これより予約語 */
33 LEXVAL_WHILE,
34 LEXVAL_PROC,
35 LEXVAL_WORD,
36 LEXVAL_GETCHAR,
37 LEXVAL_PUTCHAR,
38 LEXVAL_SET,
39 LEXVAL_DEFPROC,
40 LEXVAL_CALL
41 } lexval;
42
43 void init_token(void);
44 token const get_token(lexval lv);
45 token const get_token_literal(zinc_word w);
46 token const get_token_p(lexval lv, void *p);
47
48 #endif /* _TOKEN_H_ */