lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


/* state needed to generate code for a given function */
typedef struct FuncState {
 Proto *f;  /* current function header */
 Table *h;  /* table to find (and reuse) elements in `k' */
 struct FuncState *prev;  /* enclosing function */
 struct LexState *ls;  /* lexical state */
 struct lua_State *L;  /* copy of the Lua state */
 struct BlockCnt *bl;  /* chain of current blocks */
 int pc;  /* next position to code (equivalent to `ncode') */
 int lasttarget;   /* `pc' of last `jump target' */
 int jpc;  /* list of pending jumps to `pc' */
 int freereg;  /* first free register */
 int nk;  /* number of elements in `k' */
 int np;  /* number of elements in `p' */
 short nlocvars;  /* number of elements in `locvars' */
 lu_byte nactvar;  /* number of active local variables */
 upvaldesc upvalues[LUAI_MAXUPVALUES];  /* upvalues */
 unsigned short actvar[LUAI_MAXVARS];  /* declared-variable stack */
} FuncState;

I know the struct FuncState is important for parsing. But I don't
understand clearly the expression parsing  and assignment parsing. I'm
stumbled especially by the member 'freereg' and 'nactvar' of
FuncState.
Would you explain the detailed information of 'freereg' and 'nactvar'?