[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_tstructure to partly eliminate RArray from parse.yparser_params->tokensandparser_params->ast->node_buffer->tokensare nowrb_parser_ary_t *ast_node_all_tokens()internally creates a Ruby Array object from therb_parser_ary_trb_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->tokensintoast->tokens, we leave it as it is becauserb_ast_tis an imemo. (We will address it in the future)