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);
|