MCPcopy Create free account
hub / github.com/TASEmulators/fceux / llex

Function llex

src/lua/src/llex.c:332–443  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

330
331
332static int llex (LexState *ls, SemInfo *seminfo) {
333 luaZ_resetbuffer(ls->buff);
334 for (;;) {
335 switch (ls->current) {
336 case '\n':
337 case '\r': {
338 inclinenumber(ls);
339 continue;
340 }
341 case '-': {
342 next(ls);
343 if (ls->current != '-') return '-';
344 /* else is a comment */
345 next(ls);
346 if (ls->current == '[') {
347 int sep = skip_sep(ls);
348 luaZ_resetbuffer(ls->buff); /* `skip_sep' may dirty the buffer */
349 if (sep >= 0) {
350 read_long_string(ls, NULL, sep); /* long comment */
351 luaZ_resetbuffer(ls->buff);
352 continue;
353 }
354 }
355 /* else short comment */
356 while (!currIsNewline(ls) && ls->current != EOZ)
357 next(ls);
358 continue;
359 }
360 case '[': {
361 int sep = skip_sep(ls);
362 if (sep >= 0) {
363 read_long_string(ls, seminfo, sep);
364 return TK_STRING;
365 }
366 else if (sep == -1) return '[';
367 else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING);
368 }
369 case '=': {
370 next(ls);
371 if (ls->current != '=') return '=';
372 else { next(ls); return TK_EQ; }
373 }
374 case '<': {
375 next(ls);
376 if (ls->current != '=') return '<';
377 else { next(ls); return TK_LE; }
378 }
379 case '>': {
380 next(ls);
381 if (ls->current != '=') return '>';
382 else { next(ls); return TK_GE; }
383 }
384 case '~': {
385 next(ls);
386 if (ls->current != '=') return '~';
387 else { next(ls); return TK_NE; }
388 }
389 case '"':

Callers 2

luaX_nextFunction · 0.85
luaX_lookaheadFunction · 0.85

Calls 9

inclinenumberFunction · 0.85
skip_sepFunction · 0.85
read_long_stringFunction · 0.85
luaX_lexerrorFunction · 0.85
read_stringFunction · 0.85
check_nextFunction · 0.85
read_numeralFunction · 0.85
isspaceClass · 0.85
luaX_newstringFunction · 0.85

Tested by

no test coverage detected