From 9a19cfd4cd1a16528cc997e3a510c3046b83cdec Mon Sep 17 00:00:00 2001 From: HASUMI Hitoshi Date: Fri, 16 Feb 2024 17:45:22 +0900 Subject: [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.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'universal_parser.c') diff --git a/universal_parser.c b/universal_parser.c index 2cd5c7407b..08fdfe5b4a 100644 --- a/universal_parser.c +++ b/universal_parser.c @@ -293,6 +293,9 @@ struct rb_imemo_tmpbuf_struct { #define rb_mRubyVMFrozenCore p->config->mRubyVMFrozenCore() #undef rb_long2int #define rb_long2int p->config->long2int +#define rb_enc_mbminlen p->config->enc_mbminlen +#define rb_enc_isascii p->config->enc_isascii +#define rb_enc_mbc_to_codepoint p->config->enc_mbc_to_codepoint #define rb_node_case_when_optimizable_literal p->config->node_case_when_optimizable_literal -- cgit v1.2.3