herb 0.7.4-aarch64-linux-gnu → 0.8.0-aarch64-linux-gnu
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +8 -5
- data/config.yml +40 -20
- data/ext/herb/error_helpers.c +57 -3
- data/ext/herb/error_helpers.h +1 -1
- data/ext/herb/extconf.rb +1 -0
- data/ext/herb/extension.c +10 -24
- data/ext/herb/extension_helpers.c +12 -18
- data/ext/herb/extension_helpers.h +4 -4
- data/ext/herb/nodes.c +72 -37
- data/herb.gemspec +0 -2
- data/lib/herb/3.0/herb.so +0 -0
- data/lib/herb/3.1/herb.so +0 -0
- data/lib/herb/3.2/herb.so +0 -0
- data/lib/herb/3.3/herb.so +0 -0
- data/lib/herb/3.4/herb.so +0 -0
- data/lib/herb/ast/helpers.rb +11 -0
- data/lib/herb/ast/node.rb +15 -6
- data/lib/herb/ast/nodes.rb +609 -392
- data/lib/herb/cli.rb +31 -0
- data/lib/herb/colors.rb +82 -0
- data/lib/herb/engine/compiler.rb +140 -14
- data/lib/herb/engine/debug_visitor.rb +1 -5
- data/lib/herb/engine/parser_error_overlay.rb +1 -1
- data/lib/herb/engine.rb +18 -20
- data/lib/herb/errors.rb +166 -56
- data/lib/herb/location.rb +2 -2
- data/lib/herb/project.rb +86 -21
- data/lib/herb/token.rb +14 -2
- data/lib/herb/version.rb +1 -1
- data/lib/herb.rb +1 -0
- data/sig/herb/ast/helpers.rbs +3 -0
- data/sig/herb/ast/node.rbs +12 -5
- data/sig/herb/ast/nodes.rbs +124 -62
- data/sig/herb/colors.rbs +35 -0
- data/sig/herb/engine/compiler.rbs +23 -1
- data/sig/herb/errors.rbs +74 -20
- data/sig/herb/token.rbs +8 -0
- data/sig/herb_c_extension.rbs +1 -1
- data/sig/serialized_ast_errors.rbs +8 -0
- data/src/analyze.c +461 -249
- data/src/analyze_helpers.c +5 -0
- data/src/analyze_missing_end.c +147 -0
- data/src/analyze_transform.c +196 -0
- data/src/analyzed_ruby.c +23 -2
- data/src/ast_node.c +14 -17
- data/src/ast_nodes.c +179 -181
- data/src/ast_pretty_print.c +232 -232
- data/src/element_source.c +7 -6
- data/src/errors.c +272 -152
- data/src/extract.c +92 -34
- data/src/herb.c +37 -49
- data/src/html_util.c +34 -96
- data/src/include/analyze.h +10 -2
- data/src/include/analyze_helpers.h +3 -0
- data/src/include/analyzed_ruby.h +4 -2
- data/src/include/ast_node.h +4 -4
- data/src/include/ast_nodes.h +68 -67
- data/src/include/ast_pretty_print.h +2 -2
- data/src/include/element_source.h +3 -1
- data/src/include/errors.h +42 -26
- data/src/include/extract.h +4 -4
- data/src/include/herb.h +6 -7
- data/src/include/html_util.h +4 -5
- data/src/include/lexer.h +1 -3
- data/src/include/lexer_peek_helpers.h +21 -19
- data/src/include/lexer_struct.h +12 -10
- data/src/include/location.h +10 -13
- data/src/include/macros.h +4 -0
- data/src/include/parser.h +12 -6
- data/src/include/parser_helpers.h +26 -16
- data/src/include/position.h +3 -14
- data/src/include/pretty_print.h +38 -28
- data/src/include/prism_helpers.h +1 -1
- data/src/include/range.h +4 -13
- data/src/include/token.h +5 -11
- data/src/include/token_struct.h +2 -2
- data/src/include/utf8.h +3 -2
- data/src/include/util/hb_arena.h +31 -0
- data/src/include/util/hb_arena_debug.h +8 -0
- data/src/include/util/hb_array.h +33 -0
- data/src/include/util/hb_buffer.h +34 -0
- data/src/include/util/hb_string.h +29 -0
- data/src/include/util/hb_system.h +9 -0
- data/src/include/util.h +3 -14
- data/src/include/version.h +1 -1
- data/src/include/visitor.h +1 -1
- data/src/io.c +7 -4
- data/src/lexer.c +62 -88
- data/src/lexer_peek_helpers.c +42 -38
- data/src/location.c +9 -37
- data/src/main.c +19 -23
- data/src/parser.c +373 -313
- data/src/parser_helpers.c +60 -54
- data/src/parser_match_tags.c +316 -0
- data/src/pretty_print.c +88 -117
- data/src/prism_helpers.c +7 -7
- data/src/range.c +2 -35
- data/src/token.c +36 -87
- data/src/utf8.c +4 -4
- data/src/util/hb_arena.c +179 -0
- data/src/util/hb_arena_debug.c +237 -0
- data/src/{array.c → util/hb_array.c} +26 -27
- data/src/util/hb_buffer.c +203 -0
- data/src/util/hb_string.c +85 -0
- data/src/util/hb_system.c +30 -0
- data/src/util.c +29 -99
- data/src/visitor.c +54 -54
- data/templates/ext/herb/error_helpers.c.erb +3 -3
- data/templates/ext/herb/error_helpers.h.erb +1 -1
- data/templates/ext/herb/nodes.c.erb +11 -6
- data/templates/java/error_helpers.c.erb +75 -0
- data/templates/java/error_helpers.h.erb +20 -0
- data/templates/java/nodes.c.erb +97 -0
- data/templates/java/nodes.h.erb +23 -0
- data/templates/java/org/herb/ast/Errors.java.erb +121 -0
- data/templates/java/org/herb/ast/NodeVisitor.java.erb +14 -0
- data/templates/java/org/herb/ast/Nodes.java.erb +220 -0
- data/templates/java/org/herb/ast/Visitor.java.erb +56 -0
- data/templates/javascript/packages/core/src/visitor.ts.erb +29 -1
- data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +8 -8
- data/templates/javascript/packages/node/extension/error_helpers.h.erb +1 -1
- data/templates/javascript/packages/node/extension/nodes.cpp.erb +9 -9
- data/templates/javascript/packages/node/extension/nodes.h.erb +1 -1
- data/templates/lib/herb/ast/nodes.rb.erb +28 -16
- data/templates/lib/herb/errors.rb.erb +17 -12
- data/templates/rust/src/ast/nodes.rs.erb +220 -0
- data/templates/rust/src/errors.rs.erb +216 -0
- data/templates/rust/src/nodes.rs.erb +374 -0
- data/templates/src/analyze_missing_end.c.erb +36 -0
- data/templates/src/analyze_transform.c.erb +24 -0
- data/templates/src/ast_nodes.c.erb +14 -16
- data/templates/src/ast_pretty_print.c.erb +36 -36
- data/templates/src/errors.c.erb +36 -38
- data/templates/src/include/ast_nodes.h.erb +11 -10
- data/templates/src/include/ast_pretty_print.h.erb +2 -2
- data/templates/src/include/errors.h.erb +9 -9
- data/templates/src/parser_match_tags.c.erb +38 -0
- data/templates/src/visitor.c.erb +4 -4
- data/templates/template.rb +22 -3
- data/templates/wasm/error_helpers.cpp.erb +9 -9
- data/templates/wasm/error_helpers.h.erb +1 -1
- data/templates/wasm/nodes.cpp.erb +9 -9
- data/templates/wasm/nodes.h.erb +1 -1
- data/vendor/prism/Rakefile +4 -1
- data/vendor/prism/config.yml +2 -1
- data/vendor/prism/include/prism/ast.h +31 -1
- data/vendor/prism/include/prism/diagnostic.h +1 -0
- data/vendor/prism/include/prism/version.h +3 -3
- data/vendor/prism/src/diagnostic.c +3 -1
- data/vendor/prism/src/prism.c +130 -71
- data/vendor/prism/src/util/pm_string.c +6 -8
- data/vendor/prism/templates/include/prism/ast.h.erb +2 -0
- data/vendor/prism/templates/java/org/prism/Loader.java.erb +2 -2
- data/vendor/prism/templates/javascript/src/deserialize.js.erb +2 -2
- data/vendor/prism/templates/lib/prism/serialize.rb.erb +2 -2
- data/vendor/prism/templates/sig/prism.rbs.erb +4 -0
- data/vendor/prism/templates/src/diagnostic.c.erb +1 -0
- metadata +34 -21
- data/lib/herb/libherb/array.rb +0 -51
- data/lib/herb/libherb/ast_node.rb +0 -50
- data/lib/herb/libherb/buffer.rb +0 -56
- data/lib/herb/libherb/extract_result.rb +0 -20
- data/lib/herb/libherb/lex_result.rb +0 -32
- data/lib/herb/libherb/libherb.rb +0 -52
- data/lib/herb/libherb/parse_result.rb +0 -20
- data/lib/herb/libherb/token.rb +0 -46
- data/lib/herb/libherb.rb +0 -35
- data/src/buffer.c +0 -232
- data/src/include/array.h +0 -33
- data/src/include/buffer.h +0 -39
- data/src/include/json.h +0 -28
- data/src/include/memory.h +0 -12
- data/src/json.c +0 -205
- data/src/memory.c +0 -53
- data/src/position.c +0 -33
data/src/ast_nodes.c
CHANGED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
#include <prism.h>
|
|
8
8
|
|
|
9
9
|
#include "include/analyzed_ruby.h"
|
|
10
|
-
#include "include/array.h"
|
|
11
10
|
#include "include/ast_node.h"
|
|
12
11
|
#include "include/ast_nodes.h"
|
|
13
12
|
#include "include/errors.h"
|
|
14
13
|
#include "include/token.h"
|
|
15
14
|
#include "include/util.h"
|
|
15
|
+
#include "include/util/hb_array.h"
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
AST_DOCUMENT_NODE_T* ast_document_node_init(
|
|
18
|
+
AST_DOCUMENT_NODE_T* ast_document_node_init(hb_array_T* children, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
19
19
|
AST_DOCUMENT_NODE_T* document_node = malloc(sizeof(AST_DOCUMENT_NODE_T));
|
|
20
20
|
|
|
21
21
|
ast_node_init(&document_node->base, AST_DOCUMENT_NODE, start_position, end_position, errors);
|
|
@@ -25,7 +25,7 @@ AST_DOCUMENT_NODE_T* ast_document_node_init(array_T* children, position_T* start
|
|
|
25
25
|
return document_node;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
AST_LITERAL_NODE_T* ast_literal_node_init(const char* content, position_T
|
|
28
|
+
AST_LITERAL_NODE_T* ast_literal_node_init(const char* content, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
29
29
|
AST_LITERAL_NODE_T* literal_node = malloc(sizeof(AST_LITERAL_NODE_T));
|
|
30
30
|
|
|
31
31
|
ast_node_init(&literal_node->base, AST_LITERAL_NODE, start_position, end_position, errors);
|
|
@@ -35,7 +35,7 @@ AST_LITERAL_NODE_T* ast_literal_node_init(const char* content, position_T* start
|
|
|
35
35
|
return literal_node;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
AST_HTML_OPEN_TAG_NODE_T* ast_html_open_tag_node_init(token_T* tag_opening, token_T* tag_name, token_T* tag_closing,
|
|
38
|
+
AST_HTML_OPEN_TAG_NODE_T* ast_html_open_tag_node_init(token_T* tag_opening, token_T* tag_name, token_T* tag_closing, hb_array_T* children, bool is_void, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
39
39
|
AST_HTML_OPEN_TAG_NODE_T* html_open_tag_node = malloc(sizeof(AST_HTML_OPEN_TAG_NODE_T));
|
|
40
40
|
|
|
41
41
|
ast_node_init(&html_open_tag_node->base, AST_HTML_OPEN_TAG_NODE, start_position, end_position, errors);
|
|
@@ -49,7 +49,7 @@ AST_HTML_OPEN_TAG_NODE_T* ast_html_open_tag_node_init(token_T* tag_opening, toke
|
|
|
49
49
|
return html_open_tag_node;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
AST_HTML_CLOSE_TAG_NODE_T* ast_html_close_tag_node_init(token_T* tag_opening, token_T* tag_name,
|
|
52
|
+
AST_HTML_CLOSE_TAG_NODE_T* ast_html_close_tag_node_init(token_T* tag_opening, token_T* tag_name, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
53
53
|
AST_HTML_CLOSE_TAG_NODE_T* html_close_tag_node = malloc(sizeof(AST_HTML_CLOSE_TAG_NODE_T));
|
|
54
54
|
|
|
55
55
|
ast_node_init(&html_close_tag_node->base, AST_HTML_CLOSE_TAG_NODE, start_position, end_position, errors);
|
|
@@ -62,7 +62,7 @@ AST_HTML_CLOSE_TAG_NODE_T* ast_html_close_tag_node_init(token_T* tag_opening, to
|
|
|
62
62
|
return html_close_tag_node;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
AST_HTML_ELEMENT_NODE_T* ast_html_element_node_init(struct AST_HTML_OPEN_TAG_NODE_STRUCT* open_tag, token_T* tag_name,
|
|
65
|
+
AST_HTML_ELEMENT_NODE_T* ast_html_element_node_init(struct AST_HTML_OPEN_TAG_NODE_STRUCT* open_tag, token_T* tag_name, hb_array_T* body, struct AST_HTML_CLOSE_TAG_NODE_STRUCT* close_tag, bool is_void, element_source_t source, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
66
66
|
AST_HTML_ELEMENT_NODE_T* html_element_node = malloc(sizeof(AST_HTML_ELEMENT_NODE_T));
|
|
67
67
|
|
|
68
68
|
ast_node_init(&html_element_node->base, AST_HTML_ELEMENT_NODE, start_position, end_position, errors);
|
|
@@ -77,7 +77,7 @@ AST_HTML_ELEMENT_NODE_T* ast_html_element_node_init(struct AST_HTML_OPEN_TAG_NOD
|
|
|
77
77
|
return html_element_node;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
AST_HTML_ATTRIBUTE_VALUE_NODE_T* ast_html_attribute_value_node_init(token_T* open_quote,
|
|
80
|
+
AST_HTML_ATTRIBUTE_VALUE_NODE_T* ast_html_attribute_value_node_init(token_T* open_quote, hb_array_T* children, token_T* close_quote, bool quoted, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
81
81
|
AST_HTML_ATTRIBUTE_VALUE_NODE_T* html_attribute_value_node = malloc(sizeof(AST_HTML_ATTRIBUTE_VALUE_NODE_T));
|
|
82
82
|
|
|
83
83
|
ast_node_init(&html_attribute_value_node->base, AST_HTML_ATTRIBUTE_VALUE_NODE, start_position, end_position, errors);
|
|
@@ -90,7 +90,7 @@ AST_HTML_ATTRIBUTE_VALUE_NODE_T* ast_html_attribute_value_node_init(token_T* ope
|
|
|
90
90
|
return html_attribute_value_node;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
AST_HTML_ATTRIBUTE_NAME_NODE_T* ast_html_attribute_name_node_init(
|
|
93
|
+
AST_HTML_ATTRIBUTE_NAME_NODE_T* ast_html_attribute_name_node_init(hb_array_T* children, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
94
94
|
AST_HTML_ATTRIBUTE_NAME_NODE_T* html_attribute_name_node = malloc(sizeof(AST_HTML_ATTRIBUTE_NAME_NODE_T));
|
|
95
95
|
|
|
96
96
|
ast_node_init(&html_attribute_name_node->base, AST_HTML_ATTRIBUTE_NAME_NODE, start_position, end_position, errors);
|
|
@@ -100,7 +100,7 @@ AST_HTML_ATTRIBUTE_NAME_NODE_T* ast_html_attribute_name_node_init(array_T* child
|
|
|
100
100
|
return html_attribute_name_node;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
AST_HTML_ATTRIBUTE_NODE_T* ast_html_attribute_node_init(struct AST_HTML_ATTRIBUTE_NAME_NODE_STRUCT* name, token_T* equals, struct AST_HTML_ATTRIBUTE_VALUE_NODE_STRUCT* value, position_T
|
|
103
|
+
AST_HTML_ATTRIBUTE_NODE_T* ast_html_attribute_node_init(struct AST_HTML_ATTRIBUTE_NAME_NODE_STRUCT* name, token_T* equals, struct AST_HTML_ATTRIBUTE_VALUE_NODE_STRUCT* value, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
104
104
|
AST_HTML_ATTRIBUTE_NODE_T* html_attribute_node = malloc(sizeof(AST_HTML_ATTRIBUTE_NODE_T));
|
|
105
105
|
|
|
106
106
|
ast_node_init(&html_attribute_node->base, AST_HTML_ATTRIBUTE_NODE, start_position, end_position, errors);
|
|
@@ -112,7 +112,7 @@ AST_HTML_ATTRIBUTE_NODE_T* ast_html_attribute_node_init(struct AST_HTML_ATTRIBUT
|
|
|
112
112
|
return html_attribute_node;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
AST_HTML_TEXT_NODE_T* ast_html_text_node_init(const char* content, position_T
|
|
115
|
+
AST_HTML_TEXT_NODE_T* ast_html_text_node_init(const char* content, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
116
116
|
AST_HTML_TEXT_NODE_T* html_text_node = malloc(sizeof(AST_HTML_TEXT_NODE_T));
|
|
117
117
|
|
|
118
118
|
ast_node_init(&html_text_node->base, AST_HTML_TEXT_NODE, start_position, end_position, errors);
|
|
@@ -122,7 +122,7 @@ AST_HTML_TEXT_NODE_T* ast_html_text_node_init(const char* content, position_T* s
|
|
|
122
122
|
return html_text_node;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
AST_HTML_COMMENT_NODE_T* ast_html_comment_node_init(token_T* comment_start,
|
|
125
|
+
AST_HTML_COMMENT_NODE_T* ast_html_comment_node_init(token_T* comment_start, hb_array_T* children, token_T* comment_end, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
126
126
|
AST_HTML_COMMENT_NODE_T* html_comment_node = malloc(sizeof(AST_HTML_COMMENT_NODE_T));
|
|
127
127
|
|
|
128
128
|
ast_node_init(&html_comment_node->base, AST_HTML_COMMENT_NODE, start_position, end_position, errors);
|
|
@@ -134,7 +134,7 @@ AST_HTML_COMMENT_NODE_T* ast_html_comment_node_init(token_T* comment_start, arra
|
|
|
134
134
|
return html_comment_node;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
AST_HTML_DOCTYPE_NODE_T* ast_html_doctype_node_init(token_T* tag_opening,
|
|
137
|
+
AST_HTML_DOCTYPE_NODE_T* ast_html_doctype_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
138
138
|
AST_HTML_DOCTYPE_NODE_T* html_doctype_node = malloc(sizeof(AST_HTML_DOCTYPE_NODE_T));
|
|
139
139
|
|
|
140
140
|
ast_node_init(&html_doctype_node->base, AST_HTML_DOCTYPE_NODE, start_position, end_position, errors);
|
|
@@ -146,7 +146,7 @@ AST_HTML_DOCTYPE_NODE_T* ast_html_doctype_node_init(token_T* tag_opening, array_
|
|
|
146
146
|
return html_doctype_node;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
AST_XML_DECLARATION_NODE_T* ast_xml_declaration_node_init(token_T* tag_opening,
|
|
149
|
+
AST_XML_DECLARATION_NODE_T* ast_xml_declaration_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
150
150
|
AST_XML_DECLARATION_NODE_T* xml_declaration_node = malloc(sizeof(AST_XML_DECLARATION_NODE_T));
|
|
151
151
|
|
|
152
152
|
ast_node_init(&xml_declaration_node->base, AST_XML_DECLARATION_NODE, start_position, end_position, errors);
|
|
@@ -158,7 +158,7 @@ AST_XML_DECLARATION_NODE_T* ast_xml_declaration_node_init(token_T* tag_opening,
|
|
|
158
158
|
return xml_declaration_node;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
AST_CDATA_NODE_T* ast_cdata_node_init(token_T* tag_opening,
|
|
161
|
+
AST_CDATA_NODE_T* ast_cdata_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
162
162
|
AST_CDATA_NODE_T* cdata_node = malloc(sizeof(AST_CDATA_NODE_T));
|
|
163
163
|
|
|
164
164
|
ast_node_init(&cdata_node->base, AST_CDATA_NODE, start_position, end_position, errors);
|
|
@@ -170,7 +170,7 @@ AST_CDATA_NODE_T* ast_cdata_node_init(token_T* tag_opening, array_T* children, t
|
|
|
170
170
|
return cdata_node;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
AST_WHITESPACE_NODE_T* ast_whitespace_node_init(token_T* value, position_T
|
|
173
|
+
AST_WHITESPACE_NODE_T* ast_whitespace_node_init(token_T* value, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
174
174
|
AST_WHITESPACE_NODE_T* whitespace_node = malloc(sizeof(AST_WHITESPACE_NODE_T));
|
|
175
175
|
|
|
176
176
|
ast_node_init(&whitespace_node->base, AST_WHITESPACE_NODE, start_position, end_position, errors);
|
|
@@ -180,7 +180,7 @@ AST_WHITESPACE_NODE_T* ast_whitespace_node_init(token_T* value, position_T* star
|
|
|
180
180
|
return whitespace_node;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
AST_ERB_CONTENT_NODE_T* ast_erb_content_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, analyzed_ruby_T* analyzed_ruby, bool parsed, bool valid, position_T
|
|
183
|
+
AST_ERB_CONTENT_NODE_T* ast_erb_content_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, analyzed_ruby_T* analyzed_ruby, bool parsed, bool valid, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
184
184
|
AST_ERB_CONTENT_NODE_T* erb_content_node = malloc(sizeof(AST_ERB_CONTENT_NODE_T));
|
|
185
185
|
|
|
186
186
|
ast_node_init(&erb_content_node->base, AST_ERB_CONTENT_NODE, start_position, end_position, errors);
|
|
@@ -195,7 +195,7 @@ AST_ERB_CONTENT_NODE_T* ast_erb_content_node_init(token_T* tag_opening, token_T*
|
|
|
195
195
|
return erb_content_node;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
AST_ERB_END_NODE_T* ast_erb_end_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T
|
|
198
|
+
AST_ERB_END_NODE_T* ast_erb_end_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
199
199
|
AST_ERB_END_NODE_T* erb_end_node = malloc(sizeof(AST_ERB_END_NODE_T));
|
|
200
200
|
|
|
201
201
|
ast_node_init(&erb_end_node->base, AST_ERB_END_NODE, start_position, end_position, errors);
|
|
@@ -207,7 +207,7 @@ AST_ERB_END_NODE_T* ast_erb_end_node_init(token_T* tag_opening, token_T* content
|
|
|
207
207
|
return erb_end_node;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
AST_ERB_ELSE_NODE_T* ast_erb_else_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
210
|
+
AST_ERB_ELSE_NODE_T* ast_erb_else_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
211
211
|
AST_ERB_ELSE_NODE_T* erb_else_node = malloc(sizeof(AST_ERB_ELSE_NODE_T));
|
|
212
212
|
|
|
213
213
|
ast_node_init(&erb_else_node->base, AST_ERB_ELSE_NODE, start_position, end_position, errors);
|
|
@@ -220,7 +220,7 @@ AST_ERB_ELSE_NODE_T* ast_erb_else_node_init(token_T* tag_opening, token_T* conte
|
|
|
220
220
|
return erb_else_node;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
AST_ERB_IF_NODE_T* ast_erb_if_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
223
|
+
AST_ERB_IF_NODE_T* ast_erb_if_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_NODE_STRUCT* subsequent, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
224
224
|
AST_ERB_IF_NODE_T* erb_if_node = malloc(sizeof(AST_ERB_IF_NODE_T));
|
|
225
225
|
|
|
226
226
|
ast_node_init(&erb_if_node->base, AST_ERB_IF_NODE, start_position, end_position, errors);
|
|
@@ -235,7 +235,7 @@ AST_ERB_IF_NODE_T* ast_erb_if_node_init(token_T* tag_opening, token_T* content,
|
|
|
235
235
|
return erb_if_node;
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
AST_ERB_BLOCK_NODE_T* ast_erb_block_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
238
|
+
AST_ERB_BLOCK_NODE_T* ast_erb_block_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* body, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
239
239
|
AST_ERB_BLOCK_NODE_T* erb_block_node = malloc(sizeof(AST_ERB_BLOCK_NODE_T));
|
|
240
240
|
|
|
241
241
|
ast_node_init(&erb_block_node->base, AST_ERB_BLOCK_NODE, start_position, end_position, errors);
|
|
@@ -249,7 +249,7 @@ AST_ERB_BLOCK_NODE_T* ast_erb_block_node_init(token_T* tag_opening, token_T* con
|
|
|
249
249
|
return erb_block_node;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
AST_ERB_WHEN_NODE_T* ast_erb_when_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
252
|
+
AST_ERB_WHEN_NODE_T* ast_erb_when_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
253
253
|
AST_ERB_WHEN_NODE_T* erb_when_node = malloc(sizeof(AST_ERB_WHEN_NODE_T));
|
|
254
254
|
|
|
255
255
|
ast_node_init(&erb_when_node->base, AST_ERB_WHEN_NODE, start_position, end_position, errors);
|
|
@@ -262,7 +262,7 @@ AST_ERB_WHEN_NODE_T* ast_erb_when_node_init(token_T* tag_opening, token_T* conte
|
|
|
262
262
|
return erb_when_node;
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
AST_ERB_CASE_NODE_T* ast_erb_case_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
265
|
+
AST_ERB_CASE_NODE_T* ast_erb_case_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* children, hb_array_T* conditions, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
266
266
|
AST_ERB_CASE_NODE_T* erb_case_node = malloc(sizeof(AST_ERB_CASE_NODE_T));
|
|
267
267
|
|
|
268
268
|
ast_node_init(&erb_case_node->base, AST_ERB_CASE_NODE, start_position, end_position, errors);
|
|
@@ -278,7 +278,7 @@ AST_ERB_CASE_NODE_T* ast_erb_case_node_init(token_T* tag_opening, token_T* conte
|
|
|
278
278
|
return erb_case_node;
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
AST_ERB_CASE_MATCH_NODE_T* ast_erb_case_match_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
281
|
+
AST_ERB_CASE_MATCH_NODE_T* ast_erb_case_match_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* children, hb_array_T* conditions, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
282
282
|
AST_ERB_CASE_MATCH_NODE_T* erb_case_match_node = malloc(sizeof(AST_ERB_CASE_MATCH_NODE_T));
|
|
283
283
|
|
|
284
284
|
ast_node_init(&erb_case_match_node->base, AST_ERB_CASE_MATCH_NODE, start_position, end_position, errors);
|
|
@@ -294,7 +294,7 @@ AST_ERB_CASE_MATCH_NODE_T* ast_erb_case_match_node_init(token_T* tag_opening, to
|
|
|
294
294
|
return erb_case_match_node;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
AST_ERB_WHILE_NODE_T* ast_erb_while_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
297
|
+
AST_ERB_WHILE_NODE_T* ast_erb_while_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
298
298
|
AST_ERB_WHILE_NODE_T* erb_while_node = malloc(sizeof(AST_ERB_WHILE_NODE_T));
|
|
299
299
|
|
|
300
300
|
ast_node_init(&erb_while_node->base, AST_ERB_WHILE_NODE, start_position, end_position, errors);
|
|
@@ -308,7 +308,7 @@ AST_ERB_WHILE_NODE_T* ast_erb_while_node_init(token_T* tag_opening, token_T* con
|
|
|
308
308
|
return erb_while_node;
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
AST_ERB_UNTIL_NODE_T* ast_erb_until_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
311
|
+
AST_ERB_UNTIL_NODE_T* ast_erb_until_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
312
312
|
AST_ERB_UNTIL_NODE_T* erb_until_node = malloc(sizeof(AST_ERB_UNTIL_NODE_T));
|
|
313
313
|
|
|
314
314
|
ast_node_init(&erb_until_node->base, AST_ERB_UNTIL_NODE, start_position, end_position, errors);
|
|
@@ -322,7 +322,7 @@ AST_ERB_UNTIL_NODE_T* ast_erb_until_node_init(token_T* tag_opening, token_T* con
|
|
|
322
322
|
return erb_until_node;
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
AST_ERB_FOR_NODE_T* ast_erb_for_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
325
|
+
AST_ERB_FOR_NODE_T* ast_erb_for_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
326
326
|
AST_ERB_FOR_NODE_T* erb_for_node = malloc(sizeof(AST_ERB_FOR_NODE_T));
|
|
327
327
|
|
|
328
328
|
ast_node_init(&erb_for_node->base, AST_ERB_FOR_NODE, start_position, end_position, errors);
|
|
@@ -336,7 +336,7 @@ AST_ERB_FOR_NODE_T* ast_erb_for_node_init(token_T* tag_opening, token_T* content
|
|
|
336
336
|
return erb_for_node;
|
|
337
337
|
}
|
|
338
338
|
|
|
339
|
-
AST_ERB_RESCUE_NODE_T* ast_erb_rescue_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
339
|
+
AST_ERB_RESCUE_NODE_T* ast_erb_rescue_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_RESCUE_NODE_STRUCT* subsequent, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
340
340
|
AST_ERB_RESCUE_NODE_T* erb_rescue_node = malloc(sizeof(AST_ERB_RESCUE_NODE_T));
|
|
341
341
|
|
|
342
342
|
ast_node_init(&erb_rescue_node->base, AST_ERB_RESCUE_NODE, start_position, end_position, errors);
|
|
@@ -350,7 +350,7 @@ AST_ERB_RESCUE_NODE_T* ast_erb_rescue_node_init(token_T* tag_opening, token_T* c
|
|
|
350
350
|
return erb_rescue_node;
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
AST_ERB_ENSURE_NODE_T* ast_erb_ensure_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
353
|
+
AST_ERB_ENSURE_NODE_T* ast_erb_ensure_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
354
354
|
AST_ERB_ENSURE_NODE_T* erb_ensure_node = malloc(sizeof(AST_ERB_ENSURE_NODE_T));
|
|
355
355
|
|
|
356
356
|
ast_node_init(&erb_ensure_node->base, AST_ERB_ENSURE_NODE, start_position, end_position, errors);
|
|
@@ -363,7 +363,7 @@ AST_ERB_ENSURE_NODE_T* ast_erb_ensure_node_init(token_T* tag_opening, token_T* c
|
|
|
363
363
|
return erb_ensure_node;
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
AST_ERB_BEGIN_NODE_T* ast_erb_begin_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
366
|
+
AST_ERB_BEGIN_NODE_T* ast_erb_begin_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
367
367
|
AST_ERB_BEGIN_NODE_T* erb_begin_node = malloc(sizeof(AST_ERB_BEGIN_NODE_T));
|
|
368
368
|
|
|
369
369
|
ast_node_init(&erb_begin_node->base, AST_ERB_BEGIN_NODE, start_position, end_position, errors);
|
|
@@ -380,7 +380,7 @@ AST_ERB_BEGIN_NODE_T* ast_erb_begin_node_init(token_T* tag_opening, token_T* con
|
|
|
380
380
|
return erb_begin_node;
|
|
381
381
|
}
|
|
382
382
|
|
|
383
|
-
AST_ERB_UNLESS_NODE_T* ast_erb_unless_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
383
|
+
AST_ERB_UNLESS_NODE_T* ast_erb_unless_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
384
384
|
AST_ERB_UNLESS_NODE_T* erb_unless_node = malloc(sizeof(AST_ERB_UNLESS_NODE_T));
|
|
385
385
|
|
|
386
386
|
ast_node_init(&erb_unless_node->base, AST_ERB_UNLESS_NODE, start_position, end_position, errors);
|
|
@@ -395,7 +395,7 @@ AST_ERB_UNLESS_NODE_T* ast_erb_unless_node_init(token_T* tag_opening, token_T* c
|
|
|
395
395
|
return erb_unless_node;
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
AST_ERB_YIELD_NODE_T* ast_erb_yield_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T
|
|
398
|
+
AST_ERB_YIELD_NODE_T* ast_erb_yield_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
399
399
|
AST_ERB_YIELD_NODE_T* erb_yield_node = malloc(sizeof(AST_ERB_YIELD_NODE_T));
|
|
400
400
|
|
|
401
401
|
ast_node_init(&erb_yield_node->base, AST_ERB_YIELD_NODE, start_position, end_position, errors);
|
|
@@ -407,7 +407,7 @@ AST_ERB_YIELD_NODE_T* ast_erb_yield_node_init(token_T* tag_opening, token_T* con
|
|
|
407
407
|
return erb_yield_node;
|
|
408
408
|
}
|
|
409
409
|
|
|
410
|
-
AST_ERB_IN_NODE_T* ast_erb_in_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing,
|
|
410
|
+
AST_ERB_IN_NODE_T* ast_erb_in_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors) {
|
|
411
411
|
AST_ERB_IN_NODE_T* erb_in_node = malloc(sizeof(AST_ERB_IN_NODE_T));
|
|
412
412
|
|
|
413
413
|
ast_node_init(&erb_in_node->base, AST_ERB_IN_NODE, start_position, end_position, errors);
|
|
@@ -420,108 +420,106 @@ AST_ERB_IN_NODE_T* ast_erb_in_node_init(token_T* tag_opening, token_T* content,
|
|
|
420
420
|
return erb_in_node;
|
|
421
421
|
}
|
|
422
422
|
|
|
423
|
-
|
|
423
|
+
hb_string_T ast_node_type_to_string(AST_NODE_T* node) {
|
|
424
424
|
switch (node->type) {
|
|
425
|
-
case AST_DOCUMENT_NODE: return "AST_DOCUMENT_NODE";
|
|
426
|
-
case AST_LITERAL_NODE: return "AST_LITERAL_NODE";
|
|
427
|
-
case AST_HTML_OPEN_TAG_NODE: return "AST_HTML_OPEN_TAG_NODE";
|
|
428
|
-
case AST_HTML_CLOSE_TAG_NODE: return "AST_HTML_CLOSE_TAG_NODE";
|
|
429
|
-
case AST_HTML_ELEMENT_NODE: return "AST_HTML_ELEMENT_NODE";
|
|
430
|
-
case AST_HTML_ATTRIBUTE_VALUE_NODE: return "AST_HTML_ATTRIBUTE_VALUE_NODE";
|
|
431
|
-
case AST_HTML_ATTRIBUTE_NAME_NODE: return "AST_HTML_ATTRIBUTE_NAME_NODE";
|
|
432
|
-
case AST_HTML_ATTRIBUTE_NODE: return "AST_HTML_ATTRIBUTE_NODE";
|
|
433
|
-
case AST_HTML_TEXT_NODE: return "AST_HTML_TEXT_NODE";
|
|
434
|
-
case AST_HTML_COMMENT_NODE: return "AST_HTML_COMMENT_NODE";
|
|
435
|
-
case AST_HTML_DOCTYPE_NODE: return "AST_HTML_DOCTYPE_NODE";
|
|
436
|
-
case AST_XML_DECLARATION_NODE: return "AST_XML_DECLARATION_NODE";
|
|
437
|
-
case AST_CDATA_NODE: return "AST_CDATA_NODE";
|
|
438
|
-
case AST_WHITESPACE_NODE: return "AST_WHITESPACE_NODE";
|
|
439
|
-
case AST_ERB_CONTENT_NODE: return "AST_ERB_CONTENT_NODE";
|
|
440
|
-
case AST_ERB_END_NODE: return "AST_ERB_END_NODE";
|
|
441
|
-
case AST_ERB_ELSE_NODE: return "AST_ERB_ELSE_NODE";
|
|
442
|
-
case AST_ERB_IF_NODE: return "AST_ERB_IF_NODE";
|
|
443
|
-
case AST_ERB_BLOCK_NODE: return "AST_ERB_BLOCK_NODE";
|
|
444
|
-
case AST_ERB_WHEN_NODE: return "AST_ERB_WHEN_NODE";
|
|
445
|
-
case AST_ERB_CASE_NODE: return "AST_ERB_CASE_NODE";
|
|
446
|
-
case AST_ERB_CASE_MATCH_NODE: return "AST_ERB_CASE_MATCH_NODE";
|
|
447
|
-
case AST_ERB_WHILE_NODE: return "AST_ERB_WHILE_NODE";
|
|
448
|
-
case AST_ERB_UNTIL_NODE: return "AST_ERB_UNTIL_NODE";
|
|
449
|
-
case AST_ERB_FOR_NODE: return "AST_ERB_FOR_NODE";
|
|
450
|
-
case AST_ERB_RESCUE_NODE: return "AST_ERB_RESCUE_NODE";
|
|
451
|
-
case AST_ERB_ENSURE_NODE: return "AST_ERB_ENSURE_NODE";
|
|
452
|
-
case AST_ERB_BEGIN_NODE: return "AST_ERB_BEGIN_NODE";
|
|
453
|
-
case AST_ERB_UNLESS_NODE: return "AST_ERB_UNLESS_NODE";
|
|
454
|
-
case AST_ERB_YIELD_NODE: return "AST_ERB_YIELD_NODE";
|
|
455
|
-
case AST_ERB_IN_NODE: return "AST_ERB_IN_NODE";
|
|
425
|
+
case AST_DOCUMENT_NODE: return hb_string("AST_DOCUMENT_NODE");
|
|
426
|
+
case AST_LITERAL_NODE: return hb_string("AST_LITERAL_NODE");
|
|
427
|
+
case AST_HTML_OPEN_TAG_NODE: return hb_string("AST_HTML_OPEN_TAG_NODE");
|
|
428
|
+
case AST_HTML_CLOSE_TAG_NODE: return hb_string("AST_HTML_CLOSE_TAG_NODE");
|
|
429
|
+
case AST_HTML_ELEMENT_NODE: return hb_string("AST_HTML_ELEMENT_NODE");
|
|
430
|
+
case AST_HTML_ATTRIBUTE_VALUE_NODE: return hb_string("AST_HTML_ATTRIBUTE_VALUE_NODE");
|
|
431
|
+
case AST_HTML_ATTRIBUTE_NAME_NODE: return hb_string("AST_HTML_ATTRIBUTE_NAME_NODE");
|
|
432
|
+
case AST_HTML_ATTRIBUTE_NODE: return hb_string("AST_HTML_ATTRIBUTE_NODE");
|
|
433
|
+
case AST_HTML_TEXT_NODE: return hb_string("AST_HTML_TEXT_NODE");
|
|
434
|
+
case AST_HTML_COMMENT_NODE: return hb_string("AST_HTML_COMMENT_NODE");
|
|
435
|
+
case AST_HTML_DOCTYPE_NODE: return hb_string("AST_HTML_DOCTYPE_NODE");
|
|
436
|
+
case AST_XML_DECLARATION_NODE: return hb_string("AST_XML_DECLARATION_NODE");
|
|
437
|
+
case AST_CDATA_NODE: return hb_string("AST_CDATA_NODE");
|
|
438
|
+
case AST_WHITESPACE_NODE: return hb_string("AST_WHITESPACE_NODE");
|
|
439
|
+
case AST_ERB_CONTENT_NODE: return hb_string("AST_ERB_CONTENT_NODE");
|
|
440
|
+
case AST_ERB_END_NODE: return hb_string("AST_ERB_END_NODE");
|
|
441
|
+
case AST_ERB_ELSE_NODE: return hb_string("AST_ERB_ELSE_NODE");
|
|
442
|
+
case AST_ERB_IF_NODE: return hb_string("AST_ERB_IF_NODE");
|
|
443
|
+
case AST_ERB_BLOCK_NODE: return hb_string("AST_ERB_BLOCK_NODE");
|
|
444
|
+
case AST_ERB_WHEN_NODE: return hb_string("AST_ERB_WHEN_NODE");
|
|
445
|
+
case AST_ERB_CASE_NODE: return hb_string("AST_ERB_CASE_NODE");
|
|
446
|
+
case AST_ERB_CASE_MATCH_NODE: return hb_string("AST_ERB_CASE_MATCH_NODE");
|
|
447
|
+
case AST_ERB_WHILE_NODE: return hb_string("AST_ERB_WHILE_NODE");
|
|
448
|
+
case AST_ERB_UNTIL_NODE: return hb_string("AST_ERB_UNTIL_NODE");
|
|
449
|
+
case AST_ERB_FOR_NODE: return hb_string("AST_ERB_FOR_NODE");
|
|
450
|
+
case AST_ERB_RESCUE_NODE: return hb_string("AST_ERB_RESCUE_NODE");
|
|
451
|
+
case AST_ERB_ENSURE_NODE: return hb_string("AST_ERB_ENSURE_NODE");
|
|
452
|
+
case AST_ERB_BEGIN_NODE: return hb_string("AST_ERB_BEGIN_NODE");
|
|
453
|
+
case AST_ERB_UNLESS_NODE: return hb_string("AST_ERB_UNLESS_NODE");
|
|
454
|
+
case AST_ERB_YIELD_NODE: return hb_string("AST_ERB_YIELD_NODE");
|
|
455
|
+
case AST_ERB_IN_NODE: return hb_string("AST_ERB_IN_NODE");
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
-
return "Unknown ast_node_type_T";
|
|
458
|
+
return hb_string("Unknown ast_node_type_T");
|
|
459
459
|
}
|
|
460
460
|
|
|
461
|
-
|
|
461
|
+
hb_string_T ast_node_human_type(AST_NODE_T* node) {
|
|
462
462
|
switch (node->type) {
|
|
463
|
-
case AST_DOCUMENT_NODE: return "DocumentNode";
|
|
464
|
-
case AST_LITERAL_NODE: return "LiteralNode";
|
|
465
|
-
case AST_HTML_OPEN_TAG_NODE: return "HTMLOpenTagNode";
|
|
466
|
-
case AST_HTML_CLOSE_TAG_NODE: return "HTMLCloseTagNode";
|
|
467
|
-
case AST_HTML_ELEMENT_NODE: return "HTMLElementNode";
|
|
468
|
-
case AST_HTML_ATTRIBUTE_VALUE_NODE: return "HTMLAttributeValueNode";
|
|
469
|
-
case AST_HTML_ATTRIBUTE_NAME_NODE: return "HTMLAttributeNameNode";
|
|
470
|
-
case AST_HTML_ATTRIBUTE_NODE: return "HTMLAttributeNode";
|
|
471
|
-
case AST_HTML_TEXT_NODE: return "HTMLTextNode";
|
|
472
|
-
case AST_HTML_COMMENT_NODE: return "HTMLCommentNode";
|
|
473
|
-
case AST_HTML_DOCTYPE_NODE: return "HTMLDoctypeNode";
|
|
474
|
-
case AST_XML_DECLARATION_NODE: return "XMLDeclarationNode";
|
|
475
|
-
case AST_CDATA_NODE: return "CDATANode";
|
|
476
|
-
case AST_WHITESPACE_NODE: return "WhitespaceNode";
|
|
477
|
-
case AST_ERB_CONTENT_NODE: return "ERBContentNode";
|
|
478
|
-
case AST_ERB_END_NODE: return "ERBEndNode";
|
|
479
|
-
case AST_ERB_ELSE_NODE: return "ERBElseNode";
|
|
480
|
-
case AST_ERB_IF_NODE: return "ERBIfNode";
|
|
481
|
-
case AST_ERB_BLOCK_NODE: return "ERBBlockNode";
|
|
482
|
-
case AST_ERB_WHEN_NODE: return "ERBWhenNode";
|
|
483
|
-
case AST_ERB_CASE_NODE: return "ERBCaseNode";
|
|
484
|
-
case AST_ERB_CASE_MATCH_NODE: return "ERBCaseMatchNode";
|
|
485
|
-
case AST_ERB_WHILE_NODE: return "ERBWhileNode";
|
|
486
|
-
case AST_ERB_UNTIL_NODE: return "ERBUntilNode";
|
|
487
|
-
case AST_ERB_FOR_NODE: return "ERBForNode";
|
|
488
|
-
case AST_ERB_RESCUE_NODE: return "ERBRescueNode";
|
|
489
|
-
case AST_ERB_ENSURE_NODE: return "ERBEnsureNode";
|
|
490
|
-
case AST_ERB_BEGIN_NODE: return "ERBBeginNode";
|
|
491
|
-
case AST_ERB_UNLESS_NODE: return "ERBUnlessNode";
|
|
492
|
-
case AST_ERB_YIELD_NODE: return "ERBYieldNode";
|
|
493
|
-
case AST_ERB_IN_NODE: return "ERBInNode";
|
|
463
|
+
case AST_DOCUMENT_NODE: return hb_string("DocumentNode");
|
|
464
|
+
case AST_LITERAL_NODE: return hb_string("LiteralNode");
|
|
465
|
+
case AST_HTML_OPEN_TAG_NODE: return hb_string("HTMLOpenTagNode");
|
|
466
|
+
case AST_HTML_CLOSE_TAG_NODE: return hb_string("HTMLCloseTagNode");
|
|
467
|
+
case AST_HTML_ELEMENT_NODE: return hb_string("HTMLElementNode");
|
|
468
|
+
case AST_HTML_ATTRIBUTE_VALUE_NODE: return hb_string("HTMLAttributeValueNode");
|
|
469
|
+
case AST_HTML_ATTRIBUTE_NAME_NODE: return hb_string("HTMLAttributeNameNode");
|
|
470
|
+
case AST_HTML_ATTRIBUTE_NODE: return hb_string("HTMLAttributeNode");
|
|
471
|
+
case AST_HTML_TEXT_NODE: return hb_string("HTMLTextNode");
|
|
472
|
+
case AST_HTML_COMMENT_NODE: return hb_string("HTMLCommentNode");
|
|
473
|
+
case AST_HTML_DOCTYPE_NODE: return hb_string("HTMLDoctypeNode");
|
|
474
|
+
case AST_XML_DECLARATION_NODE: return hb_string("XMLDeclarationNode");
|
|
475
|
+
case AST_CDATA_NODE: return hb_string("CDATANode");
|
|
476
|
+
case AST_WHITESPACE_NODE: return hb_string("WhitespaceNode");
|
|
477
|
+
case AST_ERB_CONTENT_NODE: return hb_string("ERBContentNode");
|
|
478
|
+
case AST_ERB_END_NODE: return hb_string("ERBEndNode");
|
|
479
|
+
case AST_ERB_ELSE_NODE: return hb_string("ERBElseNode");
|
|
480
|
+
case AST_ERB_IF_NODE: return hb_string("ERBIfNode");
|
|
481
|
+
case AST_ERB_BLOCK_NODE: return hb_string("ERBBlockNode");
|
|
482
|
+
case AST_ERB_WHEN_NODE: return hb_string("ERBWhenNode");
|
|
483
|
+
case AST_ERB_CASE_NODE: return hb_string("ERBCaseNode");
|
|
484
|
+
case AST_ERB_CASE_MATCH_NODE: return hb_string("ERBCaseMatchNode");
|
|
485
|
+
case AST_ERB_WHILE_NODE: return hb_string("ERBWhileNode");
|
|
486
|
+
case AST_ERB_UNTIL_NODE: return hb_string("ERBUntilNode");
|
|
487
|
+
case AST_ERB_FOR_NODE: return hb_string("ERBForNode");
|
|
488
|
+
case AST_ERB_RESCUE_NODE: return hb_string("ERBRescueNode");
|
|
489
|
+
case AST_ERB_ENSURE_NODE: return hb_string("ERBEnsureNode");
|
|
490
|
+
case AST_ERB_BEGIN_NODE: return hb_string("ERBBeginNode");
|
|
491
|
+
case AST_ERB_UNLESS_NODE: return hb_string("ERBUnlessNode");
|
|
492
|
+
case AST_ERB_YIELD_NODE: return hb_string("ERBYieldNode");
|
|
493
|
+
case AST_ERB_IN_NODE: return hb_string("ERBInNode");
|
|
494
494
|
}
|
|
495
495
|
|
|
496
|
-
return "Unknown ast_node_type_T";
|
|
496
|
+
return hb_string("Unknown ast_node_type_T");
|
|
497
497
|
}
|
|
498
498
|
|
|
499
499
|
void ast_free_base_node(AST_NODE_T* node) {
|
|
500
500
|
if (node == NULL) { return; }
|
|
501
501
|
|
|
502
502
|
if (node->errors) {
|
|
503
|
-
for (size_t i = 0; i <
|
|
504
|
-
ERROR_T* child =
|
|
503
|
+
for (size_t i = 0; i < hb_array_size(node->errors); i++) {
|
|
504
|
+
ERROR_T* child = hb_array_get(node->errors, i);
|
|
505
505
|
if (child != NULL) { error_free(child); }
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
|
|
508
|
+
hb_array_free(&node->errors);
|
|
509
509
|
}
|
|
510
510
|
|
|
511
|
-
if (node->location) { location_free(node->location); }
|
|
512
|
-
|
|
513
511
|
free(node);
|
|
514
512
|
}
|
|
515
513
|
|
|
516
514
|
|
|
517
515
|
static void ast_free_document_node(AST_DOCUMENT_NODE_T* document_node) {
|
|
518
516
|
if (document_node->children != NULL) {
|
|
519
|
-
for (size_t i = 0; i <
|
|
520
|
-
AST_NODE_T* child =
|
|
517
|
+
for (size_t i = 0; i < hb_array_size(document_node->children); i++) {
|
|
518
|
+
AST_NODE_T* child = hb_array_get(document_node->children, i);
|
|
521
519
|
if (child) { ast_node_free(child); }
|
|
522
520
|
}
|
|
523
521
|
|
|
524
|
-
|
|
522
|
+
hb_array_free(&document_node->children);
|
|
525
523
|
}
|
|
526
524
|
|
|
527
525
|
ast_free_base_node(&document_node->base);
|
|
@@ -538,12 +536,12 @@ static void ast_free_html_open_tag_node(AST_HTML_OPEN_TAG_NODE_T* html_open_tag_
|
|
|
538
536
|
if (html_open_tag_node->tag_name != NULL) { token_free(html_open_tag_node->tag_name); }
|
|
539
537
|
if (html_open_tag_node->tag_closing != NULL) { token_free(html_open_tag_node->tag_closing); }
|
|
540
538
|
if (html_open_tag_node->children != NULL) {
|
|
541
|
-
for (size_t i = 0; i <
|
|
542
|
-
AST_NODE_T* child =
|
|
539
|
+
for (size_t i = 0; i < hb_array_size(html_open_tag_node->children); i++) {
|
|
540
|
+
AST_NODE_T* child = hb_array_get(html_open_tag_node->children, i);
|
|
543
541
|
if (child) { ast_node_free(child); }
|
|
544
542
|
}
|
|
545
543
|
|
|
546
|
-
|
|
544
|
+
hb_array_free(&html_open_tag_node->children);
|
|
547
545
|
}
|
|
548
546
|
|
|
549
547
|
ast_free_base_node(&html_open_tag_node->base);
|
|
@@ -553,12 +551,12 @@ static void ast_free_html_close_tag_node(AST_HTML_CLOSE_TAG_NODE_T* html_close_t
|
|
|
553
551
|
if (html_close_tag_node->tag_opening != NULL) { token_free(html_close_tag_node->tag_opening); }
|
|
554
552
|
if (html_close_tag_node->tag_name != NULL) { token_free(html_close_tag_node->tag_name); }
|
|
555
553
|
if (html_close_tag_node->children != NULL) {
|
|
556
|
-
for (size_t i = 0; i <
|
|
557
|
-
AST_NODE_T* child =
|
|
554
|
+
for (size_t i = 0; i < hb_array_size(html_close_tag_node->children); i++) {
|
|
555
|
+
AST_NODE_T* child = hb_array_get(html_close_tag_node->children, i);
|
|
558
556
|
if (child) { ast_node_free(child); }
|
|
559
557
|
}
|
|
560
558
|
|
|
561
|
-
|
|
559
|
+
hb_array_free(&html_close_tag_node->children);
|
|
562
560
|
}
|
|
563
561
|
if (html_close_tag_node->tag_closing != NULL) { token_free(html_close_tag_node->tag_closing); }
|
|
564
562
|
|
|
@@ -569,12 +567,12 @@ static void ast_free_html_element_node(AST_HTML_ELEMENT_NODE_T* html_element_nod
|
|
|
569
567
|
ast_node_free((AST_NODE_T*) html_element_node->open_tag);
|
|
570
568
|
if (html_element_node->tag_name != NULL) { token_free(html_element_node->tag_name); }
|
|
571
569
|
if (html_element_node->body != NULL) {
|
|
572
|
-
for (size_t i = 0; i <
|
|
573
|
-
AST_NODE_T* child =
|
|
570
|
+
for (size_t i = 0; i < hb_array_size(html_element_node->body); i++) {
|
|
571
|
+
AST_NODE_T* child = hb_array_get(html_element_node->body, i);
|
|
574
572
|
if (child) { ast_node_free(child); }
|
|
575
573
|
}
|
|
576
574
|
|
|
577
|
-
|
|
575
|
+
hb_array_free(&html_element_node->body);
|
|
578
576
|
}
|
|
579
577
|
ast_node_free((AST_NODE_T*) html_element_node->close_tag);
|
|
580
578
|
|
|
@@ -584,12 +582,12 @@ static void ast_free_html_element_node(AST_HTML_ELEMENT_NODE_T* html_element_nod
|
|
|
584
582
|
static void ast_free_html_attribute_value_node(AST_HTML_ATTRIBUTE_VALUE_NODE_T* html_attribute_value_node) {
|
|
585
583
|
if (html_attribute_value_node->open_quote != NULL) { token_free(html_attribute_value_node->open_quote); }
|
|
586
584
|
if (html_attribute_value_node->children != NULL) {
|
|
587
|
-
for (size_t i = 0; i <
|
|
588
|
-
AST_NODE_T* child =
|
|
585
|
+
for (size_t i = 0; i < hb_array_size(html_attribute_value_node->children); i++) {
|
|
586
|
+
AST_NODE_T* child = hb_array_get(html_attribute_value_node->children, i);
|
|
589
587
|
if (child) { ast_node_free(child); }
|
|
590
588
|
}
|
|
591
589
|
|
|
592
|
-
|
|
590
|
+
hb_array_free(&html_attribute_value_node->children);
|
|
593
591
|
}
|
|
594
592
|
if (html_attribute_value_node->close_quote != NULL) { token_free(html_attribute_value_node->close_quote); }
|
|
595
593
|
|
|
@@ -598,12 +596,12 @@ static void ast_free_html_attribute_value_node(AST_HTML_ATTRIBUTE_VALUE_NODE_T*
|
|
|
598
596
|
|
|
599
597
|
static void ast_free_html_attribute_name_node(AST_HTML_ATTRIBUTE_NAME_NODE_T* html_attribute_name_node) {
|
|
600
598
|
if (html_attribute_name_node->children != NULL) {
|
|
601
|
-
for (size_t i = 0; i <
|
|
602
|
-
AST_NODE_T* child =
|
|
599
|
+
for (size_t i = 0; i < hb_array_size(html_attribute_name_node->children); i++) {
|
|
600
|
+
AST_NODE_T* child = hb_array_get(html_attribute_name_node->children, i);
|
|
603
601
|
if (child) { ast_node_free(child); }
|
|
604
602
|
}
|
|
605
603
|
|
|
606
|
-
|
|
604
|
+
hb_array_free(&html_attribute_name_node->children);
|
|
607
605
|
}
|
|
608
606
|
|
|
609
607
|
ast_free_base_node(&html_attribute_name_node->base);
|
|
@@ -626,12 +624,12 @@ static void ast_free_html_text_node(AST_HTML_TEXT_NODE_T* html_text_node) {
|
|
|
626
624
|
static void ast_free_html_comment_node(AST_HTML_COMMENT_NODE_T* html_comment_node) {
|
|
627
625
|
if (html_comment_node->comment_start != NULL) { token_free(html_comment_node->comment_start); }
|
|
628
626
|
if (html_comment_node->children != NULL) {
|
|
629
|
-
for (size_t i = 0; i <
|
|
630
|
-
AST_NODE_T* child =
|
|
627
|
+
for (size_t i = 0; i < hb_array_size(html_comment_node->children); i++) {
|
|
628
|
+
AST_NODE_T* child = hb_array_get(html_comment_node->children, i);
|
|
631
629
|
if (child) { ast_node_free(child); }
|
|
632
630
|
}
|
|
633
631
|
|
|
634
|
-
|
|
632
|
+
hb_array_free(&html_comment_node->children);
|
|
635
633
|
}
|
|
636
634
|
if (html_comment_node->comment_end != NULL) { token_free(html_comment_node->comment_end); }
|
|
637
635
|
|
|
@@ -641,12 +639,12 @@ static void ast_free_html_comment_node(AST_HTML_COMMENT_NODE_T* html_comment_nod
|
|
|
641
639
|
static void ast_free_html_doctype_node(AST_HTML_DOCTYPE_NODE_T* html_doctype_node) {
|
|
642
640
|
if (html_doctype_node->tag_opening != NULL) { token_free(html_doctype_node->tag_opening); }
|
|
643
641
|
if (html_doctype_node->children != NULL) {
|
|
644
|
-
for (size_t i = 0; i <
|
|
645
|
-
AST_NODE_T* child =
|
|
642
|
+
for (size_t i = 0; i < hb_array_size(html_doctype_node->children); i++) {
|
|
643
|
+
AST_NODE_T* child = hb_array_get(html_doctype_node->children, i);
|
|
646
644
|
if (child) { ast_node_free(child); }
|
|
647
645
|
}
|
|
648
646
|
|
|
649
|
-
|
|
647
|
+
hb_array_free(&html_doctype_node->children);
|
|
650
648
|
}
|
|
651
649
|
if (html_doctype_node->tag_closing != NULL) { token_free(html_doctype_node->tag_closing); }
|
|
652
650
|
|
|
@@ -656,12 +654,12 @@ static void ast_free_html_doctype_node(AST_HTML_DOCTYPE_NODE_T* html_doctype_nod
|
|
|
656
654
|
static void ast_free_xml_declaration_node(AST_XML_DECLARATION_NODE_T* xml_declaration_node) {
|
|
657
655
|
if (xml_declaration_node->tag_opening != NULL) { token_free(xml_declaration_node->tag_opening); }
|
|
658
656
|
if (xml_declaration_node->children != NULL) {
|
|
659
|
-
for (size_t i = 0; i <
|
|
660
|
-
AST_NODE_T* child =
|
|
657
|
+
for (size_t i = 0; i < hb_array_size(xml_declaration_node->children); i++) {
|
|
658
|
+
AST_NODE_T* child = hb_array_get(xml_declaration_node->children, i);
|
|
661
659
|
if (child) { ast_node_free(child); }
|
|
662
660
|
}
|
|
663
661
|
|
|
664
|
-
|
|
662
|
+
hb_array_free(&xml_declaration_node->children);
|
|
665
663
|
}
|
|
666
664
|
if (xml_declaration_node->tag_closing != NULL) { token_free(xml_declaration_node->tag_closing); }
|
|
667
665
|
|
|
@@ -671,12 +669,12 @@ static void ast_free_xml_declaration_node(AST_XML_DECLARATION_NODE_T* xml_declar
|
|
|
671
669
|
static void ast_free_cdata_node(AST_CDATA_NODE_T* cdata_node) {
|
|
672
670
|
if (cdata_node->tag_opening != NULL) { token_free(cdata_node->tag_opening); }
|
|
673
671
|
if (cdata_node->children != NULL) {
|
|
674
|
-
for (size_t i = 0; i <
|
|
675
|
-
AST_NODE_T* child =
|
|
672
|
+
for (size_t i = 0; i < hb_array_size(cdata_node->children); i++) {
|
|
673
|
+
AST_NODE_T* child = hb_array_get(cdata_node->children, i);
|
|
676
674
|
if (child) { ast_node_free(child); }
|
|
677
675
|
}
|
|
678
676
|
|
|
679
|
-
|
|
677
|
+
hb_array_free(&cdata_node->children);
|
|
680
678
|
}
|
|
681
679
|
if (cdata_node->tag_closing != NULL) { token_free(cdata_node->tag_closing); }
|
|
682
680
|
|
|
@@ -713,12 +711,12 @@ static void ast_free_erb_else_node(AST_ERB_ELSE_NODE_T* erb_else_node) {
|
|
|
713
711
|
if (erb_else_node->content != NULL) { token_free(erb_else_node->content); }
|
|
714
712
|
if (erb_else_node->tag_closing != NULL) { token_free(erb_else_node->tag_closing); }
|
|
715
713
|
if (erb_else_node->statements != NULL) {
|
|
716
|
-
for (size_t i = 0; i <
|
|
717
|
-
AST_NODE_T* child =
|
|
714
|
+
for (size_t i = 0; i < hb_array_size(erb_else_node->statements); i++) {
|
|
715
|
+
AST_NODE_T* child = hb_array_get(erb_else_node->statements, i);
|
|
718
716
|
if (child) { ast_node_free(child); }
|
|
719
717
|
}
|
|
720
718
|
|
|
721
|
-
|
|
719
|
+
hb_array_free(&erb_else_node->statements);
|
|
722
720
|
}
|
|
723
721
|
|
|
724
722
|
ast_free_base_node(&erb_else_node->base);
|
|
@@ -729,12 +727,12 @@ static void ast_free_erb_if_node(AST_ERB_IF_NODE_T* erb_if_node) {
|
|
|
729
727
|
if (erb_if_node->content != NULL) { token_free(erb_if_node->content); }
|
|
730
728
|
if (erb_if_node->tag_closing != NULL) { token_free(erb_if_node->tag_closing); }
|
|
731
729
|
if (erb_if_node->statements != NULL) {
|
|
732
|
-
for (size_t i = 0; i <
|
|
733
|
-
AST_NODE_T* child =
|
|
730
|
+
for (size_t i = 0; i < hb_array_size(erb_if_node->statements); i++) {
|
|
731
|
+
AST_NODE_T* child = hb_array_get(erb_if_node->statements, i);
|
|
734
732
|
if (child) { ast_node_free(child); }
|
|
735
733
|
}
|
|
736
734
|
|
|
737
|
-
|
|
735
|
+
hb_array_free(&erb_if_node->statements);
|
|
738
736
|
}
|
|
739
737
|
ast_node_free((AST_NODE_T*) erb_if_node->subsequent);
|
|
740
738
|
ast_node_free((AST_NODE_T*) erb_if_node->end_node);
|
|
@@ -747,12 +745,12 @@ static void ast_free_erb_block_node(AST_ERB_BLOCK_NODE_T* erb_block_node) {
|
|
|
747
745
|
if (erb_block_node->content != NULL) { token_free(erb_block_node->content); }
|
|
748
746
|
if (erb_block_node->tag_closing != NULL) { token_free(erb_block_node->tag_closing); }
|
|
749
747
|
if (erb_block_node->body != NULL) {
|
|
750
|
-
for (size_t i = 0; i <
|
|
751
|
-
AST_NODE_T* child =
|
|
748
|
+
for (size_t i = 0; i < hb_array_size(erb_block_node->body); i++) {
|
|
749
|
+
AST_NODE_T* child = hb_array_get(erb_block_node->body, i);
|
|
752
750
|
if (child) { ast_node_free(child); }
|
|
753
751
|
}
|
|
754
752
|
|
|
755
|
-
|
|
753
|
+
hb_array_free(&erb_block_node->body);
|
|
756
754
|
}
|
|
757
755
|
ast_node_free((AST_NODE_T*) erb_block_node->end_node);
|
|
758
756
|
|
|
@@ -764,12 +762,12 @@ static void ast_free_erb_when_node(AST_ERB_WHEN_NODE_T* erb_when_node) {
|
|
|
764
762
|
if (erb_when_node->content != NULL) { token_free(erb_when_node->content); }
|
|
765
763
|
if (erb_when_node->tag_closing != NULL) { token_free(erb_when_node->tag_closing); }
|
|
766
764
|
if (erb_when_node->statements != NULL) {
|
|
767
|
-
for (size_t i = 0; i <
|
|
768
|
-
AST_NODE_T* child =
|
|
765
|
+
for (size_t i = 0; i < hb_array_size(erb_when_node->statements); i++) {
|
|
766
|
+
AST_NODE_T* child = hb_array_get(erb_when_node->statements, i);
|
|
769
767
|
if (child) { ast_node_free(child); }
|
|
770
768
|
}
|
|
771
769
|
|
|
772
|
-
|
|
770
|
+
hb_array_free(&erb_when_node->statements);
|
|
773
771
|
}
|
|
774
772
|
|
|
775
773
|
ast_free_base_node(&erb_when_node->base);
|
|
@@ -780,20 +778,20 @@ static void ast_free_erb_case_node(AST_ERB_CASE_NODE_T* erb_case_node) {
|
|
|
780
778
|
if (erb_case_node->content != NULL) { token_free(erb_case_node->content); }
|
|
781
779
|
if (erb_case_node->tag_closing != NULL) { token_free(erb_case_node->tag_closing); }
|
|
782
780
|
if (erb_case_node->children != NULL) {
|
|
783
|
-
for (size_t i = 0; i <
|
|
784
|
-
AST_NODE_T* child =
|
|
781
|
+
for (size_t i = 0; i < hb_array_size(erb_case_node->children); i++) {
|
|
782
|
+
AST_NODE_T* child = hb_array_get(erb_case_node->children, i);
|
|
785
783
|
if (child) { ast_node_free(child); }
|
|
786
784
|
}
|
|
787
785
|
|
|
788
|
-
|
|
786
|
+
hb_array_free(&erb_case_node->children);
|
|
789
787
|
}
|
|
790
788
|
if (erb_case_node->conditions != NULL) {
|
|
791
|
-
for (size_t i = 0; i <
|
|
792
|
-
AST_NODE_T* child =
|
|
789
|
+
for (size_t i = 0; i < hb_array_size(erb_case_node->conditions); i++) {
|
|
790
|
+
AST_NODE_T* child = hb_array_get(erb_case_node->conditions, i);
|
|
793
791
|
if (child) { ast_node_free(child); }
|
|
794
792
|
}
|
|
795
793
|
|
|
796
|
-
|
|
794
|
+
hb_array_free(&erb_case_node->conditions);
|
|
797
795
|
}
|
|
798
796
|
ast_node_free((AST_NODE_T*) erb_case_node->else_clause);
|
|
799
797
|
ast_node_free((AST_NODE_T*) erb_case_node->end_node);
|
|
@@ -806,20 +804,20 @@ static void ast_free_erb_case_match_node(AST_ERB_CASE_MATCH_NODE_T* erb_case_mat
|
|
|
806
804
|
if (erb_case_match_node->content != NULL) { token_free(erb_case_match_node->content); }
|
|
807
805
|
if (erb_case_match_node->tag_closing != NULL) { token_free(erb_case_match_node->tag_closing); }
|
|
808
806
|
if (erb_case_match_node->children != NULL) {
|
|
809
|
-
for (size_t i = 0; i <
|
|
810
|
-
AST_NODE_T* child =
|
|
807
|
+
for (size_t i = 0; i < hb_array_size(erb_case_match_node->children); i++) {
|
|
808
|
+
AST_NODE_T* child = hb_array_get(erb_case_match_node->children, i);
|
|
811
809
|
if (child) { ast_node_free(child); }
|
|
812
810
|
}
|
|
813
811
|
|
|
814
|
-
|
|
812
|
+
hb_array_free(&erb_case_match_node->children);
|
|
815
813
|
}
|
|
816
814
|
if (erb_case_match_node->conditions != NULL) {
|
|
817
|
-
for (size_t i = 0; i <
|
|
818
|
-
AST_NODE_T* child =
|
|
815
|
+
for (size_t i = 0; i < hb_array_size(erb_case_match_node->conditions); i++) {
|
|
816
|
+
AST_NODE_T* child = hb_array_get(erb_case_match_node->conditions, i);
|
|
819
817
|
if (child) { ast_node_free(child); }
|
|
820
818
|
}
|
|
821
819
|
|
|
822
|
-
|
|
820
|
+
hb_array_free(&erb_case_match_node->conditions);
|
|
823
821
|
}
|
|
824
822
|
ast_node_free((AST_NODE_T*) erb_case_match_node->else_clause);
|
|
825
823
|
ast_node_free((AST_NODE_T*) erb_case_match_node->end_node);
|
|
@@ -832,12 +830,12 @@ static void ast_free_erb_while_node(AST_ERB_WHILE_NODE_T* erb_while_node) {
|
|
|
832
830
|
if (erb_while_node->content != NULL) { token_free(erb_while_node->content); }
|
|
833
831
|
if (erb_while_node->tag_closing != NULL) { token_free(erb_while_node->tag_closing); }
|
|
834
832
|
if (erb_while_node->statements != NULL) {
|
|
835
|
-
for (size_t i = 0; i <
|
|
836
|
-
AST_NODE_T* child =
|
|
833
|
+
for (size_t i = 0; i < hb_array_size(erb_while_node->statements); i++) {
|
|
834
|
+
AST_NODE_T* child = hb_array_get(erb_while_node->statements, i);
|
|
837
835
|
if (child) { ast_node_free(child); }
|
|
838
836
|
}
|
|
839
837
|
|
|
840
|
-
|
|
838
|
+
hb_array_free(&erb_while_node->statements);
|
|
841
839
|
}
|
|
842
840
|
ast_node_free((AST_NODE_T*) erb_while_node->end_node);
|
|
843
841
|
|
|
@@ -849,12 +847,12 @@ static void ast_free_erb_until_node(AST_ERB_UNTIL_NODE_T* erb_until_node) {
|
|
|
849
847
|
if (erb_until_node->content != NULL) { token_free(erb_until_node->content); }
|
|
850
848
|
if (erb_until_node->tag_closing != NULL) { token_free(erb_until_node->tag_closing); }
|
|
851
849
|
if (erb_until_node->statements != NULL) {
|
|
852
|
-
for (size_t i = 0; i <
|
|
853
|
-
AST_NODE_T* child =
|
|
850
|
+
for (size_t i = 0; i < hb_array_size(erb_until_node->statements); i++) {
|
|
851
|
+
AST_NODE_T* child = hb_array_get(erb_until_node->statements, i);
|
|
854
852
|
if (child) { ast_node_free(child); }
|
|
855
853
|
}
|
|
856
854
|
|
|
857
|
-
|
|
855
|
+
hb_array_free(&erb_until_node->statements);
|
|
858
856
|
}
|
|
859
857
|
ast_node_free((AST_NODE_T*) erb_until_node->end_node);
|
|
860
858
|
|
|
@@ -866,12 +864,12 @@ static void ast_free_erb_for_node(AST_ERB_FOR_NODE_T* erb_for_node) {
|
|
|
866
864
|
if (erb_for_node->content != NULL) { token_free(erb_for_node->content); }
|
|
867
865
|
if (erb_for_node->tag_closing != NULL) { token_free(erb_for_node->tag_closing); }
|
|
868
866
|
if (erb_for_node->statements != NULL) {
|
|
869
|
-
for (size_t i = 0; i <
|
|
870
|
-
AST_NODE_T* child =
|
|
867
|
+
for (size_t i = 0; i < hb_array_size(erb_for_node->statements); i++) {
|
|
868
|
+
AST_NODE_T* child = hb_array_get(erb_for_node->statements, i);
|
|
871
869
|
if (child) { ast_node_free(child); }
|
|
872
870
|
}
|
|
873
871
|
|
|
874
|
-
|
|
872
|
+
hb_array_free(&erb_for_node->statements);
|
|
875
873
|
}
|
|
876
874
|
ast_node_free((AST_NODE_T*) erb_for_node->end_node);
|
|
877
875
|
|
|
@@ -883,12 +881,12 @@ static void ast_free_erb_rescue_node(AST_ERB_RESCUE_NODE_T* erb_rescue_node) {
|
|
|
883
881
|
if (erb_rescue_node->content != NULL) { token_free(erb_rescue_node->content); }
|
|
884
882
|
if (erb_rescue_node->tag_closing != NULL) { token_free(erb_rescue_node->tag_closing); }
|
|
885
883
|
if (erb_rescue_node->statements != NULL) {
|
|
886
|
-
for (size_t i = 0; i <
|
|
887
|
-
AST_NODE_T* child =
|
|
884
|
+
for (size_t i = 0; i < hb_array_size(erb_rescue_node->statements); i++) {
|
|
885
|
+
AST_NODE_T* child = hb_array_get(erb_rescue_node->statements, i);
|
|
888
886
|
if (child) { ast_node_free(child); }
|
|
889
887
|
}
|
|
890
888
|
|
|
891
|
-
|
|
889
|
+
hb_array_free(&erb_rescue_node->statements);
|
|
892
890
|
}
|
|
893
891
|
ast_node_free((AST_NODE_T*) erb_rescue_node->subsequent);
|
|
894
892
|
|
|
@@ -900,12 +898,12 @@ static void ast_free_erb_ensure_node(AST_ERB_ENSURE_NODE_T* erb_ensure_node) {
|
|
|
900
898
|
if (erb_ensure_node->content != NULL) { token_free(erb_ensure_node->content); }
|
|
901
899
|
if (erb_ensure_node->tag_closing != NULL) { token_free(erb_ensure_node->tag_closing); }
|
|
902
900
|
if (erb_ensure_node->statements != NULL) {
|
|
903
|
-
for (size_t i = 0; i <
|
|
904
|
-
AST_NODE_T* child =
|
|
901
|
+
for (size_t i = 0; i < hb_array_size(erb_ensure_node->statements); i++) {
|
|
902
|
+
AST_NODE_T* child = hb_array_get(erb_ensure_node->statements, i);
|
|
905
903
|
if (child) { ast_node_free(child); }
|
|
906
904
|
}
|
|
907
905
|
|
|
908
|
-
|
|
906
|
+
hb_array_free(&erb_ensure_node->statements);
|
|
909
907
|
}
|
|
910
908
|
|
|
911
909
|
ast_free_base_node(&erb_ensure_node->base);
|
|
@@ -916,12 +914,12 @@ static void ast_free_erb_begin_node(AST_ERB_BEGIN_NODE_T* erb_begin_node) {
|
|
|
916
914
|
if (erb_begin_node->content != NULL) { token_free(erb_begin_node->content); }
|
|
917
915
|
if (erb_begin_node->tag_closing != NULL) { token_free(erb_begin_node->tag_closing); }
|
|
918
916
|
if (erb_begin_node->statements != NULL) {
|
|
919
|
-
for (size_t i = 0; i <
|
|
920
|
-
AST_NODE_T* child =
|
|
917
|
+
for (size_t i = 0; i < hb_array_size(erb_begin_node->statements); i++) {
|
|
918
|
+
AST_NODE_T* child = hb_array_get(erb_begin_node->statements, i);
|
|
921
919
|
if (child) { ast_node_free(child); }
|
|
922
920
|
}
|
|
923
921
|
|
|
924
|
-
|
|
922
|
+
hb_array_free(&erb_begin_node->statements);
|
|
925
923
|
}
|
|
926
924
|
ast_node_free((AST_NODE_T*) erb_begin_node->rescue_clause);
|
|
927
925
|
ast_node_free((AST_NODE_T*) erb_begin_node->else_clause);
|
|
@@ -936,12 +934,12 @@ static void ast_free_erb_unless_node(AST_ERB_UNLESS_NODE_T* erb_unless_node) {
|
|
|
936
934
|
if (erb_unless_node->content != NULL) { token_free(erb_unless_node->content); }
|
|
937
935
|
if (erb_unless_node->tag_closing != NULL) { token_free(erb_unless_node->tag_closing); }
|
|
938
936
|
if (erb_unless_node->statements != NULL) {
|
|
939
|
-
for (size_t i = 0; i <
|
|
940
|
-
AST_NODE_T* child =
|
|
937
|
+
for (size_t i = 0; i < hb_array_size(erb_unless_node->statements); i++) {
|
|
938
|
+
AST_NODE_T* child = hb_array_get(erb_unless_node->statements, i);
|
|
941
939
|
if (child) { ast_node_free(child); }
|
|
942
940
|
}
|
|
943
941
|
|
|
944
|
-
|
|
942
|
+
hb_array_free(&erb_unless_node->statements);
|
|
945
943
|
}
|
|
946
944
|
ast_node_free((AST_NODE_T*) erb_unless_node->else_clause);
|
|
947
945
|
ast_node_free((AST_NODE_T*) erb_unless_node->end_node);
|
|
@@ -962,12 +960,12 @@ static void ast_free_erb_in_node(AST_ERB_IN_NODE_T* erb_in_node) {
|
|
|
962
960
|
if (erb_in_node->content != NULL) { token_free(erb_in_node->content); }
|
|
963
961
|
if (erb_in_node->tag_closing != NULL) { token_free(erb_in_node->tag_closing); }
|
|
964
962
|
if (erb_in_node->statements != NULL) {
|
|
965
|
-
for (size_t i = 0; i <
|
|
966
|
-
AST_NODE_T* child =
|
|
963
|
+
for (size_t i = 0; i < hb_array_size(erb_in_node->statements); i++) {
|
|
964
|
+
AST_NODE_T* child = hb_array_get(erb_in_node->statements, i);
|
|
967
965
|
if (child) { ast_node_free(child); }
|
|
968
966
|
}
|
|
969
967
|
|
|
970
|
-
|
|
968
|
+
hb_array_free(&erb_in_node->statements);
|
|
971
969
|
}
|
|
972
970
|
|
|
973
971
|
ast_free_base_node(&erb_in_node->base);
|