0,0 → 1,78 |
/* |
** $Id: llex.h,v 1.65 2010/04/05 16:35:37 roberto Exp $ |
** Lexical Analyzer |
** See Copyright Notice in lua.h |
*/ |
|
#ifndef llex_h |
#define llex_h |
|
#include "lobject.h" |
#include "lzio.h" |
|
|
#define FIRST_RESERVED 257 |
|
/* maximum length of a reserved word */ |
#define TOKEN_LEN (sizeof("function")/sizeof(char)) |
|
|
/* |
* WARNING: if you change the order of this enumeration, |
* grep "ORDER RESERVED" |
*/ |
enum RESERVED { |
/* terminal symbols denoted by reserved words */ |
TK_AND = FIRST_RESERVED, TK_BREAK, |
TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION, |
TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT, |
TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE, |
/* other terminal symbols */ |
TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_EOS, |
TK_NUMBER, TK_NAME, TK_STRING |
}; |
|
/* number of reserved words */ |
#define NUM_RESERVED (cast(int, TK_WHILE-FIRST_RESERVED+1)) |
|
|
typedef union { |
lua_Number r; |
TString *ts; |
} SemInfo; /* semantics information */ |
|
|
typedef struct Token { |
int token; |
SemInfo seminfo; |
} Token; |
|
|
typedef struct LexState { |
int current; /* current character (charint) */ |
int linenumber; /* input line counter */ |
int lastline; /* line of last token `consumed' */ |
Token t; /* current token */ |
Token lookahead; /* look ahead token */ |
struct FuncState *fs; /* `FuncState' is private to the parser */ |
struct lua_State *L; |
ZIO *z; /* input stream */ |
Mbuffer *buff; /* buffer for tokens */ |
struct Varlist *varl; /* list of all active local variables */ |
TString *source; /* current source name */ |
TString *envn; /* environment variable name */ |
char decpoint; /* locale decimal point */ |
} LexState; |
|
|
LUAI_FUNC void luaX_init (lua_State *L); |
LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, |
TString *source); |
LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l); |
LUAI_FUNC void luaX_next (LexState *ls); |
LUAI_FUNC int luaX_lookahead (LexState *ls); |
LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *s); |
LUAI_FUNC const char *luaX_token2str (LexState *ls, int token); |
|
|
#endif |