Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ceguilua/src/lua/lparser.h @ 2171

Last change on this file since 2171 was 1806, checked in by rgrieder, 16 years ago

added single 5.1.3 directory for lua since CEGUILua 0.5 can also build against lua 5.1

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1/*
2** $Id: lparser.h,v 1.57.1.1 2007/12/27 13:02:25 roberto Exp $
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
19typedef 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
37typedef 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
48typedef struct upvaldesc {
49  lu_byte k;
50  lu_byte info;
51} upvaldesc;
52
53
54struct BlockCnt;  /* defined in lparser.c */
55
56
57/* state needed to generate code for a given function */
58typedef 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
78LUAI_FUNC Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
79                                            const char *name);
80
81
82#endif
Note: See TracBrowser for help on using the repository browser.