kanayago 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -0
  3. data/.ruby-version +1 -0
  4. data/README.md +20 -29
  5. data/Rakefile +24 -120
  6. data/ext/kanayago/extconf.rb +14 -0
  7. data/ext/kanayago/kanayago.c +554 -235
  8. data/ext/kanayago/kanayago.h +5 -0
  9. data/ext/kanayago/literal_node.c +343 -0
  10. data/ext/kanayago/literal_node.h +30 -0
  11. data/ext/kanayago/pattern_node.c +78 -0
  12. data/ext/kanayago/pattern_node.h +13 -0
  13. data/ext/kanayago/scope_node.c +34 -0
  14. data/ext/kanayago/scope_node.h +8 -0
  15. data/ext/kanayago/statement_node.c +795 -0
  16. data/ext/kanayago/statement_node.h +66 -0
  17. data/ext/kanayago/string_node.c +192 -0
  18. data/ext/kanayago/string_node.h +19 -0
  19. data/ext/kanayago/variable_node.c +72 -0
  20. data/ext/kanayago/variable_node.h +12 -0
  21. data/lib/kanayago/literal_node.rb +87 -0
  22. data/lib/kanayago/pattern_node.rb +19 -0
  23. data/lib/kanayago/statement_node.rb +222 -0
  24. data/lib/kanayago/string_node.rb +43 -0
  25. data/lib/kanayago/variable_node.rb +23 -0
  26. data/lib/kanayago/version.rb +1 -1
  27. data/lib/kanayago.rb +22 -0
  28. data/patch/3.4/copy_target.rb +78 -0
  29. data/patch/3.4/kanayago.patch +162 -0
  30. data/patch/head/copy_target.rb +84 -0
  31. data/patch/head/kanayago.patch +162 -0
  32. data/sample/minitest_generator.rb +266 -0
  33. data/sample/test_generator.rb +272 -0
  34. data/script/setup_parser.rb +136 -0
  35. data/typeprof.conf.json +9 -0
  36. metadata +30 -64
  37. data/ext/kanayago/ccan/check_type/check_type.h +0 -63
  38. data/ext/kanayago/ccan/container_of/container_of.h +0 -142
  39. data/ext/kanayago/ccan/list/list.h +0 -791
  40. data/ext/kanayago/ccan/str/str.h +0 -17
  41. data/ext/kanayago/constant.h +0 -53
  42. data/ext/kanayago/id.h +0 -347
  43. data/ext/kanayago/id_table.h +0 -39
  44. data/ext/kanayago/internal/array.h +0 -151
  45. data/ext/kanayago/internal/basic_operators.h +0 -64
  46. data/ext/kanayago/internal/bignum.h +0 -244
  47. data/ext/kanayago/internal/bits.h +0 -568
  48. data/ext/kanayago/internal/compile.h +0 -34
  49. data/ext/kanayago/internal/compilers.h +0 -107
  50. data/ext/kanayago/internal/complex.h +0 -29
  51. data/ext/kanayago/internal/encoding.h +0 -36
  52. data/ext/kanayago/internal/error.h +0 -218
  53. data/ext/kanayago/internal/fixnum.h +0 -184
  54. data/ext/kanayago/internal/gc.h +0 -322
  55. data/ext/kanayago/internal/hash.h +0 -191
  56. data/ext/kanayago/internal/imemo.h +0 -261
  57. data/ext/kanayago/internal/io.h +0 -140
  58. data/ext/kanayago/internal/numeric.h +0 -274
  59. data/ext/kanayago/internal/parse.h +0 -117
  60. data/ext/kanayago/internal/rational.h +0 -71
  61. data/ext/kanayago/internal/re.h +0 -28
  62. data/ext/kanayago/internal/ruby_parser.h +0 -125
  63. data/ext/kanayago/internal/sanitizers.h +0 -297
  64. data/ext/kanayago/internal/serial.h +0 -23
  65. data/ext/kanayago/internal/static_assert.h +0 -16
  66. data/ext/kanayago/internal/string.h +0 -186
  67. data/ext/kanayago/internal/symbol.h +0 -45
  68. data/ext/kanayago/internal/thread.h +0 -79
  69. data/ext/kanayago/internal/variable.h +0 -72
  70. data/ext/kanayago/internal/vm.h +0 -137
  71. data/ext/kanayago/internal/warnings.h +0 -16
  72. data/ext/kanayago/internal.h +0 -108
  73. data/ext/kanayago/lex.c +0 -302
  74. data/ext/kanayago/method.h +0 -255
  75. data/ext/kanayago/node.c +0 -440
  76. data/ext/kanayago/node.h +0 -111
  77. data/ext/kanayago/node_name.inc +0 -224
  78. data/ext/kanayago/parse.c +0 -26931
  79. data/ext/kanayago/parse.h +0 -244
  80. data/ext/kanayago/parse.tmp.y +0 -16145
  81. data/ext/kanayago/parser_bits.h +0 -564
  82. data/ext/kanayago/parser_node.h +0 -32
  83. data/ext/kanayago/parser_st.c +0 -164
  84. data/ext/kanayago/parser_st.h +0 -162
  85. data/ext/kanayago/parser_value.h +0 -106
  86. data/ext/kanayago/probes.h +0 -4
  87. data/ext/kanayago/ruby_assert.h +0 -14
  88. data/ext/kanayago/ruby_atomic.h +0 -23
  89. data/ext/kanayago/ruby_parser.c +0 -1165
  90. data/ext/kanayago/rubyparser.h +0 -1391
  91. data/ext/kanayago/shape.h +0 -234
  92. data/ext/kanayago/st.c +0 -2339
  93. data/ext/kanayago/symbol.h +0 -123
  94. data/ext/kanayago/thread_pthread.h +0 -168
  95. data/ext/kanayago/universal_parser.c +0 -230
  96. data/ext/kanayago/vm_core.h +0 -2215
  97. data/ext/kanayago/vm_opts.h +0 -67
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanayago
4
+ class DynamicStringNode
5
+ attr_reader :string, :next_nodes
6
+ end
7
+
8
+ class DynamicSymbolNode
9
+ attr_reader :string, :next_nodes
10
+ end
11
+
12
+ class EmbeddedExpressionStringNode
13
+ attr_reader :body
14
+ end
15
+
16
+ class ExecuteStringNode
17
+ attr_reader :ptr, :len, :enc, :coderange
18
+ end
19
+
20
+ class DynamicExecuteStringNode
21
+ attr_reader :string, :next_nodes
22
+ end
23
+
24
+ class RegexpNode
25
+ attr_reader :ptr, :len, :enc, :coderange, :options
26
+ end
27
+
28
+ class DynamicRegexpNode
29
+ attr_reader :string, :next_nodes, :options
30
+ end
31
+
32
+ class MatchNode
33
+ attr_reader :ptr, :len, :enc, :coderange, :options
34
+ end
35
+
36
+ class Match2Node
37
+ attr_reader :recv, :value, :args
38
+ end
39
+
40
+ class Match3Node
41
+ attr_reader :recv, :value
42
+ end
43
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanayago
4
+ class LocalVariableNode
5
+ attr_reader :vid
6
+ end
7
+
8
+ class DynamicVariableNode
9
+ attr_reader :vid
10
+ end
11
+
12
+ class InstanceVariableNode
13
+ attr_reader :vid
14
+ end
15
+
16
+ class ClassVariableNode
17
+ attr_reader :vid
18
+ end
19
+
20
+ class GlobalVariableNode
21
+ attr_reader :vid
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kanayago
4
- VERSION = '0.1.1'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/kanayago.rb CHANGED
@@ -3,9 +3,31 @@
3
3
  require_relative 'kanayago/version'
4
4
  require_relative 'kanayago/kanayago'
5
5
 
6
+ require_relative 'kanayago/literal_node'
7
+ require_relative 'kanayago/string_node'
8
+ require_relative 'kanayago/statement_node'
9
+ require_relative 'kanayago/variable_node'
10
+ require_relative 'kanayago/pattern_node'
11
+
6
12
  # Parse Ruby code with Ruby's Parser(Universal Parser)
7
13
  module Kanayago
8
14
  def self.parse(source)
9
15
  kanayago_parse(source)
10
16
  end
17
+
18
+ class SelfNode
19
+ attr_reader :state
20
+ end
21
+
22
+ class ModuleNode
23
+ attr_reader :cpath, :body
24
+ end
25
+
26
+ class VariableCallNode
27
+ attr_reader :mid
28
+ end
29
+
30
+ class Colon3Node
31
+ attr_reader :mid
32
+ end
11
33
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ RUBY_PARSER_COPY_TARGETS = %w[
4
+ ccan/check_type/check_type.h
5
+ ccan/container_of/container_of.h
6
+ ccan/list/list.h
7
+ ccan/str/str.h
8
+ constant.h
9
+ id.h
10
+ id_table.h
11
+ internal/array.h
12
+ internal/basic_operators.h
13
+ internal/bignum.h
14
+ internal/bits.h
15
+ internal/compile.h
16
+ internal/compilers.h
17
+ internal/complex.h
18
+ internal/encoding.h
19
+ internal/error.h
20
+ internal/fixnum.h
21
+ internal/gc.h
22
+ internal/hash.h
23
+ internal/imemo.h
24
+ internal/io.h
25
+ internal/numeric.h
26
+ internal/parse.h
27
+ internal/rational.h
28
+ internal/re.h
29
+ internal/ruby_parser.h
30
+ internal/sanitizers.h
31
+ internal/serial.h
32
+ internal/static_assert.h
33
+ internal/string.h
34
+ internal/symbol.h
35
+ internal/thread.h
36
+ internal/variable.h
37
+ internal/warnings.h
38
+ internal/vm.h
39
+ internal.h
40
+ lex.c
41
+ method.h
42
+ node.c
43
+ node.h
44
+ node_name.inc
45
+ parse.c
46
+ parse.h
47
+ parser_bits.h
48
+ parser_node.h
49
+ parser_st.c
50
+ parser_st.h
51
+ parser_value.h
52
+ ruby_assert.h
53
+ ruby_atomic.h
54
+ ruby_parser.c
55
+ rubyparser.h
56
+ shape.h
57
+ st.c
58
+ symbol.h
59
+ thread_pthread.h
60
+ universal_parser.c
61
+ vm_core.h
62
+ vm_opts.h
63
+ ].freeze
64
+
65
+ MAKE_DIRECTORIES = [
66
+ 'ccan',
67
+ 'ccan/check_type',
68
+ 'ccan/container',
69
+ 'ccan/container_of',
70
+ 'ccan/list',
71
+ 'ccan/str',
72
+ 'internal'
73
+ ].freeze
74
+
75
+ DELETE_DIRECTORIES = %w[
76
+ ccan
77
+ internal
78
+ ].freeze
@@ -0,0 +1,162 @@
1
+ diff --git a/ext/kanayago/internal/ruby_parser.h b/ext/kanayago/internal/ruby_parser.h
2
+ index 8e306d1..d420a02 100644
3
+ --- a/ext/kanayago/internal/ruby_parser.h
4
+ +++ b/ext/kanayago/internal/ruby_parser.h
5
+ @@ -15,6 +15,29 @@ struct lex_pointer_string {
6
+ long ptr;
7
+ };
8
+
9
+ +// Add Ruby's Parser struct and enum for Kanayago
10
+ +enum lex_type {
11
+ + lex_type_str,
12
+ + lex_type_io,
13
+ + lex_type_array,
14
+ + lex_type_generic,
15
+ +};
16
+ +
17
+ +struct ruby_parser {
18
+ + rb_parser_t *parser_params;
19
+ + enum lex_type type;
20
+ + union {
21
+ + struct lex_pointer_string lex_str;
22
+ + struct {
23
+ + VALUE file;
24
+ + } lex_io;
25
+ + struct {
26
+ + VALUE ary;
27
+ + } lex_array;
28
+ + } data;
29
+ +};
30
+ +// End for Kanayago
31
+ +
32
+ RUBY_SYMBOL_EXPORT_BEGIN
33
+ #ifdef UNIVERSAL_PARSER
34
+ const rb_parser_config_t *rb_ruby_parser_config(void);
35
+ diff --git a/ext/kanayago/ruby_parser.c b/ext/kanayago/ruby_parser.c
36
+ index 267f619..841db65 100644
37
+ --- a/ext/kanayago/ruby_parser.c
38
+ +++ b/ext/kanayago/ruby_parser.c
39
+ @@ -314,6 +314,44 @@ enc_mbc_to_codepoint(const char *p, const char *e, parser_encoding *enc)
40
+
41
+ extern VALUE rb_eArgError;
42
+
43
+ +// Add for Kanayago
44
+ +static void *
45
+ +xmalloc_mul_add(size_t x, size_t y, size_t z)
46
+ +{
47
+ + return rb_xmalloc_mul_add(x, y, z);
48
+ +}
49
+ +
50
+ +static VALUE
51
+ +suppress_tracing(VALUE (*func)(VALUE), VALUE arg)
52
+ +{
53
+ + return func(arg);
54
+ +}
55
+ +
56
+ +static ID
57
+ +make_temporary_id(size_t n)
58
+ +{
59
+ + return rb_make_temporary_id(n);
60
+ +}
61
+ +
62
+ +static int
63
+ +stderr_tty_p(void)
64
+ +{
65
+ + return rb_stderr_tty_p();
66
+ +}
67
+ +
68
+ +static VALUE
69
+ +reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
70
+ +{
71
+ + return rb_reg_compile(str, options, sourcefile, sourceline);
72
+ +}
73
+ +
74
+ +static VALUE
75
+ +reg_check_preprocess(VALUE val)
76
+ +{
77
+ + return rb_reg_check_preprocess(val);
78
+ +}
79
+ +// End of Add for Kanayago
80
+ +
81
+ static const rb_parser_config_t rb_global_parser_config = {
82
+ .malloc = ruby_xmalloc,
83
+ .calloc = ruby_xcalloc,
84
+ @@ -325,9 +363,9 @@ static const rb_parser_config_t rb_global_parser_config = {
85
+ .zalloc = zalloc,
86
+ .rb_memmove = memmove2,
87
+ .nonempty_memcpy = nonempty_memcpy,
88
+ - .xmalloc_mul_add = rb_xmalloc_mul_add,
89
+ + .xmalloc_mul_add = xmalloc_mul_add, // use xmalloc_mul_add for Kanayago
90
+
91
+ - .compile_callback = rb_suppress_tracing,
92
+ + .compile_callback = suppress_tracing, // use suppress_tracing for Kanayago
93
+ .reg_named_capture_assign = reg_named_capture_assign,
94
+
95
+ .attr_get = rb_attr_get,
96
+ @@ -335,7 +373,7 @@ static const rb_parser_config_t rb_global_parser_config = {
97
+ .ary_new_from_args = rb_ary_new_from_args,
98
+ .ary_unshift = rb_ary_unshift,
99
+
100
+ - .make_temporary_id = rb_make_temporary_id,
101
+ + .make_temporary_id = make_temporary_id, // use make_temporary_id for Kanayago
102
+ .is_local_id = is_local_id2,
103
+ .is_attrset_id = is_attrset_id2,
104
+ .is_global_name_punct = is_global_name_punct,
105
+ @@ -365,7 +403,7 @@ static const rb_parser_config_t rb_global_parser_config = {
106
+
107
+ .int2num = rb_int2num_inline,
108
+
109
+ - .stderr_tty_p = rb_stderr_tty_p,
110
+ + .stderr_tty_p = stderr_tty_p, //use stderr_tty_p for Kanayago
111
+ .write_error_str = rb_write_error_str,
112
+ .io_write = rb_io_write,
113
+ .io_flush = rb_io_flush,
114
+ @@ -412,8 +450,8 @@ static const rb_parser_config_t rb_global_parser_config = {
115
+ .gc_guard = gc_guard,
116
+ .gc_mark = rb_gc_mark,
117
+
118
+ - .reg_compile = rb_reg_compile,
119
+ - .reg_check_preprocess = rb_reg_check_preprocess,
120
+ + .reg_compile = reg_compile, // use reg_compile for Kanayago
121
+ + .reg_check_preprocess = reg_check_preprocess, // use reg_check_preprocess for Kanayago
122
+ .memcicmp = rb_memcicmp,
123
+
124
+ .compile_warn = rb_compile_warn,
125
+ @@ -443,27 +481,6 @@ static const rb_parser_config_t rb_global_parser_config = {
126
+ };
127
+ #endif
128
+
129
+ -enum lex_type {
130
+ - lex_type_str,
131
+ - lex_type_io,
132
+ - lex_type_array,
133
+ - lex_type_generic,
134
+ -};
135
+ -
136
+ -struct ruby_parser {
137
+ - rb_parser_t *parser_params;
138
+ - enum lex_type type;
139
+ - union {
140
+ - struct lex_pointer_string lex_str;
141
+ - struct {
142
+ - VALUE file;
143
+ - } lex_io;
144
+ - struct {
145
+ - VALUE ary;
146
+ - } lex_array;
147
+ - } data;
148
+ -};
149
+ -
150
+ static void
151
+ parser_mark(void *ptr)
152
+ {
153
+ @@ -501,7 +518,8 @@ parser_memsize(const void *ptr)
154
+ return rb_ruby_parser_memsize(parser->parser_params);
155
+ }
156
+
157
+ -static const rb_data_type_t ruby_parser_data_type = {
158
+ +// Not static const for Kanayago
159
+ +const rb_data_type_t ruby_parser_data_type = {
160
+ "parser",
161
+ {
162
+ parser_mark,
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ RUBY_PARSER_COPY_TARGETS = %w[
4
+ ccan/check_type/check_type.h
5
+ ccan/container_of/container_of.h
6
+ ccan/list/list.h
7
+ ccan/str/str.h
8
+ constant.h
9
+ id.h
10
+ id_table.h
11
+ include/ruby/st.h
12
+ internal/array.h
13
+ internal/basic_operators.h
14
+ internal/bignum.h
15
+ internal/bits.h
16
+ internal/compile.h
17
+ internal/compilers.h
18
+ internal/complex.h
19
+ internal/encoding.h
20
+ internal/error.h
21
+ internal/fixnum.h
22
+ internal/gc.h
23
+ internal/hash.h
24
+ internal/imemo.h
25
+ internal/io.h
26
+ internal/namespace.h
27
+ internal/numeric.h
28
+ internal/parse.h
29
+ internal/rational.h
30
+ internal/re.h
31
+ internal/ruby_parser.h
32
+ internal/sanitizers.h
33
+ internal/serial.h
34
+ internal/set_table.h
35
+ internal/static_assert.h
36
+ internal/string.h
37
+ internal/symbol.h
38
+ internal/thread.h
39
+ internal/variable.h
40
+ internal/warnings.h
41
+ internal/vm.h
42
+ internal.h
43
+ lex.c
44
+ method.h
45
+ node.c
46
+ node.h
47
+ node_name.inc
48
+ parse.c
49
+ parse.h
50
+ parser_bits.h
51
+ parser_node.h
52
+ parser_st.c
53
+ parser_st.h
54
+ parser_value.h
55
+ ruby_assert.h
56
+ ruby_atomic.h
57
+ ruby_parser.c
58
+ rubyparser.h
59
+ shape.h
60
+ st.c
61
+ symbol.h
62
+ thread_pthread.h
63
+ universal_parser.c
64
+ vm_core.h
65
+ vm_opts.h
66
+ ].freeze
67
+
68
+ MAKE_DIRECTORIES = [
69
+ 'ccan',
70
+ 'ccan/check_type',
71
+ 'ccan/container',
72
+ 'ccan/container_of',
73
+ 'ccan/list',
74
+ 'ccan/str',
75
+ 'internal',
76
+ 'include',
77
+ 'include/ruby'
78
+ ].freeze
79
+
80
+ DELETE_DIRECTORIES = %w[
81
+ ccan
82
+ internal
83
+ include
84
+ ].freeze
@@ -0,0 +1,162 @@
1
+ diff --git a/ext/kanayago/internal/ruby_parser.h b/ext/kanayago/internal/ruby_parser.h
2
+ index 8e306d1..d420a02 100644
3
+ --- a/ext/kanayago/internal/ruby_parser.h
4
+ +++ b/ext/kanayago/internal/ruby_parser.h
5
+ @@ -15,6 +15,29 @@ struct lex_pointer_string {
6
+ long ptr;
7
+ };
8
+
9
+ +// Add Ruby's Parser struct and enum for Kanayago
10
+ +enum lex_type {
11
+ + lex_type_str,
12
+ + lex_type_io,
13
+ + lex_type_array,
14
+ + lex_type_generic,
15
+ +};
16
+ +
17
+ +struct ruby_parser {
18
+ + rb_parser_t *parser_params;
19
+ + enum lex_type type;
20
+ + union {
21
+ + struct lex_pointer_string lex_str;
22
+ + struct {
23
+ + VALUE file;
24
+ + } lex_io;
25
+ + struct {
26
+ + VALUE ary;
27
+ + } lex_array;
28
+ + } data;
29
+ +};
30
+ +// End for Kanayago
31
+ +
32
+ RUBY_SYMBOL_EXPORT_BEGIN
33
+ #ifdef UNIVERSAL_PARSER
34
+ const rb_parser_config_t *rb_ruby_parser_config(void);
35
+ diff --git a/ext/kanayago/ruby_parser.c b/ext/kanayago/ruby_parser.c
36
+ index 267f619..841db65 100644
37
+ --- a/ext/kanayago/ruby_parser.c
38
+ +++ b/ext/kanayago/ruby_parser.c
39
+ @@ -314,6 +314,44 @@ enc_mbc_to_codepoint(const char *p, const char *e, parser_encoding *enc)
40
+
41
+ extern VALUE rb_eArgError;
42
+
43
+ +// Add for Kanayago
44
+ +static void *
45
+ +xmalloc_mul_add(size_t x, size_t y, size_t z)
46
+ +{
47
+ + return rb_xmalloc_mul_add(x, y, z);
48
+ +}
49
+ +
50
+ +static VALUE
51
+ +suppress_tracing(VALUE (*func)(VALUE), VALUE arg)
52
+ +{
53
+ + return func(arg);
54
+ +}
55
+ +
56
+ +static ID
57
+ +make_temporary_id(size_t n)
58
+ +{
59
+ + return rb_make_temporary_id(n);
60
+ +}
61
+ +
62
+ +static int
63
+ +stderr_tty_p(void)
64
+ +{
65
+ + return rb_stderr_tty_p();
66
+ +}
67
+ +
68
+ +static VALUE
69
+ +reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
70
+ +{
71
+ + return rb_reg_compile(str, options, sourcefile, sourceline);
72
+ +}
73
+ +
74
+ +static VALUE
75
+ +reg_check_preprocess(VALUE val)
76
+ +{
77
+ + return rb_reg_check_preprocess(val);
78
+ +}
79
+ +// End of Add for Kanayago
80
+ +
81
+ static const rb_parser_config_t rb_global_parser_config = {
82
+ .malloc = ruby_xmalloc,
83
+ .calloc = ruby_xcalloc,
84
+ @@ -325,9 +363,9 @@ static const rb_parser_config_t rb_global_parser_config = {
85
+ .zalloc = zalloc,
86
+ .rb_memmove = memmove2,
87
+ .nonempty_memcpy = nonempty_memcpy,
88
+ - .xmalloc_mul_add = rb_xmalloc_mul_add,
89
+ + .xmalloc_mul_add = xmalloc_mul_add, // use xmalloc_mul_add for Kanayago
90
+
91
+ - .compile_callback = rb_suppress_tracing,
92
+ + .compile_callback = suppress_tracing, // use suppress_tracing for Kanayago
93
+ .reg_named_capture_assign = reg_named_capture_assign,
94
+
95
+ .attr_get = rb_attr_get,
96
+ @@ -335,7 +373,7 @@ static const rb_parser_config_t rb_global_parser_config = {
97
+ .ary_new_from_args = rb_ary_new_from_args,
98
+ .ary_unshift = rb_ary_unshift,
99
+
100
+ - .make_temporary_id = rb_make_temporary_id,
101
+ + .make_temporary_id = make_temporary_id, // use make_temporary_id for Kanayago
102
+ .is_local_id = is_local_id2,
103
+ .is_attrset_id = is_attrset_id2,
104
+ .is_global_name_punct = is_global_name_punct,
105
+ @@ -365,7 +403,7 @@ static const rb_parser_config_t rb_global_parser_config = {
106
+
107
+ .int2num = rb_int2num_inline,
108
+
109
+ - .stderr_tty_p = rb_stderr_tty_p,
110
+ + .stderr_tty_p = stderr_tty_p, //use stderr_tty_p for Kanayago
111
+ .write_error_str = rb_write_error_str,
112
+ .io_write = rb_io_write,
113
+ .io_flush = rb_io_flush,
114
+ @@ -412,8 +450,8 @@ static const rb_parser_config_t rb_global_parser_config = {
115
+ .gc_guard = gc_guard,
116
+ .gc_mark = rb_gc_mark,
117
+
118
+ - .reg_compile = rb_reg_compile,
119
+ - .reg_check_preprocess = rb_reg_check_preprocess,
120
+ + .reg_compile = reg_compile, // use reg_compile for Kanayago
121
+ + .reg_check_preprocess = reg_check_preprocess, // use reg_check_preprocess for Kanayago
122
+ .memcicmp = rb_memcicmp,
123
+
124
+ .compile_warn = rb_compile_warn,
125
+ @@ -443,27 +481,6 @@ static const rb_parser_config_t rb_global_parser_config = {
126
+ };
127
+ #endif
128
+
129
+ -enum lex_type {
130
+ - lex_type_str,
131
+ - lex_type_io,
132
+ - lex_type_array,
133
+ - lex_type_generic,
134
+ -};
135
+ -
136
+ -struct ruby_parser {
137
+ - rb_parser_t *parser_params;
138
+ - enum lex_type type;
139
+ - union {
140
+ - struct lex_pointer_string lex_str;
141
+ - struct {
142
+ - VALUE file;
143
+ - } lex_io;
144
+ - struct {
145
+ - VALUE ary;
146
+ - } lex_array;
147
+ - } data;
148
+ -};
149
+ -
150
+ static void
151
+ parser_mark(void *ptr)
152
+ {
153
+ @@ -501,7 +518,8 @@ parser_memsize(const void *ptr)
154
+ return rb_ruby_parser_memsize(parser->parser_params);
155
+ }
156
+
157
+ -static const rb_data_type_t ruby_parser_data_type = {
158
+ +// Not static const for Kanayago
159
+ +const rb_data_type_t ruby_parser_data_type = {
160
+ "parser",
161
+ {
162
+ parser_mark,