gateway: simplify stopping the cleanup timer
[olsrd.git] / lib / tas / src / lua / llex.h
1
2 /*
3 ** $Id: llex.h,v 1.47 2003/02/28 17:19:47 roberto Exp $
4 ** Lexical Analyzer
5 ** See Copyright Notice in lua.h
6 */
7
8 #ifndef llex_h
9 #define llex_h
10
11 #include "lobject.h"
12 #include "lzio.h"
13
14
15 #define FIRST_RESERVED  257
16
17 /* maximum length of a reserved word */
18 #define TOKEN_LEN       (sizeof("function")/sizeof(char))
19
20
21 /*
22 * WARNING: if you change the order of this enumeration,
23 * grep "ORDER RESERVED"
24 */
25 enum RESERVED {
26   /* terminal symbols denoted by reserved words */
27   TK_AND = FIRST_RESERVED, TK_BREAK,
28   TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION,
29   TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT,
30   TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE,
31   /* other terminal symbols */
32   TK_NAME, TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_NUMBER,
33   TK_STRING, TK_EOS
34 };
35
36 /* number of reserved words */
37 #define NUM_RESERVED    (cast(int, TK_WHILE-FIRST_RESERVED+1))
38
39
40 typedef union {
41   lua_Number r;
42   TString *ts;
43 } SemInfo;                             /* semantics information */
44
45
46 typedef struct Token {
47   int token;
48   SemInfo seminfo;
49 } Token;
50
51
52 typedef struct LexState {
53   int current;                         /* current character (charint) */
54   int linenumber;                      /* input line counter */
55   int lastline;                        /* line of last token `consumed' */
56   Token t;                             /* current token */
57   Token lookahead;                     /* look ahead token */
58   struct FuncState *fs;                /* `FuncState' is private to the parser */
59   struct lua_State *L;
60   ZIO *z;                              /* input stream */
61   Mbuffer *buff;                       /* buffer for tokens */
62   TString *source;                     /* current source name */
63   int nestlevel;                       /* level of nested non-terminals */
64 } LexState;
65
66
67 void luaX_init(lua_State * L);
68 void luaX_setinput(lua_State * L, LexState * LS, ZIO * z, TString * source);
69 int luaX_lex(LexState * LS, SemInfo * seminfo);
70 void luaX_checklimit(LexState * ls, int val, int limit, const char *msg);
71 void luaX_syntaxerror(LexState * ls, const char *s) __attribute__ ((noreturn));
72 void luaX_errorline(LexState * ls, const char *s, const char *token, int line) __attribute__ ((noreturn));
73 const char *luaX_token2str(LexState * ls, int token);
74
75
76 #endif