1919# THE SOFTWARE.
2020
2121%common {
22- /* Using AST utility import file version 2.2 .0 */
22+ /* Using AST utility import file version 2.3 .0 */
2323}
2424
2525%header {
@@ -75,7 +75,10 @@ struct ${prefix}_ast_node_tag {
7575 ${prefix}_ast_node_data_t data;
7676 ${prefix}_ast_range_t range;
7777 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
7982 char *string;
8083#endif
8184#ifdef ${PREFIX}_AST_NODE_CUSTOM_DATA_DEFINED
@@ -102,15 +105,22 @@ void ${prefix}_ast_node_array__finalize(${prefix}_ast_manager_t *mgr, ${prefix}_
102105void ${prefix}_ast_node_array__add(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_array_t *obj, ${prefix}_ast_node_t *node);
103106
104107${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);
106110${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);
107111${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);
108112${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);
109113${prefix}_ast_node_t *${prefix}_ast_node__create_variadic(${prefix}_ast_manager_t *mgr, ${prefix}_ast_range_t range, int label);
110114${prefix}_ast_node_t *${prefix}_ast_node__add_child(${prefix}_ast_node_t *obj, ${prefix}_ast_node_t *node); /* for a variadic node only */
111115void ${prefix}_ast_node__destroy(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_t *obj);
112116
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
114124#define ${prefix}_ast_node__get_string(obj) ((const char *)(obj->string))
115125#else
116126#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
141151#define ${prefix}_ast__matched_range() ${prefix}_ast_range__new(pcc_capture__0s, pcc_capture__0e)
142152
143153#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)
145156#define ${prefix}_ast_node__create_1(node) ${prefix}_ast_node__create_unary(auxil, ${prefix}_ast__matched_range(), 0, node)
146157#define ${prefix}_ast_node__create_2(node0, node1) ${prefix}_ast_node__create_binary(auxil, ${prefix}_ast__matched_range(), 0, node0, node1)
147158#define ${prefix}_ast_node__create_3(node0, node1, node2) ${prefix}_ast_node__create_ternary(auxil, ${prefix}_ast__matched_range(), 0, node0, node1, node2)
148159#define ${prefix}_ast_node__create_v() ${prefix}_ast_node__create_variadic(auxil, ${prefix}_ast__matched_range(), 0)
149160
150161#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)
152164#define ${prefix}_ast_node__create_1_ext(label, node) ${prefix}_ast_node__create_unary(auxil, ${prefix}_ast__matched_range(), label, node)
153165#define ${prefix}_ast_node__create_2_ext(label, node0, node1) ${prefix}_ast_node__create_binary(auxil, ${prefix}_ast__matched_range(), label, node0, node1)
154166#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
307319 obj->parent = NULL;
308320 obj->range = range;
309321 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
311326 obj->string = NULL;
312327#endif
313328 return obj;
@@ -320,9 +335,17 @@ ${prefix}_ast_node_t *${prefix}_ast_node__create_nullary(${prefix}_ast_manager_t
320335 return obj;
321336}
322337
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) {
324347 ${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
326349 obj->string = ${prefix}_ast__strdup(mgr, string);
327350#endif
328351 return obj;
@@ -404,7 +427,7 @@ ${prefix}_ast_node_t *${prefix}_ast_node__add_child(${prefix}_ast_node_t *obj, $
404427void ${prefix}_ast_node__destroy(${prefix}_ast_manager_t *mgr, ${prefix}_ast_node_t *obj) {
405428 if (obj) {
406429 ${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
408431 PCC_AST_FREE(obj->manager, obj->string);
409432#endif
410433 switch (obj->type) {
0 commit comments