-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtg_parser.h
68 lines (55 loc) · 1.59 KB
/
tg_parser.h
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef TG_PARSER_H
#define TG_PARSER_H
#include "tg_darray.h"
#include "tg_dstring.h"
enum TG_TYPE {
TG_T_ID, TG_T_INT, TG_T_FLOAT,
TG_T_STRING, TG_T_RELOP, TG_T_LPAR,
TG_T_RPAR, TG_T_AND, TG_T_OR,
TG_T_TILDA, TG_T_COMMA, TG_T_NOT,
TG_T_STEPOP, TG_T_SEMICOL, TG_T_COLON,
TG_T_REFOP, TG_T_PERCENT, TG_T_ADDOP,
TG_T_MULTOP, TG_T_DDOT, TG_T_ASSIGNOP,
TG_T_QUEST, TG_T_NEXTTOOP, TG_T_EMPTY,
TG_T_GLOBAL, TG_T_FUNCTION, TG_T_FOR,
TG_T_IF, TG_T_ELSE, TG_T_CONTINUE,
TG_T_BREAK, TG_T_RETURN, TG_T_IN,
TG_T_COLUMNS, TG_T_DOT, TG_T_LBRC,
TG_T_RBRC, TG_T_LBRK, TG_T_RBRK,
TG_T_EOF, TG_T_ERROR, TG_T_END,
TG_N_TEMPLATE, TG_N_FUNCDEF, TG_N_DEFARGS,
TG_N_STMT, TG_N_RETURN, TG_N_IF,
TG_N_FOR, TG_N_FOREXPR, TG_N_FORCLASSIC,
TG_N_BODY, TG_N_BLOCK, TG_N_EXPR,
TG_N_ASSIGN, TG_N_TERNARY, TG_N_OR,
TG_N_AND, TG_N_REL, TG_N_NEXTTO,
TG_N_NEXTTOOPTS, TG_N_CAT, TG_N_ADD,
TG_N_MULT, TG_N_UNARY, TG_N_REF,
TG_N_NOT, TG_N_SIGN, TG_N_PRESTEP,
TG_N_ADDRESS, TG_N_VAL, TG_N_ID,
TG_N_CONST, TG_N_INDEX, TG_N_INDEXEXPR,
TG_N_FILTER, TG_N_RANGE, TG_N_ARGS,
TG_N_ATTR
};
extern const char *tg_strsym[];
struct tg_token {
struct tg_dstring val;
enum TG_TYPE type;
int line;
int pos;
};
struct tg_node {
struct tg_token token;
enum TG_TYPE type;
int parent;
struct tg_darray children;
};
int tg_nodeccnt(int ni);
int tg_nodechild(int ni, int i);
enum TG_TYPE tg_nodetype(int ni);
struct tg_token *tg_nodetoken(int ni);
int tg_printnode(int ni, int depth);
#define tg_isflownode(t) \
(t == TG_N_BLOCK || t == TG_N_FOR || t == TG_N_IF)
int tg_getparsetree(const char **pathv);
#endif