From 55326a915f25608be1d40ab32baa9fc57762615d Mon Sep 17 00:00:00 2001 From: HParker Date: Thu, 7 Dec 2023 15:47:36 -0800 Subject: Introduce --parser runtime flag Introduce runtime flag for specifying the parser, ``` ruby --parser=prism ``` also update the description: ``` $ ruby --parser=prism --version ruby 3.3.0dev (2023-12-08T04:47:14Z add-parser-runtime.. 0616384c9f) +PRISM [x86_64-darwin23] ``` [Bug #20044] --- common.mk | 432 ++++++++++++++++++++++++++++++++++++++++++ compile.c | 1 - iseq.c | 17 +- iseq.h | 2 + load.c | 46 +++-- prism_compile.h | 1 + ruby.c | 107 +++++++---- test/ruby/test_rubyoptions.rb | 13 ++ version.c | 5 + vm.c | 8 + 10 files changed, 579 insertions(+), 53 deletions(-) diff --git a/common.mk b/common.mk index 51a8c71283..8f7fca4559 100644 --- a/common.mk +++ b/common.mk @@ -2199,6 +2199,27 @@ ast.$(OBJEXT): $(top_srcdir)/internal/symbol.h ast.$(OBJEXT): $(top_srcdir)/internal/variable.h ast.$(OBJEXT): $(top_srcdir)/internal/vm.h ast.$(OBJEXT): $(top_srcdir)/internal/warnings.h +ast.$(OBJEXT): $(top_srcdir)/prism/defines.h +ast.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +ast.$(OBJEXT): $(top_srcdir)/prism/encoding.h +ast.$(OBJEXT): $(top_srcdir)/prism/node.h +ast.$(OBJEXT): $(top_srcdir)/prism/options.h +ast.$(OBJEXT): $(top_srcdir)/prism/pack.h +ast.$(OBJEXT): $(top_srcdir)/prism/parser.h +ast.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +ast.$(OBJEXT): $(top_srcdir)/prism/prism.h +ast.$(OBJEXT): $(top_srcdir)/prism/regexp.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +ast.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h ast.$(OBJEXT): {$(VPATH)}assert.h ast.$(OBJEXT): {$(VPATH)}ast.c ast.$(OBJEXT): {$(VPATH)}ast.rbinc @@ -2375,6 +2396,9 @@ ast.$(OBJEXT): {$(VPATH)}missing.h ast.$(OBJEXT): {$(VPATH)}node.h ast.$(OBJEXT): {$(VPATH)}onigmo.h ast.$(OBJEXT): {$(VPATH)}oniguruma.h +ast.$(OBJEXT): {$(VPATH)}prism/ast.h +ast.$(OBJEXT): {$(VPATH)}prism/version.h +ast.$(OBJEXT): {$(VPATH)}prism_compile.h ast.$(OBJEXT): {$(VPATH)}ruby_assert.h ast.$(OBJEXT): {$(VPATH)}ruby_atomic.h ast.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -2609,6 +2633,27 @@ builtin.$(OBJEXT): $(top_srcdir)/internal/static_assert.h builtin.$(OBJEXT): $(top_srcdir)/internal/variable.h builtin.$(OBJEXT): $(top_srcdir)/internal/vm.h builtin.$(OBJEXT): $(top_srcdir)/internal/warnings.h +builtin.$(OBJEXT): $(top_srcdir)/prism/defines.h +builtin.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +builtin.$(OBJEXT): $(top_srcdir)/prism/encoding.h +builtin.$(OBJEXT): $(top_srcdir)/prism/node.h +builtin.$(OBJEXT): $(top_srcdir)/prism/options.h +builtin.$(OBJEXT): $(top_srcdir)/prism/pack.h +builtin.$(OBJEXT): $(top_srcdir)/prism/parser.h +builtin.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +builtin.$(OBJEXT): $(top_srcdir)/prism/prism.h +builtin.$(OBJEXT): $(top_srcdir)/prism/regexp.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +builtin.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h builtin.$(OBJEXT): {$(VPATH)}assert.h builtin.$(OBJEXT): {$(VPATH)}atomic.h builtin.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -2785,6 +2830,9 @@ builtin.$(OBJEXT): {$(VPATH)}missing.h builtin.$(OBJEXT): {$(VPATH)}node.h builtin.$(OBJEXT): {$(VPATH)}onigmo.h builtin.$(OBJEXT): {$(VPATH)}oniguruma.h +builtin.$(OBJEXT): {$(VPATH)}prism/ast.h +builtin.$(OBJEXT): {$(VPATH)}prism/version.h +builtin.$(OBJEXT): {$(VPATH)}prism_compile.h builtin.$(OBJEXT): {$(VPATH)}ruby_assert.h builtin.$(OBJEXT): {$(VPATH)}ruby_atomic.h builtin.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -3673,6 +3721,27 @@ cont.$(OBJEXT): $(top_srcdir)/internal/thread.h cont.$(OBJEXT): $(top_srcdir)/internal/variable.h cont.$(OBJEXT): $(top_srcdir)/internal/vm.h cont.$(OBJEXT): $(top_srcdir)/internal/warnings.h +cont.$(OBJEXT): $(top_srcdir)/prism/defines.h +cont.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +cont.$(OBJEXT): $(top_srcdir)/prism/encoding.h +cont.$(OBJEXT): $(top_srcdir)/prism/node.h +cont.$(OBJEXT): $(top_srcdir)/prism/options.h +cont.$(OBJEXT): $(top_srcdir)/prism/pack.h +cont.$(OBJEXT): $(top_srcdir)/prism/parser.h +cont.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +cont.$(OBJEXT): $(top_srcdir)/prism/prism.h +cont.$(OBJEXT): $(top_srcdir)/prism/regexp.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +cont.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h cont.$(OBJEXT): {$(VPATH)}$(COROUTINE_H) cont.$(OBJEXT): {$(VPATH)}assert.h cont.$(OBJEXT): {$(VPATH)}atomic.h @@ -3851,6 +3920,9 @@ cont.$(OBJEXT): {$(VPATH)}missing.h cont.$(OBJEXT): {$(VPATH)}node.h cont.$(OBJEXT): {$(VPATH)}onigmo.h cont.$(OBJEXT): {$(VPATH)}oniguruma.h +cont.$(OBJEXT): {$(VPATH)}prism/ast.h +cont.$(OBJEXT): {$(VPATH)}prism/version.h +cont.$(OBJEXT): {$(VPATH)}prism_compile.h cont.$(OBJEXT): {$(VPATH)}ractor.h cont.$(OBJEXT): {$(VPATH)}ractor_core.h cont.$(OBJEXT): {$(VPATH)}rjit.h @@ -6613,6 +6685,27 @@ eval.$(OBJEXT): $(top_srcdir)/internal/thread.h eval.$(OBJEXT): $(top_srcdir)/internal/variable.h eval.$(OBJEXT): $(top_srcdir)/internal/vm.h eval.$(OBJEXT): $(top_srcdir)/internal/warnings.h +eval.$(OBJEXT): $(top_srcdir)/prism/defines.h +eval.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +eval.$(OBJEXT): $(top_srcdir)/prism/encoding.h +eval.$(OBJEXT): $(top_srcdir)/prism/node.h +eval.$(OBJEXT): $(top_srcdir)/prism/options.h +eval.$(OBJEXT): $(top_srcdir)/prism/pack.h +eval.$(OBJEXT): $(top_srcdir)/prism/parser.h +eval.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +eval.$(OBJEXT): $(top_srcdir)/prism/prism.h +eval.$(OBJEXT): $(top_srcdir)/prism/regexp.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +eval.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h eval.$(OBJEXT): {$(VPATH)}assert.h eval.$(OBJEXT): {$(VPATH)}atomic.h eval.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -6793,6 +6886,9 @@ eval.$(OBJEXT): {$(VPATH)}missing.h eval.$(OBJEXT): {$(VPATH)}node.h eval.$(OBJEXT): {$(VPATH)}onigmo.h eval.$(OBJEXT): {$(VPATH)}oniguruma.h +eval.$(OBJEXT): {$(VPATH)}prism/ast.h +eval.$(OBJEXT): {$(VPATH)}prism/version.h +eval.$(OBJEXT): {$(VPATH)}prism_compile.h eval.$(OBJEXT): {$(VPATH)}probes.dmyh eval.$(OBJEXT): {$(VPATH)}probes.h eval.$(OBJEXT): {$(VPATH)}probes_helper.h @@ -7068,6 +7164,27 @@ gc.$(OBJEXT): $(top_srcdir)/internal/thread.h gc.$(OBJEXT): $(top_srcdir)/internal/variable.h gc.$(OBJEXT): $(top_srcdir)/internal/vm.h gc.$(OBJEXT): $(top_srcdir)/internal/warnings.h +gc.$(OBJEXT): $(top_srcdir)/prism/defines.h +gc.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +gc.$(OBJEXT): $(top_srcdir)/prism/encoding.h +gc.$(OBJEXT): $(top_srcdir)/prism/node.h +gc.$(OBJEXT): $(top_srcdir)/prism/options.h +gc.$(OBJEXT): $(top_srcdir)/prism/pack.h +gc.$(OBJEXT): $(top_srcdir)/prism/parser.h +gc.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +gc.$(OBJEXT): $(top_srcdir)/prism/prism.h +gc.$(OBJEXT): $(top_srcdir)/prism/regexp.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +gc.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h gc.$(OBJEXT): {$(VPATH)}assert.h gc.$(OBJEXT): {$(VPATH)}atomic.h gc.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -7250,6 +7367,9 @@ gc.$(OBJEXT): {$(VPATH)}missing.h gc.$(OBJEXT): {$(VPATH)}node.h gc.$(OBJEXT): {$(VPATH)}onigmo.h gc.$(OBJEXT): {$(VPATH)}oniguruma.h +gc.$(OBJEXT): {$(VPATH)}prism/ast.h +gc.$(OBJEXT): {$(VPATH)}prism/version.h +gc.$(OBJEXT): {$(VPATH)}prism_compile.h gc.$(OBJEXT): {$(VPATH)}probes.dmyh gc.$(OBJEXT): {$(VPATH)}probes.h gc.$(OBJEXT): {$(VPATH)}ractor.h @@ -7292,6 +7412,27 @@ goruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h goruby.$(OBJEXT): $(top_srcdir)/internal/variable.h goruby.$(OBJEXT): $(top_srcdir)/internal/vm.h goruby.$(OBJEXT): $(top_srcdir)/internal/warnings.h +goruby.$(OBJEXT): $(top_srcdir)/prism/defines.h +goruby.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +goruby.$(OBJEXT): $(top_srcdir)/prism/encoding.h +goruby.$(OBJEXT): $(top_srcdir)/prism/node.h +goruby.$(OBJEXT): $(top_srcdir)/prism/options.h +goruby.$(OBJEXT): $(top_srcdir)/prism/pack.h +goruby.$(OBJEXT): $(top_srcdir)/prism/parser.h +goruby.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +goruby.$(OBJEXT): $(top_srcdir)/prism/prism.h +goruby.$(OBJEXT): $(top_srcdir)/prism/regexp.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +goruby.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h goruby.$(OBJEXT): {$(VPATH)}assert.h goruby.$(OBJEXT): {$(VPATH)}atomic.h goruby.$(OBJEXT): {$(VPATH)}backward.h @@ -7469,6 +7610,9 @@ goruby.$(OBJEXT): {$(VPATH)}missing.h goruby.$(OBJEXT): {$(VPATH)}node.h goruby.$(OBJEXT): {$(VPATH)}onigmo.h goruby.$(OBJEXT): {$(VPATH)}oniguruma.h +goruby.$(OBJEXT): {$(VPATH)}prism/ast.h +goruby.$(OBJEXT): {$(VPATH)}prism/version.h +goruby.$(OBJEXT): {$(VPATH)}prism_compile.h goruby.$(OBJEXT): {$(VPATH)}ruby_assert.h goruby.$(OBJEXT): {$(VPATH)}ruby_atomic.h goruby.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -7508,6 +7652,27 @@ hash.$(OBJEXT): $(top_srcdir)/internal/time.h hash.$(OBJEXT): $(top_srcdir)/internal/variable.h hash.$(OBJEXT): $(top_srcdir)/internal/vm.h hash.$(OBJEXT): $(top_srcdir)/internal/warnings.h +hash.$(OBJEXT): $(top_srcdir)/prism/defines.h +hash.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +hash.$(OBJEXT): $(top_srcdir)/prism/encoding.h +hash.$(OBJEXT): $(top_srcdir)/prism/node.h +hash.$(OBJEXT): $(top_srcdir)/prism/options.h +hash.$(OBJEXT): $(top_srcdir)/prism/pack.h +hash.$(OBJEXT): $(top_srcdir)/prism/parser.h +hash.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +hash.$(OBJEXT): $(top_srcdir)/prism/prism.h +hash.$(OBJEXT): $(top_srcdir)/prism/regexp.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +hash.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h hash.$(OBJEXT): {$(VPATH)}assert.h hash.$(OBJEXT): {$(VPATH)}atomic.h hash.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -7683,6 +7848,9 @@ hash.$(OBJEXT): {$(VPATH)}missing.h hash.$(OBJEXT): {$(VPATH)}node.h hash.$(OBJEXT): {$(VPATH)}onigmo.h hash.$(OBJEXT): {$(VPATH)}oniguruma.h +hash.$(OBJEXT): {$(VPATH)}prism/ast.h +hash.$(OBJEXT): {$(VPATH)}prism/version.h +hash.$(OBJEXT): {$(VPATH)}prism_compile.h hash.$(OBJEXT): {$(VPATH)}probes.dmyh hash.$(OBJEXT): {$(VPATH)}probes.h hash.$(OBJEXT): {$(VPATH)}ractor.h @@ -8554,6 +8722,27 @@ load.$(OBJEXT): $(top_srcdir)/internal/thread.h load.$(OBJEXT): $(top_srcdir)/internal/variable.h load.$(OBJEXT): $(top_srcdir)/internal/vm.h load.$(OBJEXT): $(top_srcdir)/internal/warnings.h +load.$(OBJEXT): $(top_srcdir)/prism/defines.h +load.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +load.$(OBJEXT): $(top_srcdir)/prism/encoding.h +load.$(OBJEXT): $(top_srcdir)/prism/node.h +load.$(OBJEXT): $(top_srcdir)/prism/options.h +load.$(OBJEXT): $(top_srcdir)/prism/pack.h +load.$(OBJEXT): $(top_srcdir)/prism/parser.h +load.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +load.$(OBJEXT): $(top_srcdir)/prism/prism.h +load.$(OBJEXT): $(top_srcdir)/prism/regexp.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +load.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h load.$(OBJEXT): {$(VPATH)}assert.h load.$(OBJEXT): {$(VPATH)}atomic.h load.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -8731,6 +8920,9 @@ load.$(OBJEXT): {$(VPATH)}missing.h load.$(OBJEXT): {$(VPATH)}node.h load.$(OBJEXT): {$(VPATH)}onigmo.h load.$(OBJEXT): {$(VPATH)}oniguruma.h +load.$(OBJEXT): {$(VPATH)}prism/ast.h +load.$(OBJEXT): {$(VPATH)}prism/version.h +load.$(OBJEXT): {$(VPATH)}prism_compile.h load.$(OBJEXT): {$(VPATH)}probes.dmyh load.$(OBJEXT): {$(VPATH)}probes.h load.$(OBJEXT): {$(VPATH)}ruby_assert.h @@ -9846,6 +10038,27 @@ miniinit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h miniinit.$(OBJEXT): $(top_srcdir)/internal/variable.h miniinit.$(OBJEXT): $(top_srcdir)/internal/vm.h miniinit.$(OBJEXT): $(top_srcdir)/internal/warnings.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/defines.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/encoding.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/node.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/options.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/pack.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/parser.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/prism.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/regexp.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +miniinit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h miniinit.$(OBJEXT): {$(VPATH)}array.rb miniinit.$(OBJEXT): {$(VPATH)}assert.h miniinit.$(OBJEXT): {$(VPATH)}ast.rb @@ -10035,6 +10248,9 @@ miniinit.$(OBJEXT): {$(VPATH)}onigmo.h miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h miniinit.$(OBJEXT): {$(VPATH)}pack.rb miniinit.$(OBJEXT): {$(VPATH)}prelude.rb +miniinit.$(OBJEXT): {$(VPATH)}prism/ast.h +miniinit.$(OBJEXT): {$(VPATH)}prism/version.h +miniinit.$(OBJEXT): {$(VPATH)}prism_compile.h miniinit.$(OBJEXT): {$(VPATH)}ractor.rb miniinit.$(OBJEXT): {$(VPATH)}rjit.rb miniinit.$(OBJEXT): {$(VPATH)}rjit_c.rb @@ -12373,6 +12589,27 @@ proc.$(OBJEXT): $(top_srcdir)/internal/symbol.h proc.$(OBJEXT): $(top_srcdir)/internal/variable.h proc.$(OBJEXT): $(top_srcdir)/internal/vm.h proc.$(OBJEXT): $(top_srcdir)/internal/warnings.h +proc.$(OBJEXT): $(top_srcdir)/prism/defines.h +proc.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +proc.$(OBJEXT): $(top_srcdir)/prism/encoding.h +proc.$(OBJEXT): $(top_srcdir)/prism/node.h +proc.$(OBJEXT): $(top_srcdir)/prism/options.h +proc.$(OBJEXT): $(top_srcdir)/prism/pack.h +proc.$(OBJEXT): $(top_srcdir)/prism/parser.h +proc.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +proc.$(OBJEXT): $(top_srcdir)/prism/prism.h +proc.$(OBJEXT): $(top_srcdir)/prism/regexp.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +proc.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h proc.$(OBJEXT): {$(VPATH)}assert.h proc.$(OBJEXT): {$(VPATH)}atomic.h proc.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -12548,6 +12785,9 @@ proc.$(OBJEXT): {$(VPATH)}missing.h proc.$(OBJEXT): {$(VPATH)}node.h proc.$(OBJEXT): {$(VPATH)}onigmo.h proc.$(OBJEXT): {$(VPATH)}oniguruma.h +proc.$(OBJEXT): {$(VPATH)}prism/ast.h +proc.$(OBJEXT): {$(VPATH)}prism/version.h +proc.$(OBJEXT): {$(VPATH)}prism_compile.h proc.$(OBJEXT): {$(VPATH)}proc.c proc.$(OBJEXT): {$(VPATH)}ruby_assert.h proc.$(OBJEXT): {$(VPATH)}ruby_atomic.h @@ -14826,6 +15066,27 @@ rjit.$(OBJEXT): $(top_srcdir)/internal/struct.h rjit.$(OBJEXT): $(top_srcdir)/internal/variable.h rjit.$(OBJEXT): $(top_srcdir)/internal/vm.h rjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h +rjit.$(OBJEXT): $(top_srcdir)/prism/defines.h +rjit.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +rjit.$(OBJEXT): $(top_srcdir)/prism/encoding.h +rjit.$(OBJEXT): $(top_srcdir)/prism/node.h +rjit.$(OBJEXT): $(top_srcdir)/prism/options.h +rjit.$(OBJEXT): $(top_srcdir)/prism/pack.h +rjit.$(OBJEXT): $(top_srcdir)/prism/parser.h +rjit.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +rjit.$(OBJEXT): $(top_srcdir)/prism/prism.h +rjit.$(OBJEXT): $(top_srcdir)/prism/regexp.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +rjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h rjit.$(OBJEXT): {$(VPATH)}assert.h rjit.$(OBJEXT): {$(VPATH)}atomic.h rjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -15006,6 +15267,9 @@ rjit.$(OBJEXT): {$(VPATH)}missing.h rjit.$(OBJEXT): {$(VPATH)}node.h rjit.$(OBJEXT): {$(VPATH)}onigmo.h rjit.$(OBJEXT): {$(VPATH)}oniguruma.h +rjit.$(OBJEXT): {$(VPATH)}prism/ast.h +rjit.$(OBJEXT): {$(VPATH)}prism/version.h +rjit.$(OBJEXT): {$(VPATH)}prism_compile.h rjit.$(OBJEXT): {$(VPATH)}ractor.h rjit.$(OBJEXT): {$(VPATH)}ractor_core.h rjit.$(OBJEXT): {$(VPATH)}rjit.c @@ -15054,6 +15318,27 @@ rjit_c.$(OBJEXT): $(top_srcdir)/internal/struct.h rjit_c.$(OBJEXT): $(top_srcdir)/internal/variable.h rjit_c.$(OBJEXT): $(top_srcdir)/internal/vm.h rjit_c.$(OBJEXT): $(top_srcdir)/internal/warnings.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/defines.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/encoding.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/node.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/options.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/pack.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/parser.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/prism.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/regexp.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +rjit_c.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h rjit_c.$(OBJEXT): {$(VPATH)}assert.h rjit_c.$(OBJEXT): {$(VPATH)}atomic.h rjit_c.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -15233,6 +15518,9 @@ rjit_c.$(OBJEXT): {$(VPATH)}missing.h rjit_c.$(OBJEXT): {$(VPATH)}node.h rjit_c.$(OBJEXT): {$(VPATH)}onigmo.h rjit_c.$(OBJEXT): {$(VPATH)}oniguruma.h +rjit_c.$(OBJEXT): {$(VPATH)}prism/ast.h +rjit_c.$(OBJEXT): {$(VPATH)}prism/version.h +rjit_c.$(OBJEXT): {$(VPATH)}prism_compile.h rjit_c.$(OBJEXT): {$(VPATH)}probes.dmyh rjit_c.$(OBJEXT): {$(VPATH)}probes.h rjit_c.$(OBJEXT): {$(VPATH)}probes_helper.h @@ -17546,6 +17834,27 @@ thread.$(OBJEXT): $(top_srcdir)/internal/time.h thread.$(OBJEXT): $(top_srcdir)/internal/variable.h thread.$(OBJEXT): $(top_srcdir)/internal/vm.h thread.$(OBJEXT): $(top_srcdir)/internal/warnings.h +thread.$(OBJEXT): $(top_srcdir)/prism/defines.h +thread.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +thread.$(OBJEXT): $(top_srcdir)/prism/encoding.h +thread.$(OBJEXT): $(top_srcdir)/prism/node.h +thread.$(OBJEXT): $(top_srcdir)/prism/options.h +thread.$(OBJEXT): $(top_srcdir)/prism/pack.h +thread.$(OBJEXT): $(top_srcdir)/prism/parser.h +thread.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +thread.$(OBJEXT): $(top_srcdir)/prism/prism.h +thread.$(OBJEXT): $(top_srcdir)/prism/regexp.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +thread.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h thread.$(OBJEXT): {$(VPATH)}$(COROUTINE_H) thread.$(OBJEXT): {$(VPATH)}assert.h thread.$(OBJEXT): {$(VPATH)}atomic.h @@ -17727,6 +18036,9 @@ thread.$(OBJEXT): {$(VPATH)}missing.h thread.$(OBJEXT): {$(VPATH)}node.h thread.$(OBJEXT): {$(VPATH)}onigmo.h thread.$(OBJEXT): {$(VPATH)}oniguruma.h +thread.$(OBJEXT): {$(VPATH)}prism/ast.h +thread.$(OBJEXT): {$(VPATH)}prism/version.h +thread.$(OBJEXT): {$(VPATH)}prism_compile.h thread.$(OBJEXT): {$(VPATH)}ractor.h thread.$(OBJEXT): {$(VPATH)}ractor_core.h thread.$(OBJEXT): {$(VPATH)}rjit.h @@ -18776,6 +19088,27 @@ vm.$(OBJEXT): $(top_srcdir)/internal/transcode.h vm.$(OBJEXT): $(top_srcdir)/internal/variable.h vm.$(OBJEXT): $(top_srcdir)/internal/vm.h vm.$(OBJEXT): $(top_srcdir)/internal/warnings.h +vm.$(OBJEXT): $(top_srcdir)/prism/defines.h +vm.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +vm.$(OBJEXT): $(top_srcdir)/prism/encoding.h +vm.$(OBJEXT): $(top_srcdir)/prism/node.h +vm.$(OBJEXT): $(top_srcdir)/prism/options.h +vm.$(OBJEXT): $(top_srcdir)/prism/pack.h +vm.$(OBJEXT): $(top_srcdir)/prism/parser.h +vm.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +vm.$(OBJEXT): $(top_srcdir)/prism/prism.h +vm.$(OBJEXT): $(top_srcdir)/prism/regexp.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +vm.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h vm.$(OBJEXT): {$(VPATH)}assert.h vm.$(OBJEXT): {$(VPATH)}atomic.h vm.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -18956,6 +19289,9 @@ vm.$(OBJEXT): {$(VPATH)}missing.h vm.$(OBJEXT): {$(VPATH)}node.h vm.$(OBJEXT): {$(VPATH)}onigmo.h vm.$(OBJEXT): {$(VPATH)}oniguruma.h +vm.$(OBJEXT): {$(VPATH)}prism/ast.h +vm.$(OBJEXT): {$(VPATH)}prism/version.h +vm.$(OBJEXT): {$(VPATH)}prism_compile.h vm.$(OBJEXT): {$(VPATH)}probes.dmyh vm.$(OBJEXT): {$(VPATH)}probes.h vm.$(OBJEXT): {$(VPATH)}probes_helper.h @@ -19008,6 +19344,27 @@ vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/string.h vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/variable.h vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/vm.h vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/warnings.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/defines.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/encoding.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/node.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/options.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/pack.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/parser.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/prism.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/regexp.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +vm_backtrace.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h vm_backtrace.$(OBJEXT): {$(VPATH)}assert.h vm_backtrace.$(OBJEXT): {$(VPATH)}atomic.h vm_backtrace.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -19184,6 +19541,9 @@ vm_backtrace.$(OBJEXT): {$(VPATH)}missing.h vm_backtrace.$(OBJEXT): {$(VPATH)}node.h vm_backtrace.$(OBJEXT): {$(VPATH)}onigmo.h vm_backtrace.$(OBJEXT): {$(VPATH)}oniguruma.h +vm_backtrace.$(OBJEXT): {$(VPATH)}prism/ast.h +vm_backtrace.$(OBJEXT): {$(VPATH)}prism/version.h +vm_backtrace.$(OBJEXT): {$(VPATH)}prism_compile.h vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_assert.h vm_backtrace.$(OBJEXT): {$(VPATH)}ruby_atomic.h vm_backtrace.$(OBJEXT): {$(VPATH)}rubyparser.h @@ -19212,6 +19572,27 @@ vm_dump.$(OBJEXT): $(top_srcdir)/internal/static_assert.h vm_dump.$(OBJEXT): $(top_srcdir)/internal/variable.h vm_dump.$(OBJEXT): $(top_srcdir)/internal/vm.h vm_dump.$(OBJEXT): $(top_srcdir)/internal/warnings.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/defines.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/encoding.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/node.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/options.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/pack.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/parser.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/prism.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/regexp.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +vm_dump.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h vm_dump.$(OBJEXT): {$(VPATH)}addr2line.h vm_dump.$(OBJEXT): {$(VPATH)}assert.h vm_dump.$(OBJEXT): {$(VPATH)}atomic.h @@ -19386,6 +19767,9 @@ vm_dump.$(OBJEXT): {$(VPATH)}missing.h vm_dump.$(OBJEXT): {$(VPATH)}node.h vm_dump.$(OBJEXT): {$(VPATH)}onigmo.h vm_dump.$(OBJEXT): {$(VPATH)}oniguruma.h +vm_dump.$(OBJEXT): {$(VPATH)}prism/ast.h +vm_dump.$(OBJEXT): {$(VPATH)}prism/version.h +vm_dump.$(OBJEXT): {$(VPATH)}prism_compile.h vm_dump.$(OBJEXT): {$(VPATH)}procstat_vm.c vm_dump.$(OBJEXT): {$(VPATH)}ractor.h vm_dump.$(OBJEXT): {$(VPATH)}ractor_core.h @@ -19626,6 +20010,27 @@ vm_trace.$(OBJEXT): $(top_srcdir)/internal/thread.h vm_trace.$(OBJEXT): $(top_srcdir)/internal/variable.h vm_trace.$(OBJEXT): $(top_srcdir)/internal/vm.h vm_trace.$(OBJEXT): $(top_srcdir)/internal/warnings.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/defines.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/encoding.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/node.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/options.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/pack.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/parser.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/prism.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/regexp.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +vm_trace.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h vm_trace.$(OBJEXT): {$(VPATH)}assert.h vm_trace.$(OBJEXT): {$(VPATH)}atomic.h vm_trace.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -19803,6 +20208,9 @@ vm_trace.$(OBJEXT): {$(VPATH)}missing.h vm_trace.$(OBJEXT): {$(VPATH)}node.h vm_trace.$(OBJEXT): {$(VPATH)}onigmo.h vm_trace.$(OBJEXT): {$(VPATH)}oniguruma.h +vm_trace.$(OBJEXT): {$(VPATH)}prism/ast.h +vm_trace.$(OBJEXT): {$(VPATH)}prism/version.h +vm_trace.$(OBJEXT): {$(VPATH)}prism_compile.h vm_trace.$(OBJEXT): {$(VPATH)}ractor.h vm_trace.$(OBJEXT): {$(VPATH)}rjit.h vm_trace.$(OBJEXT): {$(VPATH)}ruby_assert.h @@ -20042,6 +20450,27 @@ yjit.$(OBJEXT): $(top_srcdir)/internal/string.h yjit.$(OBJEXT): $(top_srcdir)/internal/variable.h yjit.$(OBJEXT): $(top_srcdir)/internal/vm.h yjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h +yjit.$(OBJEXT): $(top_srcdir)/prism/defines.h +yjit.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h +yjit.$(OBJEXT): $(top_srcdir)/prism/encoding.h +yjit.$(OBJEXT): $(top_srcdir)/prism/node.h +yjit.$(OBJEXT): $(top_srcdir)/prism/options.h +yjit.$(OBJEXT): $(top_srcdir)/prism/pack.h +yjit.$(OBJEXT): $(top_srcdir)/prism/parser.h +yjit.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h +yjit.$(OBJEXT): $(top_srcdir)/prism/prism.h +yjit.$(OBJEXT): $(top_srcdir)/prism/regexp.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_state_stack.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string_list.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h +yjit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h yjit.$(OBJEXT): {$(VPATH)}assert.h yjit.$(OBJEXT): {$(VPATH)}atomic.h yjit.$(OBJEXT): {$(VPATH)}backward/2/assume.h @@ -20222,6 +20651,9 @@ yjit.$(OBJEXT): {$(VPATH)}missing.h yjit.$(OBJEXT): {$(VPATH)}node.h yjit.$(OBJEXT): {$(VPATH)}onigmo.h yjit.$(OBJEXT): {$(VPATH)}oniguruma.h +yjit.$(OBJEXT): {$(VPATH)}prism/ast.h +yjit.$(OBJEXT): {$(VPATH)}prism/version.h +yjit.$(OBJEXT): {$(VPATH)}prism_compile.h yjit.$(OBJEXT): {$(VPATH)}probes.dmyh yjit.$(OBJEXT): {$(VPATH)}probes.h yjit.$(OBJEXT): {$(VPATH)}probes_helper.h diff --git a/compile.c b/compile.c index 048a30c203..afc2061b12 100644 --- a/compile.c +++ b/compile.c @@ -44,7 +44,6 @@ #include "builtin.h" #include "insns.inc" #include "insns_info.inc" -#include "prism_compile.h" #undef RUBY_UNTYPED_DATA_WARNING #define RUBY_UNTYPED_DATA_WARNING 0 diff --git a/iseq.c b/iseq.c index fa5f564fb3..9e624fd563 100644 --- a/iseq.c +++ b/iseq.c @@ -43,7 +43,6 @@ #include "builtin.h" #include "insns.inc" #include "insns_info.inc" -#include "prism_compile.h" VALUE rb_cISeq; static VALUE iseqw_new(const rb_iseq_t *iseq); @@ -1501,6 +1500,22 @@ iseqw_s_compile_file_prism(int argc, VALUE *argv, VALUE self) return iseqw_new(iseq); } +rb_iseq_t * +rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path) { + pm_parser_t parser; + pm_parser_init(&parser, pm_string_source(input), pm_string_length(input), options); + + if (NIL_P(path)) path = rb_fstring_lit(""); + int start_line = 0; + pm_options_line_set(options, start_line); + + rb_iseq_t *iseq = iseq_alloc(); + iseqw_s_compile_prism_compile(&parser, Qnil, iseq, path, path, start_line); + + pm_parser_free(&parser); + return iseq; +} + /* * call-seq: * InstructionSequence.compile_file(file[, options]) -> iseq diff --git a/iseq.h b/iseq.h index 210c79906d..d71f37ca13 100644 --- a/iseq.h +++ b/iseq.h @@ -13,6 +13,7 @@ #include "internal/gc.h" #include "shape.h" #include "vm_core.h" +#include "prism_compile.h" RUBY_EXTERN const int ruby_api_version[]; #define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0]) @@ -173,6 +174,7 @@ void rb_iseq_init_trace(rb_iseq_t *iseq); int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod); int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval); const rb_iseq_t *rb_iseq_load_iseq(VALUE fname); +rb_iseq_t * rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path); #if VM_INSN_INFO_TABLE_IMPL == 2 unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body); diff --git a/load.c b/load.c index 35b80a6b4a..71bd3c7c1e 100644 --- a/load.c +++ b/load.c @@ -737,21 +737,37 @@ load_iseq_eval(rb_execution_context_t *ec, VALUE fname) const rb_iseq_t *iseq = rb_iseq_load_iseq(fname); if (!iseq) { - rb_execution_context_t *ec = GET_EC(); - VALUE v = rb_vm_push_frame_fname(ec, fname); - rb_ast_t *ast; - VALUE parser = rb_parser_new(); - rb_parser_set_context(parser, NULL, FALSE); - ast = (rb_ast_t *)rb_parser_load_file(parser, fname); - - rb_thread_t *th = rb_ec_thread_ptr(ec); - VALUE realpath_map = get_loaded_features_realpath_map(th->vm); - - iseq = rb_iseq_new_top(&ast->body, rb_fstring_lit(""), - fname, realpath_internal_cached(realpath_map, fname), NULL); - rb_ast_dispose(ast); - rb_vm_pop_frame(ec); - RB_GC_GUARD(v); + if (*rb_ruby_prism_ptr()) { + pm_string_t input; + pm_options_t options = { 0 }; + + pm_string_mapped_init(&input, RSTRING_PTR(fname)); + pm_options_filepath_set(&options, RSTRING_PTR(fname)); + + pm_parser_t parser; + pm_parser_init(&parser, pm_string_source(&input), pm_string_length(&input), &options); + + iseq = rb_iseq_new_main_prism(&input, &options, fname); + + pm_string_free(&input); + pm_options_free(&options); + } else { + rb_execution_context_t *ec = GET_EC(); + VALUE v = rb_vm_push_frame_fname(ec, fname); + rb_ast_t *ast; + VALUE parser = rb_parser_new(); + rb_parser_set_context(parser, NULL, FALSE); + ast = (rb_ast_t *)rb_parser_load_file(parser, fname); + + rb_thread_t *th = rb_ec_thread_ptr(ec); + VALUE realpath_map = get_loaded_features_realpath_map(th->vm); + + iseq = rb_iseq_new_top(&ast->body, rb_fstring_lit(""), + fname, realpath_internal_cached(realpath_map, fname), NULL); + rb_ast_dispose(ast); + rb_vm_pop_frame(ec); + RB_GC_GUARD(v); + } } rb_exec_event_hook_script_compiled(ec, iseq, Qnil); rb_iseq_eval(iseq); diff --git a/prism_compile.h b/prism_compile.h index 34fac178d1..ed0c7b4c91 100644 --- a/prism_compile.h +++ b/prism_compile.h @@ -26,3 +26,4 @@ typedef struct pm_scope_node { } pm_scope_node_t; void pm_scope_node_init(const pm_node_t *node, pm_scope_node_t *scope, pm_scope_node_t *previous, pm_parser_t *parser); +bool *rb_ruby_prism_ptr(void); diff --git a/ruby.c b/ruby.c index da3fbf2d44..19c70d36fd 100644 --- a/ruby.c +++ b/ruby.c @@ -56,7 +56,6 @@ #include "internal/thread.h" #include "internal/ruby_parser.h" #include "internal/variable.h" -#include "prism_compile.h" #include "ruby/encoding.h" #include "ruby/thread.h" #include "ruby/util.h" @@ -362,6 +361,8 @@ usage(const char *name, int help, int highlight, int columns) "enable or disable features. see below for available features"), M("--external-encoding=encoding", ", --internal-encoding=encoding", "specify the default external or internal character encoding"), + M("--parser={parse.y|prism}", ", --parser=prism", + "the parser used to parse Ruby code (experimental)"), M("--backtrace-limit=num", "", "limit the maximum length of backtrace"), M("--verbose", "", "turn on verbose mode and disable script from stdin"), M("--version", "", "print the version number, then exit"), @@ -1407,6 +1408,18 @@ proc_long_options(ruby_cmdline_options_t *opt, const char *s, long argc, char ** else if (is_option_with_arg("external-encoding", Qfalse, Qtrue)) { set_external_encoding_once(opt, s, 0); } + else if (is_option_with_arg("parser", Qfalse, Qtrue)) { + if (strcmp("prism", s) == 0) { + (*rb_ruby_prism_ptr()) = true; + rb_warn("The Prism compiler is currently experimental and compatibility with parse.y is not yet complete. Please report an issues you find on the prism issue tracker."); + } + else if (strcmp("parse.y", s) == 0) { + // default behavior + } else { + rb_raise(rb_eRuntimeError, + "unknown parser %s", s); + } + } #if defined ALLOW_DEFAULT_SOURCE_ENCODING && ALLOW_DEFAULT_SOURCE_ENCODING else if (is_option_with_arg("source-encoding", Qfalse, Qtrue)) { set_source_encoding_once(opt, s, 0); @@ -2244,39 +2257,41 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) ruby_set_argv(argc, argv); opt->sflag = process_sflag(opt->sflag); - if (opt->e_script) { - VALUE progname = rb_progname; - rb_encoding *eenc; - rb_parser_set_context(parser, 0, TRUE); + if (!(*rb_ruby_prism_ptr())) { + if (opt->e_script) { + VALUE progname = rb_progname; + rb_encoding *eenc; + rb_parser_set_context(parser, 0, TRUE); - if (opt->src.enc.index >= 0) { - eenc = rb_enc_from_index(opt->src.enc.index); - } - else { - eenc = lenc; + if (opt->src.enc.index >= 0) { + eenc = rb_enc_from_index(opt->src.enc.index); + } + else { + eenc = lenc; #if UTF8_PATH - if (ienc) eenc = ienc; + if (ienc) eenc = ienc; #endif - } + } #if UTF8_PATH - if (eenc != uenc) { - opt->e_script = str_conv_enc(opt->e_script, uenc, eenc); - } + if (eenc != uenc) { + opt->e_script = str_conv_enc(opt->e_script, uenc, eenc); + } #endif - rb_enc_associate(opt->e_script, eenc); - ruby_opt_init(opt); - ruby_set_script_name(progname); - rb_parser_set_options(parser, opt->do_print, opt->do_loop, - opt->do_line, opt->do_split); - ast = rb_parser_compile_string(parser, opt->script, opt->e_script, 1); - } - else { - VALUE f; - int xflag = opt->xflag; - f = open_load_file(script_name, &xflag); - opt->xflag = xflag != 0; - rb_parser_set_context(parser, 0, f == rb_stdin); - ast = load_file(parser, opt->script_name, f, 1, opt); + rb_enc_associate(opt->e_script, eenc); + ruby_opt_init(opt); + ruby_set_script_name(progname); + rb_parser_set_options(parser, opt->do_print, opt->do_loop, + opt->do_line, opt->do_split); + ast = rb_parser_compile_string(parser, opt->script, opt->e_script, 1); + } + else { + VALUE f; + int xflag = opt->xflag; + f = open_load_file(script_name, &xflag); + opt->xflag = xflag != 0; + rb_parser_set_context(parser, 0, f == rb_stdin); + ast = load_file(parser, opt->script_name, f, 1, opt); + } } ruby_set_script_name(opt->script_name); if (dump & DUMP_BIT(yydebug)) { @@ -2301,7 +2316,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) rb_enc_set_default_internal(Qnil); rb_stdio_set_default_encoding(); - if (!ast->body.root) { + if (!(*rb_ruby_prism_ptr()) && !ast->body.root) { rb_ast_dispose(ast); return Qfalse; } @@ -2378,12 +2393,30 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) } - rb_binding_t *toplevel_binding; - GetBindingPtr(rb_const_get(rb_cObject, rb_intern("TOPLEVEL_BINDING")), - toplevel_binding); - const struct rb_block *base_block = toplevel_context(toplevel_binding); - iseq = rb_iseq_new_main(&ast->body, opt->script_name, path, vm_block_iseq(base_block), !(dump & DUMP_BIT(insns_without_opt))); - rb_ast_dispose(ast); + if ((*rb_ruby_prism_ptr())) { + pm_string_t input; + pm_options_t options = { 0 }; + + if (opt->e_script) { + pm_string_constant_init(&input, RSTRING_PTR(opt->e_script), RSTRING_LEN(opt->e_script)); + pm_options_filepath_set(&options, "-e"); + } else { + pm_string_mapped_init(&input, RSTRING_PTR(opt->script_name)); + pm_options_filepath_set(&options, RSTRING_PTR(opt->script_name)); + } + + iseq = rb_iseq_new_main_prism(&input, &options, path); + + pm_string_free(&input); + pm_options_free(&options); + } else { + rb_binding_t *toplevel_binding; + GetBindingPtr(rb_const_get(rb_cObject, rb_intern("TOPLEVEL_BINDING")), + toplevel_binding); + const struct rb_block *base_block = toplevel_context(toplevel_binding); + iseq = rb_iseq_new_main(&ast->body, opt->script_name, path, vm_block_iseq(base_block), !(dump & DUMP_BIT(insns_without_opt))); + rb_ast_dispose(ast); + } } if (dump & (DUMP_BIT(insns) | DUMP_BIT(insns_without_opt))) { @@ -2940,6 +2973,8 @@ ruby_process_options(int argc, char **argv) VALUE iseq; const char *script_name = (argc > 0 && argv[0]) ? argv[0] : ruby_engine; + (*rb_ruby_prism_ptr()) = false; + if (!origarg.argv || origarg.argc <= 0) { origarg.argc = argc; origarg.argv = argv; diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index eb10ed6aec..be363008de 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -287,6 +287,19 @@ class TestRubyOptions < Test::Unit::TestCase end end + def test_parser_flag + warning = /The Prism compiler is currently experimental and compatibility with parse.y is not yet complete. Please report an issues you find on the prism issue tracker./ + + assert_in_out_err(%w(--parser=prism -e) + ["puts :hi"], "", %w(hi), warning) + + assert_in_out_err(%w(--parser=parse.y -e) + ["puts :hi"], "", %w(hi), []) + assert_norun_with_rflag('--parser=parse.y', '--version', "") + + assert_in_out_err(%w(--parser=notreal -e) + ["puts :hi"], "", [], /unknown parser notreal/) + + assert_in_out_err(%w(--parser=prism --version), "", /\+PRISM/, warning) + end + def test_eval assert_in_out_err(%w(-e), "", [], /no code specified for -e \(RuntimeError\)/) end diff --git a/version.c b/version.c index b5b0bfda31..e719a59da2 100644 --- a/version.c +++ b/version.c @@ -141,6 +141,8 @@ Init_version(void) int ruby_mn_threads_enabled; +bool * rb_ruby_prism_ptr(void); + static void define_ruby_description(const char *const jit_opt) { @@ -151,15 +153,18 @@ define_ruby_description(const char *const jit_opt) ]; const char *const threads_opt = ruby_mn_threads_enabled ? " +MN" : ""; + const char *const parser_opt = (*rb_ruby_prism_ptr()) ? " +PRISM" : ""; int n = snprintf(desc, sizeof(desc), "%.*s" "%s" // jit_opt "%s" // threads_opts + "%s" // parser_opt "%s", ruby_description_opt_point, ruby_description, jit_opt, threads_opt, + parser_opt, ruby_description + ruby_description_opt_point); VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n)); diff --git a/vm.c b/vm.c index 079809e05f..f82523ad4e 100644 --- a/vm.c +++ b/vm.c @@ -4256,6 +4256,14 @@ rb_ruby_verbose_ptr(void) return &cr->verbose; } +static bool prism; + +bool * +rb_ruby_prism_ptr(void) +{ + return &prism; +} + VALUE * rb_ruby_debug_ptr(void) { -- cgit v1.2.3