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_ */

/* [<][>][^][v][top][bottom][index][help] */