[Universal Parser] Reduce dependence on RArray in parse.y
Introduce rb_parser_ary_t structure to partly eliminate RArray from parse.y
In this patch, parser_params->tokens and parser_params->ast->node_buffer->tokens are now rb_parser_ary_t *
Instead, ast_node_all_tokens() internally creates a Ruby Array object from the rb_parser_ary_t
Also, delete rb_ast_tokens() and rb_ast_set_tokens() in node.c
Implement rb_parser_str_escape()
This is a port of the rb_str_escape() function in string.c
rb_parser_str_escape() does not depend on VALUE (RString)
Instead, it uses rb_parser_stirng_t *
This function works when --dump=y option passed
Because WIP of the universal parser, similar functions like rb_parser_tokens_free() exist in both node.c and parse.y. Refactoring them may be needed in some way in the future
Although we considered redesigning the structure: ast->node_buffer->tokens into ast->tokens, we leave it as it is because rb_ast_t is an imemo. (We will address it in the future)
[Universal Parser] Reduce dependence on RArray in parse.y
Introduce
rb_parser_ary_t
structure to partly eliminate RArray from parse.yparser_params->tokens
andparser_params->ast->node_buffer->tokens
are nowrb_parser_ary_t *
ast_node_all_tokens()
internally creates a Ruby Array object from therb_parser_ary_t
rb_ast_tokens()
andrb_ast_set_tokens()
in node.cImplement
rb_parser_str_escape()
rb_str_escape()
function in string.crb_parser_str_escape()
does not depend onVALUE
(RString)rb_parser_stirng_t *
Because WIP of the universal parser, similar functions like
rb_parser_tokens_free()
exist in both node.c and parse.y. Refactoring them may be needed in some way in the futureAlthough we considered redesigning the structure:
ast->node_buffer->tokens
intoast->tokens
, we leave it as it is becauserb_ast_t
is an imemo. (We will address it in the future)