My Project
Loading...
Searching...
No Matches
ast_pass.h
Go to the documentation of this file.
1
4#ifndef __AST_PASS
5#define __AST_PASS
6
7static inline bool dummy_func(const void *a NUSED, const void *b NUSED) {
8 return true;
9}
10
11#define DECL_PRIM_FUNC(prefix, type, arg, mod) \
12 typedef type (*_##prefix##_prim_func)(arg, mod union prim_data *); \
13 const _##prefix##_prim_func prefix##_prim_func[] = { \
14 (_##prefix##_prim_func)prefix##_prim_id, \
15 (_##prefix##_prim_func)prefix##_prim_num, \
16 (_##prefix##_prim_func)prefix##_prim_float, \
17 (_##prefix##_prim_func)prefix##_prim_str, \
18 (_##prefix##_prim_func)prefix##_prim_array, \
19 (_##prefix##_prim_func)prefix##_prim_range, \
20 (_##prefix##_prim_func)prefix##_prim_dict, \
21 (_##prefix##_prim_func)prefix##_prim_hack, \
22 (_##prefix##_prim_func)prefix##_prim_char, \
23 (_##prefix##_prim_func)prefix##_prim_nil, \
24 (_##prefix##_prim_func)prefix##_prim_interp, \
25 (_##prefix##_prim_func)prefix##_prim_perform, \
26 (_##prefix##_prim_func)prefix##_prim_locale};
27
28#define DECL_EXP_FUNC(prefix, type, arg, mod) \
29 typedef type (*_##prefix##_exp_func)(const arg, mod union exp_data *); \
30 const _##prefix##_exp_func prefix##_exp_func[] = { \
31 (_##prefix##_exp_func)prefix##_exp_decl, \
32 (_##prefix##_exp_func)prefix##_exp_binary, \
33 (_##prefix##_exp_func)prefix##_exp_unary, \
34 (_##prefix##_exp_func)prefix##_prim, \
35 (_##prefix##_exp_func)prefix##_exp_cast, \
36 (_##prefix##_exp_func)prefix##_exp_post, \
37 (_##prefix##_exp_func)prefix##_exp_call, \
38 (_##prefix##_exp_func)prefix##_exp_array, \
39 (_##prefix##_exp_func)prefix##_exp_slice, \
40 (_##prefix##_exp_func)prefix##_exp_if, \
41 (_##prefix##_exp_func)prefix##_exp_dot, \
42 (_##prefix##_exp_func)prefix##_exp_lambda, \
43 (_##prefix##_exp_func)prefix##_exp_td, \
44 (_##prefix##_exp_func)prefix##_exp_named, \
45 };
46
47#define DECL_STMT_FUNC(prefix, type, arg, mod) \
48 typedef type (*_##prefix##_stmt_func)(const arg, mod union stmt_data *); \
49 const _##prefix##_stmt_func prefix##_stmt_func[] = { \
50 (_##prefix##_stmt_func)prefix##_stmt_exp, \
51 (_##prefix##_stmt_func)prefix##_stmt_while, \
52 (_##prefix##_stmt_func)prefix##_stmt_until, \
53 (_##prefix##_stmt_func)prefix##_stmt_for, \
54 (_##prefix##_stmt_func)prefix##_stmt_each, \
55 (_##prefix##_stmt_func)prefix##_stmt_loop, \
56 (_##prefix##_stmt_func)prefix##_stmt_if, \
57 (_##prefix##_stmt_func)prefix##_stmt_code, \
58 (_##prefix##_stmt_func)prefix##_stmt_break, \
59 (_##prefix##_stmt_func)prefix##_stmt_continue, \
60 (_##prefix##_stmt_func)prefix##_stmt_return, \
61 (_##prefix##_stmt_func)prefix##_stmt_try, \
62 (_##prefix##_stmt_func)prefix##_stmt_retry, \
63 (_##prefix##_stmt_func)prefix##_stmt_match, \
64 (_##prefix##_stmt_func)prefix##_stmt_pp, \
65 (_##prefix##_stmt_func)prefix##_stmt_defer, \
66 (_##prefix##_stmt_func)prefix##_stmt_spread, \
67 (_##prefix##_stmt_func)prefix##_stmt_using, \
68 (_##prefix##_stmt_func)prefix##_stmt_import};
69
70#define DECL_SECTION_FUNC(prefix, type, arg, mod) \
71 typedef type (*_##prefix##_section_func)(const arg, mod union section_data *); \
72 const _##prefix##_section_func prefix##_section_func[] = { \
73 (_##prefix##_section_func)prefix##_stmt_list, \
74 (_##prefix##_section_func)prefix##_func_def, \
75 (_##prefix##_section_func)prefix##_class_def, \
76 (_##prefix##_section_func)prefix##_trait_def, \
77 (_##prefix##_section_func)prefix##_extend_def, \
78 (_##prefix##_section_func)prefix##_enum_def, \
79 (_##prefix##_section_func)prefix##_union_def, \
80 (_##prefix##_section_func)prefix##_fptr_def, \
81 (_##prefix##_section_func)prefix##_type_def, \
82 (_##prefix##_section_func)prefix##_prim_def};
83
84#endif
static bool dummy_func(const void *a NUSED, const void *b NUSED)
Definition ast_pass.h:7