summaryrefslogtreecommitdiff
path: root/group.h
blob: 571bf17ffd6e88be2bfdad73aaad6bc45c990284 (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
#pragma once

enum {
	GROUP_NONE       = 0,
	GROUP_SCOPE      = 's',
	GROUP_ATOM       = 'a',
	GROUP_FUNCTION   = 'f',
	GROUP_EXPRESSION = 'x',
	GROUP_FUNCALL    = 'e',
	GROUP_ASSIGN     = '=',
	GROUP_LET        = 'l',
	GROUP_DEREF      = 'd',
	GROUP_RETURN     = 'r',
	GROUP_IF         = 'i',
	GROUP_ELSE       = 'o',
	GROUP_WHILE      = 'w',
};

struct Token;
typedef struct {
	unsigned int type;
	struct Token *tokens;
	struct Token *scope;
} Group;

struct Token *group_create(struct Token **l, struct Token *b, struct Token *e);
void group_extract(struct Token **list, struct Token *group);
int group_scope(struct Token **list);
int group_funcall(struct Token **list);
int group_deref(struct Token **list);
int group_atom(struct Token **list);