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
Definition: lstate.h:100
Definition: lparser.h:48
Definition: lobject.h:231
Definition: lzio.h:24
Definition: lparser.h:58
Definition: llex.h:55
Definition: lparser.h:37
Definition: lzio.h:56
Definition: lobject.h:338