summaryrefslogtreecommitdiff
path: root/com.h
blob: c623d49dda63d850978fbc3f7eabbb06647a405b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef _com_h
#define _com_h

typedef struct _compiler Compiler;

#include "state.h"
#include "chunk.h"


typedef struct {
	char *name;
	uint8_t slot;
} Local;

#define MAX_LOCALS 256
typedef struct _scope Scope;
struct _scope {
	Scope *outer;
	uint8_t nlocals;
	Local locals[MAX_LOCALS];
};

struct _compiler {
	State *S;
	Chunk *ch;
	int stack_cur;
	Scope *scope;
};
Compiler compiler_new(Compiler *outer, Chunk *ch);

#define BYTECODE(C) (C->ch->bc)

#endif