ScummVM API documentation
lparser.h
1
/*
2
** $Id$
3
** Lua Parser
4
** See Copyright Notice in lua.h
5
*/
6
7
#ifndef lparser_h
8
#define lparser_h
9
10
#include "llimits.h"
11
#include "lobject.h"
12
#include "lzio.h"
13
14
15
/*
16
** Expression descriptor
17
*/
18
19
typedef
enum
{
20
VVOID,
/* no value */
21
VNIL,
22
VTRUE,
23
VFALSE,
24
VK,
/* info = index of constant in `k' */
25
VKNUM,
/* nval = numerical value */
26
VLOCAL,
/* info = local register */
27
VUPVAL,
/* info = index of upvalue in `upvalues' */
28
VGLOBAL,
/* info = index of table; aux = index of global name in `k' */
29
VINDEXED,
/* info = table register; aux = index register (or `k') */
30
VJMP,
/* info = instruction pc */
31
VRELOCABLE,
/* info = instruction pc */
32
VNONRELOC,
/* info = result register */
33
VCALL,
/* info = instruction pc */
34
VVARARG
/* info = instruction pc */
35
} expkind;
36
37
typedef
struct
expdesc
{
38
expkind k;
39
union
{
40
struct
{
int
info, aux; } s;
41
lua_Number nval;
42
} u;
43
int
t;
/* patch list of `exit when true' */
44
int
f;
/* patch list of `exit when false' */
45
}
expdesc
;
46
47
48
typedef
struct
upvaldesc
{
49
lu_byte k;
50
lu_byte info;
51
}
upvaldesc
;
52
53
54
struct
BlockCnt;
/* defined in lparser.c */
55
56
57
/* state needed to generate code for a given function */
58
typedef
struct
FuncState
{
59
Proto
*f;
/* current function header */
60
Table
*h;
/* table to find (and reuse) elements in `k' */
61
struct
FuncState
*prev;
/* enclosing function */
62
struct
LexState
*ls;
/* lexical state */
63
struct
lua_State
*L;
/* copy of the Lua state */
64
struct
BlockCnt *bl;
/* chain of current blocks */
65
int
pc;
/* next position to code (equivalent to `ncode') */
66
int
lasttarget;
/* `pc' of last `jump target' */
67
int
jpc;
/* list of pending jumps to `pc' */
68
int
freereg;
/* first free register */
69
int
nk;
/* number of elements in `k' */
70
int
np;
/* number of elements in `p' */
71
short
nlocvars;
/* number of elements in `locvars' */
72
lu_byte nactvar;
/* number of active local variables */
73
upvaldesc
upvalues[LUAI_MAXUPVALUES];
/* upvalues */
74
unsigned
short
actvar[LUAI_MAXVARS];
/* declared-variable stack */
75
}
FuncState
;
76
77
78
LUAI_FUNC
Proto
*luaY_parser (
lua_State
*L,
ZIO
*z,
Mbuffer
*buff,
79
const
char
*name);
80
81
82
#endif
lua_State
Definition:
lstate.h:100
upvaldesc
Definition:
lparser.h:48
Proto
Definition:
lobject.h:231
Mbuffer
Definition:
lzio.h:24
FuncState
Definition:
lparser.h:58
LexState
Definition:
llex.h:55
expdesc
Definition:
lparser.h:37
Zio
Definition:
lzio.h:56
Table
Definition:
lobject.h:338
common
lua
lparser.h
Generated on Thu Nov 21 2024 09:06:00 for ScummVM API documentation by
1.8.13