4 # define TREE_TAG(ID, NAME, BIT)
10 TREE_TAG(eTagIsType, "is_a_type", (1 << 2))
11 TREE_TAG(eTagHasType, "has_a_type", (1 << 3))
12 TREE_TAG(eTagStorage, "storage", (1 << 4))
19 # define TREE_KIND(ID, NAME, TAGS)
28 TREE_KIND(eTreeTypeEmpty,
"type_empty", eTagName | eTagQual | eTagIsType)
30 TREE_KIND(eTreeTypeUnit,
"type_unit", eTagName | eTagQual | eTagIsType)
34 TREE_KIND(eTreeTypeBool,
"type_bool", eTagName | eTagQual | eTagIsType)
37 TREE_KIND(eTreeTypeOpaque,
"type_opaque", eTagName | eTagQual | eTagIsType)
41 TREE_KIND(eTreeTypeDigit,
"type_digit", eTagName | eTagQual | eTagIsType)
44 TREE_KIND(eTreeTypeClosure,
"type_closure", eTagName | eTagQual | eTagIsType)
47 TREE_KIND(eTreeTypeString,
"type_string", eTagName | eTagQual | eTagIsType)
52 TREE_KIND(eTreeTypeReference,
"type_reference", eTagName | eTagQual | eTagIsType)
56 TREE_KIND(eTreeTypePointer,
"type_pointer", eTagName | eTagQual | eTagIsType)
60 TREE_KIND(eTreeTypeArray,
"type_array", eTagName | eTagQual | eTagIsType)
64 TREE_KIND(eTreeTypeClass,
"type_class", eTagName | eTagIsType)
67 TREE_KIND(eTreeTypeStruct,
"type_struct", eTagName | eTagIsType)
70 TREE_KIND(eTreeTypeUnion,
"type_union", eTagName | eTagIsType)
73 TREE_KIND(eTreeTypeEnum,
"type_enum", eTagName | eTagIsType)
76 TREE_KIND(eTreeTypeVariant,
"type_variant", eTagName | eTagIsType)
79 TREE_KIND(eTreeTypeAlias,
"type_alias", eTagName | eTagIsType | eTagHasType)
88 TREE_KIND(eTreeExprSizeOf,
"expr_sizeof", eTagHasType)
90 TREE_KIND(eTreeExprAlignOf,
"expr_alignof", eTagHasType)
93 TREE_KIND(eTreeExprOffsetOf,
"expr_offsetof", eTagHasType)
96 TREE_KIND(eTreeExprEmpty,
"expr_empty", eTagHasType)
99 TREE_KIND(eTreeExprUnit,
"expr_unit", eTagHasType)
102 TREE_KIND(eTreeExprBool,
"expr_bool", eTagHasType)
105 TREE_KIND(eTreeExprDigit,
"expr_digit", eTagHasType)
108 TREE_KIND(eTreeExprString,
"expr_string", eTagHasType)
111 TREE_KIND(eTreeExprCast,
"expr_cast", eTagHasType)
115 TREE_KIND(eTreeExprLoad,
"expr_load", eTagHasType)
120 TREE_KIND(eTreeExprAddressOf,
"expr_addressof", eTagHasType)
123 TREE_KIND(eTreeExprUnary,
"expr_unary", eTagHasType)
126 TREE_KIND(eTreeExprBinary,
"expr_binary", eTagHasType)
129 TREE_KIND(eTreeExprCompare,
"expr_compare", eTagHasType)
132 TREE_KIND(eTreeExprField,
"expr_field", eTagHasType)
136 TREE_KIND(eTreeExprOffset,
"expr_offset", eTagHasType)
140 TREE_KIND(eTreeExprCall,
"expr_call", eTagHasType)
151 TREE_KIND(eTreeStmtBuiltin,
"stmt_builtin", eTagNone)
152 TREE_KIND(eTreeStmtBlock,
"stmt_block", eTagNone)
153 TREE_KIND(eTreeStmtReturn,
"stmt_return", eTagNone)
154 TREE_KIND(eTreeStmtAssign,
"stmt_assign", eTagNone)
155 TREE_KIND(eTreeStmtLoop,
"stmt_loop", eTagNone)
156 TREE_KIND(eTreeStmtBranch,
"stmt_branch", eTagNone)
157 TREE_KIND(eTreeStmtJump,
"stmt_jump", eTagNone)
163 TREE_KIND(eTreeDeclAttrib,
"decl_attrib", eTagName)
164 TREE_KIND(eTreeDeclGlobal,
"decl_global", eTagName | eTagStorage | eTagEval | eTagHasType)
165 TREE_KIND(eTreeDeclLocal,
"decl_local", eTagName | eTagStorage | eTagEval | eTagHasType)
166 TREE_KIND(eTreeDeclParam,
"decl_param", eTagName | eTagHasType)
167 TREE_KIND(eTreeDeclCase,
"decl_case", eTagName | eTagHasType)
168 TREE_KIND(eTreeDeclField,
"decl_field", eTagName | eTagHasType)
169 TREE_KIND(eTreeDeclFunction,
"decl_function", eTagName | eTagEval | eTagHasType)
170 TREE_KIND(eTreeDeclModule,
"decl_module", eTagName)
172 TREE_KIND(eTreeQualified,
"qualified", eTagName)
173 TREE_KIND(eTreePartial,
"partial_type", eTagName | eTagIsType)
174 TREE_KIND(eTreeError,
"error", eTagName | eTagHasType)
179 # define DIGIT_KIND(ID, STR)
214 # define SIGN_KIND(ID, STR)
223 #ifndef TYPE_QUALIFIER
224 # define TYPE_QUALIFIER(ID, STR, BIT)
234 #undef TYPE_QUALIFIER
238 # define TREE_LINKAGE(ID, STR)
253 #ifndef TREE_VISIBILITY
254 # define TREE_VISIBILITY(ID, NAME)
260 #undef TREE_VISIBILITY
263 # define UNARY_OP(ID, NAME, SYMBOL)
274 # define BINARY_OP(ID, NAME, SYMBOL)
292 # define COMPARE_OP(ID, NAME, SYMBOL)
308 # define CAST_OP(ID, NAME)
311 CAST_OP(eCastZeroExtend,
"zero_extend")
312 CAST_OP(eCastSignExtend, "sign_extend")
318 # define TREE_ARITY(ID, NAME)
327 # define TREE_JUMP(ID, NAME)
335 #ifndef TREE_EVAL_MODEL
336 # define TREE_EVAL_MODEL(ID, NAME, BIT)
342 #undef TREE_EVAL_MODEL
#define SIGN_KIND(ID, STR)
dealing with C interop
#define CAST_OP(ID, NAME)
#define TREE_JUMP(ID, NAME)
#define TREE_EVAL_MODEL(ID, NAME, BIT)
#define TREE_LINKAGE(ID, STR)
symbol visibility during linking
#define TREE_KIND(ID, NAME, TAGS)
tree kind defs
#define TREE_VISIBILITY(ID, NAME)
symbol visibility during compilation
#define UNARY_OP(ID, NAME, SYMBOL)
#define TREE_ARITY(ID, NAME)
#define COMPARE_OP(ID, NAME, SYMBOL)
#define TYPE_QUALIFIER(ID, STR, BIT)
#define TREE_TAG(ID, NAME, BIT)
#define DIGIT_KIND(ID, STR)
boolean logic type
#define BINARY_OP(ID, NAME, SYMBOL)