1+ #include <string.h>
2+
13#include "gen_token_type.h"
24#include "yarp.h"
35#include <ruby.h>
@@ -39,6 +41,11 @@ token_new(yp_parser_t *parser, yp_token_t *token) {
3941 return rb_class_new_instance (3 , argv , rb_cYARPToken );
4042}
4143
44+ static VALUE
45+ string_new (yp_parser_t * parser , yp_string_t * string ) {
46+ return rb_str_new (string_ptr (string ), string_length (string ));
47+ }
48+
4249/******************************************************************************/
4350/* BEGIN TEMPLATE */
4451/******************************************************************************/
@@ -53,7 +60,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
5360 argv [0 ] = node_new (parser , node -> as .assignment .target );
5461
5562 // operator
56- argv [1 ] = token_new (parser , & node -> as .assignment .operator );
63+ argv [1 ] = string_new (parser , & node -> as .assignment .operator );
5764
5865 // value
5966 argv [2 ] = node_new (parser , node -> as .assignment .value );
@@ -70,7 +77,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
7077 argv [0 ] = node_new (parser , node -> as .binary .left );
7178
7279 // operator
73- argv [1 ] = token_new (parser , & node -> as .binary .operator );
80+ argv [1 ] = string_new (parser , & node -> as .binary .operator );
7481
7582 // right
7683 argv [2 ] = node_new (parser , node -> as .binary .right );
@@ -84,7 +91,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
8491 VALUE argv [2 ];
8592
8693 // value
87- argv [0 ] = token_new (parser , & node -> as .character_literal .value );
94+ argv [0 ] = string_new (parser , & node -> as .character_literal .value );
8895
8996 // location
9097 argv [1 ] = location_new (& node -> location );
@@ -95,7 +102,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
95102 VALUE argv [2 ];
96103
97104 // value
98- argv [0 ] = token_new (parser , & node -> as .float_literal .value );
105+ argv [0 ] = string_new (parser , & node -> as .float_literal .value );
99106
100107 // location
101108 argv [1 ] = location_new (& node -> location );
@@ -106,7 +113,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
106113 VALUE argv [2 ];
107114
108115 // value
109- argv [0 ] = token_new (parser , & node -> as .identifier .value );
116+ argv [0 ] = string_new (parser , & node -> as .identifier .value );
110117
111118 // location
112119 argv [1 ] = location_new (& node -> location );
@@ -120,7 +127,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
120127 argv [0 ] = node_new (parser , node -> as .if_modifier .statement );
121128
122129 // keyword
123- argv [1 ] = token_new (parser , & node -> as .if_modifier .keyword );
130+ argv [1 ] = string_new (parser , & node -> as .if_modifier .keyword );
124131
125132 // predicate
126133 argv [2 ] = node_new (parser , node -> as .if_modifier .predicate );
@@ -134,7 +141,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
134141 VALUE argv [2 ];
135142
136143 // value
137- argv [0 ] = token_new (parser , & node -> as .imaginary_literal .value );
144+ argv [0 ] = string_new (parser , & node -> as .imaginary_literal .value );
138145
139146 // location
140147 argv [1 ] = location_new (& node -> location );
@@ -145,7 +152,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
145152 VALUE argv [2 ];
146153
147154 // value
148- argv [0 ] = token_new (parser , & node -> as .integer_literal .value );
155+ argv [0 ] = string_new (parser , & node -> as .integer_literal .value );
149156
150157 // location
151158 argv [1 ] = location_new (& node -> location );
@@ -159,7 +166,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
159166 argv [0 ] = node_new (parser , node -> as .operator_assignment .target );
160167
161168 // operator
162- argv [1 ] = token_new (parser , & node -> as .operator_assignment .operator );
169+ argv [1 ] = string_new (parser , & node -> as .operator_assignment .operator );
163170
164171 // value
165172 argv [2 ] = node_new (parser , node -> as .operator_assignment .value );
@@ -187,7 +194,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
187194 argv [0 ] = node -> as .range .left == NULL ? Qnil : node_new (parser , node -> as .range .left );
188195
189196 // operator
190- argv [1 ] = token_new (parser , & node -> as .range .operator );
197+ argv [1 ] = string_new (parser , & node -> as .range .operator );
191198
192199 // right
193200 argv [2 ] = node -> as .range .right == NULL ? Qnil : node_new (parser , node -> as .range .right );
@@ -201,7 +208,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
201208 VALUE argv [2 ];
202209
203210 // value
204- argv [0 ] = token_new (parser , & node -> as .rational_literal .value );
211+ argv [0 ] = string_new (parser , & node -> as .rational_literal .value );
205212
206213 // location
207214 argv [1 ] = location_new (& node -> location );
@@ -212,7 +219,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
212219 VALUE argv [2 ];
213220
214221 // value
215- argv [0 ] = token_new (parser , & node -> as .redo .value );
222+ argv [0 ] = string_new (parser , & node -> as .redo .value );
216223
217224 // location
218225 argv [1 ] = location_new (& node -> location );
@@ -223,7 +230,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
223230 VALUE argv [2 ];
224231
225232 // value
226- argv [0 ] = token_new (parser , & node -> as .retry .value );
233+ argv [0 ] = string_new (parser , & node -> as .retry .value );
227234
228235 // location
229236 argv [1 ] = location_new (& node -> location );
@@ -251,13 +258,13 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
251258 argv [0 ] = node_new (parser , node -> as .ternary .predicate );
252259
253260 // question_mark
254- argv [1 ] = token_new (parser , & node -> as .ternary .question_mark );
261+ argv [1 ] = string_new (parser , & node -> as .ternary .question_mark );
255262
256263 // true_expression
257264 argv [2 ] = node_new (parser , node -> as .ternary .true_expression );
258265
259266 // colon
260- argv [3 ] = token_new (parser , & node -> as .ternary .colon );
267+ argv [3 ] = string_new (parser , & node -> as .ternary .colon );
261268
262269 // false_expression
263270 argv [4 ] = node_new (parser , node -> as .ternary .false_expression );
@@ -274,7 +281,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
274281 argv [0 ] = node_new (parser , node -> as .unless_modifier .statement );
275282
276283 // keyword
277- argv [1 ] = token_new (parser , & node -> as .unless_modifier .keyword );
284+ argv [1 ] = string_new (parser , & node -> as .unless_modifier .keyword );
278285
279286 // predicate
280287 argv [2 ] = node_new (parser , node -> as .unless_modifier .predicate );
@@ -291,7 +298,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
291298 argv [0 ] = node_new (parser , node -> as .until_modifier .statement );
292299
293300 // keyword
294- argv [1 ] = token_new (parser , & node -> as .until_modifier .keyword );
301+ argv [1 ] = string_new (parser , & node -> as .until_modifier .keyword );
295302
296303 // predicate
297304 argv [2 ] = node_new (parser , node -> as .until_modifier .predicate );
@@ -305,7 +312,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
305312 VALUE argv [2 ];
306313
307314 // value
308- argv [0 ] = token_new (parser , & node -> as .variable_reference .value );
315+ argv [0 ] = string_new (parser , & node -> as .variable_reference .value );
309316
310317 // location
311318 argv [1 ] = location_new (& node -> location );
@@ -319,7 +326,7 @@ node_new(yp_parser_t *parser, yp_node_t *node) {
319326 argv [0 ] = node_new (parser , node -> as .while_modifier .statement );
320327
321328 // keyword
322- argv [1 ] = token_new (parser , & node -> as .while_modifier .keyword );
329+ argv [1 ] = string_new (parser , & node -> as .while_modifier .keyword );
323330
324331 // predicate
325332 argv [2 ] = node_new (parser , node -> as .while_modifier .predicate );
0 commit comments