# lua/llex.c File Reference

`#include <ctype.h>`
`#include <locale.h>`
`#include <string.h>`
`#include "lua.h"`
`#include "ldo.h"`
`#include "llex.h"`
`#include "lobject.h"`
`#include "lparser.h"`
`#include "lstate.h"`
`#include "lstring.h"`
`#include "ltable.h"`
`#include "lzio.h"`

Include dependency graph for llex.c:

Go to the source code of this file.

## Defines

#define | llex_c
#define | LUA_CORE
#define | next(ls) (ls->current = zgetc(ls->z))
#define | currIsNewline(ls) (ls->current == '\n' || ls->current == '\r')
#define | save_and_next(ls) (save(ls, ls->current), next(ls))
#define | MAXSRC 80

## Functions

static void | save (LexState *ls, int c)
void | luaX_init (lua_State *L)
const char * | luaX_token2str (LexState *ls, int token)
static const char * | txtToken (LexState *ls, int token)
void | luaX_lexerror (LexState *ls, const char *msg, int token)
void | luaX_syntaxerror (LexState *ls, const char *msg)
TString * | luaX_newstring (LexState *ls, const char *str, size_t l)
static void | inclinenumber (LexState *ls)
void | luaX_setinput (lua_State *L, LexState *ls, ZIO *z, TString *source)
static int | check_next (LexState *ls, const char *set)
static void | buffreplace (LexState *ls, char from, char to)
static void | trydecpoint (LexState *ls, SemInfo *seminfo)
static void | read_numeral (LexState *ls, SemInfo *seminfo)
static int | skip_sep (LexState *ls)
static void | read_long_string (LexState *ls, SemInfo *seminfo, int sep)
static void | read_string (LexState *ls, int del, SemInfo *seminfo)
static int | llex (LexState *ls, SemInfo *seminfo)
void | luaX_next (LexState *ls)
void | luaX_lookahead (LexState *ls)

## Variables

const char *const | luaX_tokens []

## Define Documentation

#define currIsNewline | ( | ls |  | ) | (ls->current == '\n' || ls->current == '\r')

Definition at line 33 of file llex.c.

Referenced by inclinenumber(), llex(), and read_long_string().

#define llex_c

Definition at line 12 of file llex.c.

#define LUA_CORE

Definition at line 13 of file llex.c.

#define MAXSRC 80

Definition at line 75 of file llex.c.

Referenced by luaX_lexerror().

#define next | ( | ls |  | ) | (ls->current = zgetc(ls->z))

Definition at line 28 of file llex.c.

Referenced by Fts_read(), inclinenumber(), llex(), luaK_concat(), luaS_resize(), luaX_setinput(), parseFormat(), patchlistaux(), read_long_string(), read_string(), rpmalAdd(), rpmdbClose(), rpmdbFreeIterator(), and rpmReadPackageManifest().

#define save_and_next | ( | ls |  | ) | (save(ls, ls->current), next(ls))

Definition at line 48 of file llex.c.

Referenced by check_next(), llex(), read_long_string(), read_numeral(), read_string(), and skip_sep().

## Function Documentation

static void buffreplace | ( | LexState * | ls,
|  | char | from,
|  | char | to |
| ) |  |  | `[static]`

Definition at line 169 of file llex.c.

References LexState::buff, luaZ_buffer, and luaZ_bufflen.

Referenced by read_numeral(), and trydecpoint().

static int check_next | ( | LexState * | ls,
|  | const char * | set |
| ) |  |  | `[static]`

Definition at line 161 of file llex.c.

References LexState::current, and save_and_next.

Referenced by llex(), and read_numeral().

static void inclinenumber | ( | LexState * | ls | ) | `[static]`

Definition at line 127 of file llex.c.

References LexState::current, currIsNewline, LexState::linenumber, lua_assert, luaX_syntaxerror(), MAX_INT, and next.

Referenced by llex(), read_long_string(), and read_string().

static int llex | ( | LexState * | ls,
|  | SemInfo * | seminfo |
| ) |  |  | `[static]`

Definition at line 332 of file llex.c.

References LexState::buff, check_next(), LexState::current, currIsNewline, EOZ, FIRST_RESERVED, inclinenumber(), lua_assert, luaX_lexerror(), luaX_newstring(), luaZ_buffer, luaZ_bufflen, luaZ_resetbuffer, next, read_long_string(), read_numeral(), read_string(), TString::reserved, save_and_next, skip_sep(), TK_CONCAT, TK_DOTS, TK_EOS, TK_EQ, TK_GE, TK_LE, TK_NAME, TK_NE, TK_NUMBER, TK_STRING, SemInfo::ts, and TString::tsv.

Referenced by luaX_lookahead(), and luaX_next().

void luaX_init | ( | lua_State * | L | ) |

Definition at line 64 of file llex.c.

References cast_byte, lua_assert, luaS_fix, luaS_new, luaX_tokens, NUM_RESERVED, TString::reserved, TOKEN_LEN, and TString::tsv.

Referenced by f_luaopen().

void luaX_lexerror | ( | LexState * | ls,
|  | const char * | msg,
|  | int | token |
| ) |  |  |

Definition at line 102 of file llex.c.

References getstr, LexState::L, LexState::linenumber, luaD_throw(), luaO_chunkid(), luaO_pushfstring(), MAXSRC, LexState::source, and txtToken().

Referenced by enterlevel(), errorlimit(), llex(), luaX_syntaxerror(), read_long_string(), read_string(), save(), and trydecpoint().

void luaX_lookahead | ( | LexState * | ls | ) |

Definition at line 457 of file llex.c.

References llex(), LexState::lookahead, lua_assert, Token::seminfo, TK_EOS, and Token::token.

Referenced by constructor().

TString* luaX_newstring | ( | LexState * | ls,
|  | const char * | str,
|  | size_t | l |
| ) |  |  |

Definition at line 117 of file llex.c.

References LexState::fs, FuncState::h, LexState::L, luaH_setstr(), luaS_newlstr(), setbvalue, and ttisnil.

Referenced by anchor_token(), llex(), read_long_string(), and read_string().

void luaX_next | ( | LexState * | ls | ) |

Definition at line 446 of file llex.c.

References LexState::lastline, LexState::linenumber, llex(), LexState::lookahead, Token::seminfo, LexState::t, TK_EOS, and Token::token.

Referenced by checknext(), field(), forstat(), funcargs(), funcstat(), ifstat(), luaY_parser(), parlist(), prefixexp(), primaryexp(), repeatstat(), retstat(), simpleexp(), statement(), str_checkname(), subexpr(), test_then_block(), testnext(), whilestat(), and yindex().

void luaX_setinput | ( | lua_State * | L,
|  | LexState * | ls,
|  | ZIO * | z,
|  | TString * | source |
| ) |  |  |

Definition at line 138 of file llex.c.

References LexState::buff, LexState::decpoint, LexState::fs, LexState::L, LexState::lastline, LexState::linenumber, LexState::lookahead, LUA_MINBUFFER, luaZ_resizebuffer, next, LexState::source, TK_EOS, Token::token, and LexState::z.

Referenced by luaY_parser().

void luaX_syntaxerror | ( | LexState * | ls,
|  | const char * | msg |
| ) |  |  |

Definition at line 112 of file llex.c.

References luaX_lexerror(), LexState::t, and Token::token.

Referenced by breakstat(), check_match(), error_expected(), fixjump(), forstat(), funcargs(), inclinenumber(), luaK_checkstack(), parlist(), and prefixexp().

const char* luaX_token2str | ( | LexState * | ls,
|  | int | token |
| ) |  |  |

Definition at line 78 of file llex.c.

References cast, FIRST_RESERVED, LexState::L, lua_assert, luaO_pushfstring(), and luaX_tokens.

Referenced by check_match(), error_expected(), and txtToken().

static void read_long_string | ( | LexState * | ls,
|  | SemInfo * | seminfo,
|  | int | sep |
| ) |  |  | `[static]`

Definition at line 221 of file llex.c.

References LexState::buff, LexState::current, currIsNewline, EOZ, inclinenumber(), luaX_lexerror(), luaX_newstring(), luaZ_buffer, luaZ_bufflen, luaZ_resetbuffer, next, save(), save_and_next, skip_sep(), TK_EOS, and SemInfo::ts.

Referenced by llex().

static void read_numeral | ( | LexState * | ls,
|  | SemInfo * | seminfo |
| ) |  |  | `[static]`

Definition at line 192 of file llex.c.

References LexState::buff, buffreplace(), check_next(), LexState::current, LexState::decpoint, lua_assert, luaO_str2d(), luaZ_buffer, SemInfo::r, save(), save_and_next, and trydecpoint().

Referenced by llex().

static void read_string | ( | LexState * | ls,
|  | int | del,
|  | SemInfo * | seminfo |
| ) |  |  | `[static]`

Definition at line 276 of file llex.c.

References LexState::buff, LexState::current, EOZ, inclinenumber(), luaX_lexerror(), luaX_newstring(), luaZ_buffer, luaZ_bufflen, next, save(), save_and_next, TK_EOS, TK_STRING, and SemInfo::ts.

Referenced by llex().

static void save | ( | LexState * | ls,
|  | int | c |
| ) |  |  | `[static]`

Definition at line 51 of file llex.c.

References LexState::buff, Mbuffer::buffer, Mbuffer::buffsize, cast, LexState::L, luaX_lexerror(), luaZ_resizebuffer, MAX_SIZET, and Mbuffer::n.

Referenced by headerLoad(), read_long_string(), read_numeral(), read_string(), rpmdsMerge(), rpmdsSearch(), rpmfiDecideFate(), rpmsqAction(), and txtToken().

static int skip_sep | ( | LexState * | ls | ) | `[static]`

Definition at line 208 of file llex.c.

References LexState::current, lua_assert, and save_and_next.

Referenced by llex(), and read_long_string().

static void trydecpoint | ( | LexState * | ls,
|  | SemInfo * | seminfo |
| ) |  |  | `[static]`

Definition at line 177 of file llex.c.

References LexState::buff, buffreplace(), LexState::decpoint, luaO_str2d(), luaX_lexerror(), luaZ_buffer, SemInfo::r, and TK_NUMBER.

Referenced by read_numeral().

static const char* txtToken | ( | LexState * | ls,
|  | int | token |
| ) |  |  | `[static]`

Definition at line 89 of file llex.c.

References LexState::buff, luaX_token2str(), luaZ_buffer, save(), TK_NAME, TK_NUMBER, and TK_STRING.

Referenced by luaX_lexerror().

## Variable Documentation

const char* const luaX_tokens[]

Initial value:

     {
        "and", "break", "do", "else", "elseif",
        "end", "false", "for", "function", "if",
        "in", "local", "nil", "not", "or", "repeat",
        "return", "then", "true", "until", "while",
        "..", "...", "==", ">=", "<=", "~=",
        "<number>", "<name>", "<string>", "<eof>",
        NULL
    }

Definition at line 37 of file llex.c.

Referenced by luaX_init(), and luaX_token2str().