Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ceguilua/src/lua-5.0.3/lua/lparser.h @ 1803

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

added files for lua 5.1.3, lua 5.0.3, CEGUILua-0.6.1 and CEGUILua-0.5.0b

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1/*
2** $Id: lparser.h,v 1.47 2003/02/11 10:46:24 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 "ltable.h"
13#include "lzio.h"
14
15
16/*
17** Expression descriptor
18*/
19
20typedef enum {
21  VVOID,        /* no value */
22  VNIL,
23  VTRUE,
24  VFALSE,
25  VK,           /* info = index of constant in `k' */
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 = result register */
34} expkind;
35
36typedef struct expdesc {
37  expkind k;
38  int info, aux;
39  int t;  /* patch list of `exit when true' */
40  int f;  /* patch list of `exit when false' */
41} expdesc;
42
43
44struct BlockCnt;  /* defined in lparser.c */
45
46
47/* state needed to generate code for a given function */
48typedef struct FuncState {
49  Proto *f;  /* current function header */
50  Table *h;  /* table to find (and reuse) elements in `k' */
51  struct FuncState *prev;  /* enclosing function */
52  struct LexState *ls;  /* lexical state */
53  struct lua_State *L;  /* copy of the Lua state */
54  struct BlockCnt *bl;  /* chain of current blocks */
55  int pc;  /* next position to code (equivalent to `ncode') */
56  int lasttarget;   /* `pc' of last `jump target' */
57  int jpc;  /* list of pending jumps to `pc' */
58  int freereg;  /* first free register */
59  int nk;  /* number of elements in `k' */
60  int np;  /* number of elements in `p' */
61  int nlocvars;  /* number of elements in `locvars' */
62  int nactvar;  /* number of active local variables */
63  expdesc upvalues[MAXUPVALUES];  /* upvalues */
64  int actvar[MAXVARS];  /* declared-variable stack */
65} FuncState;
66
67
68Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff);
69
70
71#endif
Note: See TracBrowser for help on using the repository browser.