- [NEW] Ara usa Lua 5.5.0
- [NEW] Lua ara es una llibreria estàtica, pa no compilarlo cada vegada (Linux, falta en Windows) - [FIX] Arreglats mig kilo de warnings - [FIX] include <mutex> per a lua.debug
This commit is contained in:
57
source/external/lua/lparser.h
vendored
57
source/external/lua/lparser.h
vendored
@@ -32,26 +32,36 @@ typedef enum {
|
||||
VKFLT, /* floating constant; nval = numerical float value */
|
||||
VKINT, /* integer constant; ival = numerical integer value */
|
||||
VKSTR, /* string constant; strval = TString address;
|
||||
(string is fixed by the lexer) */
|
||||
(string is fixed by the scanner) */
|
||||
VNONRELOC, /* expression has its value in a fixed register;
|
||||
info = result register */
|
||||
VLOCAL, /* local variable; var.ridx = register index;
|
||||
var.vidx = relative index in 'actvar.arr' */
|
||||
VVARGVAR, /* vararg parameter; var.ridx = register index;
|
||||
var.vidx = relative index in 'actvar.arr' */
|
||||
VGLOBAL, /* global variable;
|
||||
info = relative index in 'actvar.arr' (or -1 for
|
||||
implicit declaration) */
|
||||
VUPVAL, /* upvalue variable; info = index of upvalue in 'upvalues' */
|
||||
VCONST, /* compile-time <const> variable;
|
||||
info = absolute index in 'actvar.arr' */
|
||||
VINDEXED, /* indexed variable;
|
||||
ind.t = table register;
|
||||
ind.idx = key's R index */
|
||||
ind.idx = key's R index;
|
||||
ind.ro = true if it represents a read-only global;
|
||||
ind.keystr = if key is a string, index in 'k' of that string;
|
||||
-1 if key is not a string */
|
||||
VVARGIND, /* indexed vararg parameter;
|
||||
ind.* as in VINDEXED */
|
||||
VINDEXUP, /* indexed upvalue;
|
||||
ind.t = table upvalue;
|
||||
ind.idx = key's K index */
|
||||
ind.idx = key's K index;
|
||||
ind.* as in VINDEXED */
|
||||
VINDEXI, /* indexed variable with constant integer;
|
||||
ind.t = table register;
|
||||
ind.idx = key's value */
|
||||
VINDEXSTR, /* indexed variable with literal string;
|
||||
ind.t = table register;
|
||||
ind.idx = key's K index */
|
||||
ind.idx = key's K index;
|
||||
ind.* as in VINDEXED */
|
||||
VJMP, /* expression is a test/comparison;
|
||||
info = pc of corresponding jump instruction */
|
||||
VRELOC, /* expression can put result in any register;
|
||||
@@ -75,10 +85,12 @@ typedef struct expdesc {
|
||||
struct { /* for indexed variables */
|
||||
short idx; /* index (R or "long" K) */
|
||||
lu_byte t; /* table (register or upvalue) */
|
||||
lu_byte ro; /* true if variable is read-only */
|
||||
int keystr; /* index in 'k' of string key, or -1 if not a string */
|
||||
} ind;
|
||||
struct { /* for local variables */
|
||||
lu_byte ridx; /* register holding the variable */
|
||||
unsigned short vidx; /* compiler index (in 'actvar.arr') */
|
||||
short vidx; /* index in 'actvar.arr' */
|
||||
} var;
|
||||
} u;
|
||||
int t; /* patch list of 'exit when true' */
|
||||
@@ -87,12 +99,22 @@ typedef struct expdesc {
|
||||
|
||||
|
||||
/* kinds of variables */
|
||||
#define VDKREG 0 /* regular */
|
||||
#define RDKCONST 1 /* constant */
|
||||
#define RDKTOCLOSE 2 /* to-be-closed */
|
||||
#define RDKCTC 3 /* compile-time constant */
|
||||
#define VDKREG 0 /* regular local */
|
||||
#define RDKCONST 1 /* local constant */
|
||||
#define RDKVAVAR 2 /* vararg parameter */
|
||||
#define RDKTOCLOSE 3 /* to-be-closed */
|
||||
#define RDKCTC 4 /* local compile-time constant */
|
||||
#define GDKREG 5 /* regular global */
|
||||
#define GDKCONST 6 /* global constant */
|
||||
|
||||
/* description of an active local variable */
|
||||
/* variables that live in registers */
|
||||
#define varinreg(v) ((v)->vd.kind <= RDKTOCLOSE)
|
||||
|
||||
/* test for global variables */
|
||||
#define varglobal(v) ((v)->vd.kind >= GDKREG)
|
||||
|
||||
|
||||
/* description of an active variable */
|
||||
typedef union Vardesc {
|
||||
struct {
|
||||
TValuefields; /* constant value (if it is a compile-time constant) */
|
||||
@@ -111,8 +133,8 @@ typedef struct Labeldesc {
|
||||
TString *name; /* label identifier */
|
||||
int pc; /* position in code */
|
||||
int line; /* line where it appeared */
|
||||
lu_byte nactvar; /* number of active variables in that position */
|
||||
lu_byte close; /* goto that escapes upvalues */
|
||||
short nactvar; /* number of active variables in that position */
|
||||
lu_byte close; /* true for goto that escapes upvalues */
|
||||
} Labeldesc;
|
||||
|
||||
|
||||
@@ -146,6 +168,7 @@ typedef struct FuncState {
|
||||
struct FuncState *prev; /* enclosing function */
|
||||
struct LexState *ls; /* lexical state */
|
||||
struct BlockCnt *bl; /* chain of current blocks */
|
||||
Table *kcache; /* cache for reusing constants */
|
||||
int pc; /* next position to code (equivalent to 'ncode') */
|
||||
int lasttarget; /* 'label' of last 'jump label' */
|
||||
int previousline; /* last line that was saved in 'lineinfo' */
|
||||
@@ -155,7 +178,7 @@ typedef struct FuncState {
|
||||
int firstlocal; /* index of first local var (in Dyndata array) */
|
||||
int firstlabel; /* index of first label (in 'dyd->label->arr') */
|
||||
short ndebugvars; /* number of elements in 'f->locvars' */
|
||||
lu_byte nactvar; /* number of active local variables */
|
||||
short nactvar; /* number of active variable declarations */
|
||||
lu_byte nups; /* number of upvalues */
|
||||
lu_byte freereg; /* first free register */
|
||||
lu_byte iwthabs; /* instructions issued since last absolute line info */
|
||||
@@ -163,7 +186,9 @@ typedef struct FuncState {
|
||||
} FuncState;
|
||||
|
||||
|
||||
LUAI_FUNC int luaY_nvarstack (FuncState *fs);
|
||||
LUAI_FUNC lu_byte luaY_nvarstack (FuncState *fs);
|
||||
LUAI_FUNC void luaY_checklimit (FuncState *fs, int v, int l,
|
||||
const char *what);
|
||||
LUAI_FUNC LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
|
||||
Dyndata *dyd, const char *name, int firstchar);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user