gateway: simplify stopping the cleanup timer
[olsrd.git] / lib / tas / src / lua / lparser.h
1
2 /*
3 ** $Id: lparser.h,v 1.47 2003/02/11 10:46:24 roberto Exp $
4 ** Lua Parser
5 ** See Copyright Notice in lua.h
6 */
7
8 #ifndef lparser_h
9 #define lparser_h
10
11 #include "llimits.h"
12 #include "lobject.h"
13 #include "ltable.h"
14 #include "lzio.h"
15
16
17 /*
18 ** Expression descriptor
19 */
20
21 typedef enum {
22   VVOID,                               /* no value */
23   VNIL,
24   VTRUE,
25   VFALSE,
26   VK,                                  /* info = index of constant in `k' */
27   VLOCAL,                              /* info = local register */
28   VUPVAL,                              /* info = index of upvalue in `upvalues' */
29   VGLOBAL,                             /* info = index of table; aux = index of global name in `k' */
30   VINDEXED,                            /* info = table register; aux = index register (or `k') */
31   VJMP,                                /* info = instruction pc */
32   VRELOCABLE,                          /* info = instruction pc */
33   VNONRELOC,                           /* info = result register */
34   VCALL                                /* info = result register */
35 } expkind;
36
37 typedef struct expdesc {
38   expkind k;
39   int info, aux;
40   int t;                               /* patch list of `exit when true' */
41   int f;                               /* patch list of `exit when false' */
42 } expdesc;
43
44
45 struct BlockCnt;                       /* defined in lparser.c */
46
47
48 /* state needed to generate code for a given function */
49 typedef struct FuncState {
50   Proto *f;                            /* current function header */
51   Table *h;                            /* table to find (and reuse) elements in `k' */
52   struct FuncState *prev;              /* enclosing function */
53   struct LexState *ls;                 /* lexical state */
54   struct lua_State *L;                 /* copy of the Lua state */
55   struct BlockCnt *bl;                 /* chain of current blocks */
56   int pc;                              /* next position to code (equivalent to `ncode') */
57   int lasttarget;                      /* `pc' of last `jump target' */
58   int jpc;                             /* list of pending jumps to `pc' */
59   int freereg;                         /* first free register */
60   int nk;                              /* number of elements in `k' */
61   int np;                              /* number of elements in `p' */
62   int nlocvars;                        /* number of elements in `locvars' */
63   int nactvar;                         /* number of active local variables */
64   expdesc upvalues[MAXUPVALUES];       /* upvalues */
65   int actvar[MAXVARS];                 /* declared-variable stack */
66 } FuncState;
67
68
69 Proto *luaY_parser(lua_State * L, ZIO * z, Mbuffer * buff);
70
71
72 #endif