~ubuntu-branches/ubuntu/quantal/genometools/quantal-backports

« back to all changes in this revision

Viewing changes to src/external/lua-5.1.4/src/lparser.h

  • Committer: Package Import Robot
  • Author(s): Sascha Steinbiss
  • Date: 2012-07-09 14:10:23 UTC
  • Revision ID: package-import@ubuntu.com-20120709141023-juuu4spm6chqsf9o
Tags: upstream-1.4.1
ImportĀ upstreamĀ versionĀ 1.4.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
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