19
19
# THE SOFTWARE.
20
20
21
21
%common {
22
- /* Using AST utility import file version 2.2 .0 */
22
+ /* Using AST utility import file version 2.3 .0 */
23
23
}
24
24
25
25
%header {
@@ -75,7 +75,10 @@ struct ${prefix}_ast_node_tag {
75
75
${prefix}_ast_node_data_t data;
76
76
${prefix}_ast_range_t range;
77
77
int label;
78
- #ifndef ${PREFIX}_AST_NODE_STRING_CAPTURING_DISABLED
78
+ #ifndef ${PREFIX}_AST_NODE_NO_INTEGER_DATA
79
+ ptrdiff_t integer;
80
+ #endif
81
+ #ifndef ${PREFIX}_AST_NODE_NO_STRING_DATA
79
82
char *string;
80
83
#endif
81
84
#ifdef ${PREFIX}_AST_NODE_CUSTOM_DATA_DEFINED
@@ -102,15 +105,22 @@ void ${prefix}_ast_node_array__finalize(${prefix}_ast_manager_t *mgr, ${prefix}_
102
105
void ${prefix}_ast_node_array__add(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_array_t *obj, ${prefix}_ast_node_t *node);
103
106
104
107
${prefix}_ast_node_t *${prefix}_ast_node__create_nullary(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label);
105
- ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_literal(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, const char *string);
108
+ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_integer(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, ptrdiff_t integer);
109
+ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_string(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, const char *string);
106
110
${prefix}_ast_node_t *${prefix}_ast_node__create_unary(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, ${prefix}_ast_node_t *node);
107
111
${prefix}_ast_node_t *${prefix}_ast_node__create_binary(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, ${prefix}_ast_node_t *node0, ${prefix}_ast_node_t *node1);
108
112
${prefix}_ast_node_t *${prefix}_ast_node__create_ternary(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, ${prefix}_ast_node_t *node0, ${prefix}_ast_node_t *node1, ${prefix}_ast_node_t *node2);
109
113
${prefix}_ast_node_t *${prefix}_ast_node__create_variadic(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label);
110
114
${prefix}_ast_node_t *${prefix}_ast_node__add_child(${prefix}_ast_node_t *obj, ${prefix}_ast_node_t *node); /* for a variadic node only */
111
115
void ${prefix}_ast_node__destroy(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_t *obj);
112
116
113
- #ifndef ${PREFIX}_AST_NODE_STRING_CAPTURING_DISABLED
117
+ #ifndef ${PREFIX}_AST_NODE_NO_INTEGER_DATA
118
+ #define ${prefix}_ast_node__get_integer(obj) (obj->integer)
119
+ #else
120
+ #define ${prefix}_ast_node__get_integer(obj) 0
121
+ #endif
122
+
123
+ #ifndef ${PREFIX}_AST_NODE_NO_STRING_DATA
114
124
#define ${prefix}_ast_node__get_string(obj) ((const char *)(obj->string))
115
125
#else
116
126
#define ${prefix}_ast_node__get_string(obj) ((const char *)NULL)
@@ -141,14 +151,16 @@ void ${prefix}_ast_node_custom_data__finalize(${prefix}_ast_manager_t *mgr, ${pr
141
151
#define ${prefix}_ast__matched_range() ${prefix}_ast_range__new(pcc_capture__0s, pcc_capture__0e)
142
152
143
153
#define ${prefix}_ast_node__create_0() ${prefix}_ast_node__create_nullary(auxil, ${prefix}_ast__matched_range(), 0)
144
- #define ${prefix}_ast_node__create_0_str(str) ${prefix}_ast_node__create_nullary_with_literal(auxil, ${prefix}_ast__matched_range(), 0, str)
154
+ #define ${prefix}_ast_node__create_0_int(val) ${prefix}_ast_node__create_nullary_with_integer(auxil, ${prefix}_ast__matched_range(), 0, val)
155
+ #define ${prefix}_ast_node__create_0_str(str) ${prefix}_ast_node__create_nullary_with_string(auxil, ${prefix}_ast__matched_range(), 0, str)
145
156
#define ${prefix}_ast_node__create_1(node) ${prefix}_ast_node__create_unary(auxil, ${prefix}_ast__matched_range(), 0, node)
146
157
#define ${prefix}_ast_node__create_2(node0, node1) ${prefix}_ast_node__create_binary(auxil, ${prefix}_ast__matched_range(), 0, node0, node1)
147
158
#define ${prefix}_ast_node__create_3(node0, node1, node2) ${prefix}_ast_node__create_ternary(auxil, ${prefix}_ast__matched_range(), 0, node0, node1, node2)
148
159
#define ${prefix}_ast_node__create_v() ${prefix}_ast_node__create_variadic(auxil, ${prefix}_ast__matched_range(), 0)
149
160
150
161
#define ${prefix}_ast_node__create_0_ext(label) ${prefix}_ast_node__create_nullary(auxil, ${prefix}_ast__matched_range(), label)
151
- #define ${prefix}_ast_node__create_0_ext_str(label, str) ${prefix}_ast_node__create_nullary_with_literal(auxil, ${prefix}_ast__matched_range(), label, str)
162
+ #define ${prefix}_ast_node__create_0_ext_int(label, val) ${prefix}_ast_node__create_nullary_with_integer(auxil, ${prefix}_ast__matched_range(), label, val)
163
+ #define ${prefix}_ast_node__create_0_ext_str(label, str) ${prefix}_ast_node__create_nullary_with_string(auxil, ${prefix}_ast__matched_range(), label, str)
152
164
#define ${prefix}_ast_node__create_1_ext(label, node) ${prefix}_ast_node__create_unary(auxil, ${prefix}_ast__matched_range(), label, node)
153
165
#define ${prefix}_ast_node__create_2_ext(label, node0, node1) ${prefix}_ast_node__create_binary(auxil, ${prefix}_ast__matched_range(), label, node0, node1)
154
166
#define ${prefix}_ast_node__create_3_ext(label, node0, node1, node2) ${prefix}_ast_node__create_ternary(auxil, ${prefix}_ast__matched_range(), label, node0, node1, node2)
@@ -307,7 +319,10 @@ static ${prefix}_ast_node_t *${prefix}_ast_node__create_(${prefix}_ast_manager_t
307
319
obj->parent = NULL;
308
320
obj->range = range;
309
321
obj->label = label;
310
- #ifndef ${PREFIX}_AST_NODE_STRING_CAPTURING_DISABLED
322
+ #ifndef ${PREFIX}_AST_NODE_NO_INTEGER_DATA
323
+ obj->integer = 0;
324
+ #endif
325
+ #ifndef ${PREFIX}_AST_NODE_NO_STRING_DATA
311
326
obj->string = NULL;
312
327
#endif
313
328
return obj;
@@ -320,9 +335,17 @@ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary(${prefix}_ast_manager_t
320
335
return obj;
321
336
}
322
337
323
- ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_literal(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, const char *string) {
338
+ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_integer(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, ptrdiff_t integer) {
339
+ ${prefix}_ast_node_t *const obj = ${prefix}_ast_node__create_nullary(mgr, range, label);
340
+ #ifndef ${PREFIX}_AST_NODE_NO_INTEGER_DATA
341
+ obj->integer = integer;
342
+ #endif
343
+ return obj;
344
+ }
345
+
346
+ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary_with_string(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label, const char *string) {
324
347
${prefix}_ast_node_t *const obj = ${prefix}_ast_node__create_nullary(mgr, range, label);
325
- #ifndef ${PREFIX}_AST_NODE_STRING_CAPTURING_DISABLED
348
+ #ifndef ${PREFIX}_AST_NODE_NO_STRING_DATA
326
349
obj->string = ${prefix}_ast__strdup(mgr, string);
327
350
#endif
328
351
return obj;
@@ -404,7 +427,7 @@ ${prefix}_ast_node_t *${prefix}_ast_node__add_child(${prefix}_ast_node_t *obj, $
404
427
void ${prefix}_ast_node__destroy(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_t *obj) {
405
428
if (obj) {
406
429
${prefix}_ast_node_custom_data__finalize(mgr, &(obj->custom));
407
- #ifndef ${PREFIX}_AST_NODE_STRING_CAPTURING_DISABLED
430
+ #ifndef ${PREFIX}_AST_NODE_NO_STRING_DATA
408
431
PCC_AST_FREE(obj->manager, obj->string);
409
432
#endif
410
433
switch (obj->type) {
0 commit comments