History

Lua 4.0

Lua Team committed 26 years ago

Commit e22497f1 parent 0125a77117 files · +12837 −10103Browse files

Showing the changes to src/lcode.h (1 of 117 files). Show all

Unified · Split

src/lcode.h+70−0
@@ -0,0 +1,70 @@
1/*
2** $Id: lcode.h,v 1.16 2000/08/09 14:49:13 roberto Exp $
3** Code generator for Lua
4** See Copyright Notice in lua.h
5*/
6
7#ifndef lcode_h
8#define lcode_h
9
10#include "llex.h"
11#include "lobject.h"
12#include "lopcodes.h"
13#include "lparser.h"
14
15
16/*
17** Marks the end of a patch list. It is an invalid value both as an absolute
18** address, and as a list link (would link an element to itself).
19*/
20#define NO_JUMP (-1)
21
22
23/*
24** grep "ORDER OPR" if you change these enums
25*/
26typedef enum BinOpr {
27 OPR_ADD, OPR_SUB, OPR_MULT, OPR_DIV, OPR_POW,
28 OPR_CONCAT,
29 OPR_NE, OPR_EQ, OPR_LT, OPR_LE, OPR_GT, OPR_GE,
30 OPR_AND, OPR_OR,
31 OPR_NOBINOPR
32} BinOpr;
33
34typedef enum UnOpr { OPR_MINUS, OPR_NOT, OPR_NOUNOPR } UnOpr;
35
36
37enum Mode {iO, iU, iS, iAB}; /* instruction format */
38
39#define VD 100 /* flag for variable delta */
40
41extern const struct OpProperties {
42 char mode;
43 unsigned char push;
44 unsigned char pop;
45} luaK_opproperties[];
46
47
48void luaK_error (LexState *ls, const char *msg);
49int luaK_code0 (FuncState *fs, OpCode o);
50int luaK_code1 (FuncState *fs, OpCode o, int arg1);
51int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2);
52int luaK_jump (FuncState *fs);
53void luaK_patchlist (FuncState *fs, int list, int target);
54void luaK_concat (FuncState *fs, int *l1, int l2);
55void luaK_goiftrue (FuncState *fs, expdesc *v, int keepvalue);
56int luaK_getlabel (FuncState *fs);
57void luaK_deltastack (FuncState *fs, int delta);
58void luaK_kstr (LexState *ls, int c);
59void luaK_number (FuncState *fs, Number f);
60void luaK_adjuststack (FuncState *fs, int n);
61int luaK_lastisopen (FuncState *fs);
62void luaK_setcallreturns (FuncState *fs, int nresults);
63void luaK_tostack (LexState *ls, expdesc *v, int onlyone);
64void luaK_storevar (LexState *ls, const expdesc *var);
65void luaK_prefix (LexState *ls, UnOpr op, expdesc *v);
66void luaK_infix (LexState *ls, BinOpr op, expdesc *v);
67void luaK_posfix (LexState *ls, BinOpr op, expdesc *v1, expdesc *v2);
68
69
70#endif