diff options
| author | yui-knk <spiketeika@gmail.com> | 2024-04-21 09:54:23 +0900 |
|---|---|---|
| committer | Yuichiro Kaneko <spiketeika@gmail.com> | 2024-04-23 07:20:22 +0900 |
| commit | 2992e1074adf86ed6c06ba1750648a35d877001a (patch) | |
| tree | 8d21e90b00fed4ef58465c5008d92a15f276d3c6 /include/ruby/internal/encoding/sprintf.h | |
| parent | ed9834efbdcac5bc54df673703095bdecc797c7d (diff) | |
Refactor parser compile functions
Refactor parser compile functions to reduce the dependence
on ruby functions.
This commit includes these changes
1. Refactor `gets`, `input` and `gets_` of `parser_params`
Parser needs two different data structure to get next line, function (`gets`) and input data (`input`).
However `gets_` is used for both function (`call`) and input data (`ptr`).
`call` is used for managing general callback function when `rb_ruby_parser_compile_generic` is used.
`ptr` is used for managing the current pointer on String when `parser_compile_string` is used.
This commit changes parser to used only `gets` and `input` then removes `gets_`.
2. Move parser_compile functions and `gets` functions from parse.y to ruby_parser.c
This change reduces the dependence on ruby functions from parser.
3. Change ruby_parser and ripper to take care of `VALUE input` GC mark
Move the responsibility of calling `rb_gc_mark` for `VALUE input` from parser to ruby_parser and ripper.
`input` is arbitrary data pointer from the viewpoint of parser.
4. Introduce rb_parser_compile_array function
Caller of `rb_parser_compile_generic` needs to take care about GC because ruby_parser doesn’t know
about the detail of `lex_gets` and `input`.
Introduce `rb_parser_compile_array` to reduce the complexity of ast.c.
Diffstat (limited to 'include/ruby/internal/encoding/sprintf.h')
0 files changed, 0 insertions, 0 deletions
