mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
616e8f9924
Most visible change is that error messages when a function is called with the wrong number of arguments are much better.
42 lines
640 B
C
42 lines
640 B
C
#ifndef OPCODE_H
|
|
#define OPCODE_H
|
|
#include <assert.h>
|
|
|
|
typedef enum {
|
|
#define OP(name, imm, in, out) name,
|
|
#include "opcode_list.h"
|
|
#undef OP
|
|
} opcode;
|
|
|
|
enum {
|
|
NUM_OPCODES =
|
|
#define OP(name, imm, in, out) +1
|
|
#include "opcode_list.h"
|
|
#undef OP
|
|
};
|
|
|
|
enum {
|
|
OP_HAS_CONSTANT = 2,
|
|
OP_HAS_VARIABLE = 4,
|
|
OP_HAS_BRANCH = 8,
|
|
OP_HAS_CFUNC = 32,
|
|
OP_HAS_UFUNC = 64,
|
|
OP_IS_CALL_PSEUDO = 128,
|
|
OP_HAS_BINDING = 1024,
|
|
};
|
|
struct opcode_description {
|
|
opcode op;
|
|
const char* name;
|
|
|
|
int flags;
|
|
|
|
// length in 16-bit units
|
|
int length;
|
|
|
|
int stack_in, stack_out;
|
|
};
|
|
|
|
const struct opcode_description* opcode_describe(opcode op);
|
|
|
|
#endif
|