diff options
Diffstat (limited to 'src/lj_lex.c')
-rw-r--r-- | src/lj_lex.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lj_lex.c b/src/lj_lex.c index d1df138e..28aad901 100644 --- a/src/lj_lex.c +++ b/src/lj_lex.c | |||
@@ -301,12 +301,16 @@ static int llex(LexState *ls, TValue *tv) | |||
301 | 301 | ||
302 | /* -- Lexer API ----------------------------------------------------------- */ | 302 | /* -- Lexer API ----------------------------------------------------------- */ |
303 | 303 | ||
304 | void lj_lex_start(lua_State *L, LexState *ls) | 304 | /* Setup lexer state. */ |
305 | void lj_lex_setup(lua_State *L, LexState *ls) | ||
305 | { | 306 | { |
306 | ls->L = L; | 307 | ls->L = L; |
307 | ls->fs = NULL; | 308 | ls->fs = NULL; |
308 | ls->n = 0; | 309 | ls->n = 0; |
309 | ls->p = NULL; | 310 | ls->p = NULL; |
311 | ls->vstack = NULL; | ||
312 | ls->sizevstack = 0; | ||
313 | ls->vtop = 0; | ||
310 | ls->lookahead = TK_eof; /* No look-ahead token. */ | 314 | ls->lookahead = TK_eof; /* No look-ahead token. */ |
311 | ls->linenumber = 1; | 315 | ls->linenumber = 1; |
312 | ls->lastline = 1; | 316 | ls->lastline = 1; |
@@ -335,6 +339,14 @@ void lj_lex_start(lua_State *L, LexState *ls) | |||
335 | ls->chunkname = lj_str_newz(L, ls->chunkarg); | 339 | ls->chunkname = lj_str_newz(L, ls->chunkarg); |
336 | } | 340 | } |
337 | 341 | ||
342 | /* Cleanup lexer state. */ | ||
343 | void lj_lex_cleanup(lua_State *L, LexState *ls) | ||
344 | { | ||
345 | global_State *g = G(L); | ||
346 | lj_mem_freevec(g, ls->vstack, ls->sizevstack, VarInfo); | ||
347 | lj_str_freebuf(g, &ls->sb); | ||
348 | } | ||
349 | |||
338 | void lj_lex_next(LexState *ls) | 350 | void lj_lex_next(LexState *ls) |
339 | { | 351 | { |
340 | ls->lastline = ls->linenumber; | 352 | ls->lastline = ls->linenumber; |