[Universal Parser] Reduce dependence on RArray in parse.y
commit9a19cfd4cd1a16528cc997e3a510c3046b83cdec
authorHASUMI Hitoshi <[email protected]>
Fri, 16 Feb 2024 08:45:22 +0000 (16 17:45 +0900)
committerYuichiro Kaneko <[email protected]>
Tue, 12 Mar 2024 08:17:52 +0000 (12 17:17 +0900)
tree1d061cebf79d8aee39be26887b539f12b48a6f9f
parentf42164e03700469a7000b4f00148a8ca01d75044
[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)
ast.c
node.c
node.h
parse.y
ruby_parser.c
rubyparser.h
universal_parser.c