aboutsummaryrefslogtreecommitdiff
path: root/src/lj_lex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_lex.c')
-rw-r--r--src/lj_lex.c14
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
304void lj_lex_start(lua_State *L, LexState *ls) 304/* Setup lexer state. */
305void 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. */
343void 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
338void lj_lex_next(LexState *ls) 350void lj_lex_next(LexState *ls)
339{ 351{
340 ls->lastline = ls->linenumber; 352 ls->lastline = ls->linenumber;