MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / llex

Function llex

Source/Misc/lua/src/lua.c:7045–7156  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7043
7044
7045static int llex (LexState *ls, SemInfo *seminfo) {
7046luaZ_resetbuffer(ls->buff);
7047for (;;) {
7048switch (ls->current) {
7049case '\n':
7050case '\r': {
7051inclinenumber(ls);
7052continue;
7053}
7054case '-': {
7055next(ls);
7056if (ls->current != '-') return '-';
7057/* else is a comment */
7058next(ls);
7059if (ls->current == '[') {
7060int sep = skip_sep(ls);
7061luaZ_resetbuffer(ls->buff); /* `skip_sep' may dirty the buffer */
7062if (sep >= 0) {
7063read_long_string(ls, NULL, sep); /* long comment */
7064luaZ_resetbuffer(ls->buff);
7065continue;
7066}
7067}
7068/* else short comment */
7069while (!currIsNewline(ls) && ls->current != EOZ)
7070next(ls);
7071continue;
7072}
7073case '[': {
7074int sep = skip_sep(ls);
7075if (sep >= 0) {
7076read_long_string(ls, seminfo, sep);
7077return TK_STRING;
7078}
7079else if (sep == -1) return '[';
7080else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING);
7081}
7082case '=': {
7083next(ls);
7084if (ls->current != '=') return '=';
7085else { next(ls); return TK_EQ; }
7086}
7087case '<': {
7088next(ls);
7089if (ls->current != '=') return '<';
7090else { next(ls); return TK_LE; }
7091}
7092case '>': {
7093next(ls);
7094if (ls->current != '=') return '>';
7095else { next(ls); return TK_GE; }
7096}
7097case '~': {
7098next(ls);
7099if (ls->current != '=') return '~';
7100else { next(ls); return TK_NE; }
7101}
7102case '"':

Callers 2

luaX_nextFunction · 0.85
luaX_lookaheadFunction · 0.85

Calls 9

inclinenumberFunction · 0.85
nextFunction · 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
luaX_newstringFunction · 0.85

Tested by

no test coverage detected