kanayago 0.2.0 → 0.4.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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -0
  3. data/README.md +1 -1
  4. data/Rakefile +5 -48
  5. data/ext/kanayago/extconf.rb +8 -0
  6. data/ext/kanayago/kanayago.c +30 -185
  7. data/ext/kanayago/scope_node.c +2 -16
  8. data/ext/kanayago/variable_node.c +2 -1
  9. data/lib/kanayago/call_node.rb +19 -0
  10. data/lib/kanayago/constant_node.rb +15 -0
  11. data/lib/kanayago/literal_node.rb +4 -0
  12. data/lib/kanayago/scope_node.rb +14 -0
  13. data/lib/kanayago/statement_node.rb +16 -0
  14. data/lib/kanayago/variable_node.rb +4 -0
  15. data/lib/kanayago/version.rb +1 -1
  16. data/lib/kanayago.rb +3 -16
  17. data/script/setup_parser.rb +136 -0
  18. metadata +6 -64
  19. data/ext/kanayago/ccan/check_type/check_type.h +0 -63
  20. data/ext/kanayago/ccan/container_of/container_of.h +0 -142
  21. data/ext/kanayago/ccan/list/list.h +0 -791
  22. data/ext/kanayago/ccan/str/str.h +0 -17
  23. data/ext/kanayago/constant.h +0 -53
  24. data/ext/kanayago/id.h +0 -354
  25. data/ext/kanayago/id_table.h +0 -54
  26. data/ext/kanayago/include/ruby/st.h +0 -199
  27. data/ext/kanayago/internal/array.h +0 -154
  28. data/ext/kanayago/internal/basic_operators.h +0 -65
  29. data/ext/kanayago/internal/bignum.h +0 -245
  30. data/ext/kanayago/internal/bits.h +0 -650
  31. data/ext/kanayago/internal/compile.h +0 -34
  32. data/ext/kanayago/internal/compilers.h +0 -107
  33. data/ext/kanayago/internal/complex.h +0 -29
  34. data/ext/kanayago/internal/encoding.h +0 -39
  35. data/ext/kanayago/internal/error.h +0 -251
  36. data/ext/kanayago/internal/fixnum.h +0 -185
  37. data/ext/kanayago/internal/gc.h +0 -358
  38. data/ext/kanayago/internal/hash.h +0 -194
  39. data/ext/kanayago/internal/imemo.h +0 -322
  40. data/ext/kanayago/internal/io.h +0 -163
  41. data/ext/kanayago/internal/namespace.h +0 -81
  42. data/ext/kanayago/internal/numeric.h +0 -275
  43. data/ext/kanayago/internal/parse.h +0 -131
  44. data/ext/kanayago/internal/rational.h +0 -71
  45. data/ext/kanayago/internal/re.h +0 -33
  46. data/ext/kanayago/internal/ruby_parser.h +0 -125
  47. data/ext/kanayago/internal/sanitizers.h +0 -346
  48. data/ext/kanayago/internal/serial.h +0 -23
  49. data/ext/kanayago/internal/set_table.h +0 -70
  50. data/ext/kanayago/internal/static_assert.h +0 -16
  51. data/ext/kanayago/internal/string.h +0 -203
  52. data/ext/kanayago/internal/symbol.h +0 -46
  53. data/ext/kanayago/internal/thread.h +0 -112
  54. data/ext/kanayago/internal/variable.h +0 -74
  55. data/ext/kanayago/internal/vm.h +0 -136
  56. data/ext/kanayago/internal/warnings.h +0 -16
  57. data/ext/kanayago/internal.h +0 -105
  58. data/ext/kanayago/lex.c +0 -302
  59. data/ext/kanayago/method.h +0 -271
  60. data/ext/kanayago/node.c +0 -446
  61. data/ext/kanayago/node.h +0 -122
  62. data/ext/kanayago/node_name.inc +0 -224
  63. data/ext/kanayago/parse.c +0 -27377
  64. data/ext/kanayago/parse.h +0 -244
  65. data/ext/kanayago/parser_bits.h +0 -564
  66. data/ext/kanayago/parser_node.h +0 -32
  67. data/ext/kanayago/parser_st.c +0 -165
  68. data/ext/kanayago/parser_st.h +0 -162
  69. data/ext/kanayago/parser_value.h +0 -106
  70. data/ext/kanayago/probes.h +0 -4
  71. data/ext/kanayago/ruby_assert.h +0 -14
  72. data/ext/kanayago/ruby_atomic.h +0 -66
  73. data/ext/kanayago/ruby_parser.c +0 -1137
  74. data/ext/kanayago/rubyparser.h +0 -1394
  75. data/ext/kanayago/shape.h +0 -444
  76. data/ext/kanayago/st.c +0 -3223
  77. data/ext/kanayago/symbol.h +0 -116
  78. data/ext/kanayago/thread_pthread.h +0 -175
  79. data/ext/kanayago/universal_parser.c +0 -211
  80. data/ext/kanayago/vm_core.h +0 -2349
  81. data/ext/kanayago/vm_opts.h +0 -67
@@ -33,84 +33,36 @@ operator_call_node_new(const NODE *node)
33
33
  {
34
34
  VALUE obj = rb_class_new_instance(0, 0, rb_cOperatorCallNode);
35
35
 
36
- rb_ivar_set(obj, symbol("recv"), ast_to_node_instance(RNODE_OPCALL(node)->nd_recv));
37
- rb_ivar_set(obj, symbol("mid"), ID2SYM(RNODE_OPCALL(node)->nd_mid));
38
- rb_ivar_set(obj, symbol("args"), ast_to_node_instance(RNODE_OPCALL(node)->nd_args));
36
+ rb_ivar_set(obj, rb_intern("@recv"), ast_to_node_instance(RNODE_OPCALL(node)->nd_recv));
37
+ rb_ivar_set(obj, rb_intern("@mid"), ID2SYM(RNODE_OPCALL(node)->nd_mid));
38
+ rb_ivar_set(obj, rb_intern("@args"), ast_to_node_instance(RNODE_OPCALL(node)->nd_args));
39
39
 
40
40
  return obj;
41
41
  }
42
42
 
43
- static VALUE
44
- operator_call_node_recv_get(VALUE self)
45
- {
46
- return rb_ivar_get(self, symbol("recv"));
47
- }
48
-
49
- static VALUE
50
- operator_call_node_mid_get(VALUE self)
51
- {
52
- return rb_ivar_get(self, symbol("mid"));
53
- }
54
-
55
- static VALUE
56
- operator_call_node_args_get(VALUE self)
57
- {
58
- return rb_ivar_get(self, symbol("args"));
59
- }
60
-
61
43
  static VALUE
62
44
  call_node_new(const NODE *node)
63
45
  {
64
46
  VALUE result = rb_class_new_instance(0, 0, rb_cCallNode);
65
47
 
66
- rb_ivar_set(result, symbol("recv"), ast_to_node_instance(RNODE_OPCALL(node)->nd_recv));
67
- rb_ivar_set(result, symbol("mid"), ID2SYM(RNODE_CALL(node)->nd_mid));
68
- rb_ivar_set(result, symbol("args"), ast_to_node_instance(RNODE_CALL(node)->nd_args));
48
+ rb_ivar_set(result, rb_intern("@recv"), ast_to_node_instance(RNODE_OPCALL(node)->nd_recv));
49
+ rb_ivar_set(result, rb_intern("@mid"), ID2SYM(RNODE_CALL(node)->nd_mid));
50
+ rb_ivar_set(result, rb_intern("@args"), ast_to_node_instance(RNODE_CALL(node)->nd_args));
69
51
 
70
52
  return result;
71
53
  }
72
54
 
73
- static VALUE
74
- call_node_recv_get(VALUE self)
75
- {
76
- return rb_ivar_get(self, symbol("recv"));
77
- }
78
-
79
- static VALUE
80
- call_node_mid_get(VALUE self)
81
- {
82
- return rb_ivar_get(self, symbol("mid"));
83
- }
84
-
85
- static VALUE
86
- call_node_args_get(VALUE self)
87
- {
88
- return rb_ivar_get(self, symbol("args"));
89
- }
90
-
91
55
  static VALUE
92
56
  function_call_node_new(const NODE *node)
93
57
  {
94
58
  VALUE obj = rb_class_new_instance(0, 0, rb_cFunctionCallNode);
95
59
 
96
- rb_ivar_set(obj, symbol("mid"), ID2SYM(RNODE_FCALL(node)->nd_mid));
97
- rb_ivar_set(obj, symbol("args"), ast_to_node_instance(RNODE_FCALL(node)->nd_args));
60
+ rb_ivar_set(obj, rb_intern("@mid"), ID2SYM(RNODE_FCALL(node)->nd_mid));
61
+ rb_ivar_set(obj, rb_intern("@args"), ast_to_node_instance(RNODE_FCALL(node)->nd_args));
98
62
 
99
63
  return obj;
100
64
  }
101
65
 
102
- static VALUE
103
- function_call_node_mid_get(VALUE self)
104
- {
105
- return rb_ivar_get(self, symbol("mid"));
106
- }
107
-
108
- static VALUE
109
- function_call_node_args_get(VALUE self)
110
- {
111
- return rb_ivar_get(self, symbol("args"));
112
- }
113
-
114
66
  static VALUE
115
67
  variable_call_node_new(const NODE *node)
116
68
  {
@@ -121,12 +73,6 @@ variable_call_node_new(const NODE *node)
121
73
  return obj;
122
74
  }
123
75
 
124
- static VALUE
125
- variable_call_node_mid_get(VALUE self)
126
- {
127
- return rb_ivar_get(self, rb_intern("@mid"));
128
- }
129
-
130
76
  static VALUE
131
77
  list_node_new(const NODE *node)
132
78
  {
@@ -151,24 +97,12 @@ definition_node_new(const NODE *node)
151
97
  {
152
98
  VALUE obj = rb_class_new_instance(0, 0, rb_cDefinitionNode);
153
99
 
154
- rb_ivar_set(obj, symbol("mid"), ID2SYM(RNODE_DEFN(node)->nd_mid));
155
- rb_ivar_set(obj, symbol("defn"), ast_to_node_instance(RNODE_DEFN(node)->nd_defn));
100
+ rb_ivar_set(obj, rb_intern("@mid"), ID2SYM(RNODE_DEFN(node)->nd_mid));
101
+ rb_ivar_set(obj, rb_intern("@defn"), ast_to_node_instance(RNODE_DEFN(node)->nd_defn));
156
102
 
157
103
  return obj;
158
104
  }
159
105
 
160
- static VALUE
161
- definition_node_mid_get(VALUE self)
162
- {
163
- return rb_ivar_get(self, symbol("mid"));
164
- }
165
-
166
- static VALUE
167
- definition_node_defn_get(VALUE self)
168
- {
169
- return rb_ivar_get(self, symbol("defn"));
170
- }
171
-
172
106
  static VALUE
173
107
  block_node_new(const NODE *node)
174
108
  {
@@ -188,47 +122,23 @@ constant_node_new(const NODE *node)
188
122
  {
189
123
  VALUE obj = rb_class_new_instance(0, 0, rb_cConstantNode);
190
124
 
191
- rb_ivar_set(obj, symbol("vid"), ID2SYM(RNODE_CONST(node)->nd_vid));
125
+ rb_ivar_set(obj, rb_intern("@vid"), ID2SYM(RNODE_CONST(node)->nd_vid));
192
126
 
193
127
  return obj;
194
128
  }
195
129
 
196
- static VALUE
197
- constant_node_vid_get(VALUE self)
198
- {
199
- return rb_ivar_get(self, symbol("vid"));
200
- }
201
-
202
130
  static VALUE
203
131
  constant_declaration_node_new(const NODE *node)
204
132
  {
205
133
  VALUE obj = rb_class_new_instance(0, 0, rb_cConstantDeclarationNode);
206
134
 
207
- rb_ivar_set(obj, symbol("vid"), ID2SYM(RNODE_CDECL(node)->nd_vid));
208
- rb_ivar_set(obj, symbol("else"), ast_to_node_instance(RNODE_CDECL(node)->nd_else));
209
- rb_ivar_set(obj, symbol("value"), ast_to_node_instance(RNODE_CDECL(node)->nd_value));
135
+ rb_ivar_set(obj, rb_intern("@vid"), ID2SYM(RNODE_CDECL(node)->nd_vid));
136
+ rb_ivar_set(obj, rb_intern("@else"), ast_to_node_instance(RNODE_CDECL(node)->nd_else));
137
+ rb_ivar_set(obj, rb_intern("@value"), ast_to_node_instance(RNODE_CDECL(node)->nd_value));
210
138
 
211
139
  return obj;
212
140
  }
213
141
 
214
- static VALUE
215
- constant_declaration_node_vid_get(VALUE self)
216
- {
217
- return rb_ivar_get(self, symbol("vid"));
218
- }
219
-
220
- static VALUE
221
- constant_declaration_node_else_get(VALUE self)
222
- {
223
- return rb_ivar_get(self, symbol("else"));
224
- }
225
-
226
- static VALUE
227
- constant_declaration_node_value_get(VALUE self)
228
- {
229
- return rb_ivar_get(self, symbol("value"));
230
- }
231
-
232
142
  static VALUE
233
143
  node_literal_to_hash(const NODE *node)
234
144
  {
@@ -271,31 +181,13 @@ class_node_new(const NODE *node)
271
181
  {
272
182
  VALUE obj = rb_class_new_instance(0, 0, rb_cClassNode);
273
183
 
274
- rb_ivar_set(obj, symbol("cpath"), ast_to_node_instance(RNODE_CLASS(node)->nd_cpath));
275
- rb_ivar_set(obj, symbol("super"), ast_to_node_instance(RNODE_CLASS(node)->nd_super));
276
- rb_ivar_set(obj, symbol("body"), ast_to_node_instance(RNODE_CLASS(node)->nd_body));
184
+ rb_ivar_set(obj, rb_intern("@cpath"), ast_to_node_instance(RNODE_CLASS(node)->nd_cpath));
185
+ rb_ivar_set(obj, rb_intern("@super"), ast_to_node_instance(RNODE_CLASS(node)->nd_super));
186
+ rb_ivar_set(obj, rb_intern("@body"), ast_to_node_instance(RNODE_CLASS(node)->nd_body));
277
187
 
278
188
  return obj;
279
189
  }
280
190
 
281
- static VALUE
282
- class_node_cpath_get(VALUE self)
283
- {
284
- return rb_ivar_get(self, symbol("cpath"));
285
- }
286
-
287
- static VALUE
288
- class_node_super_get(VALUE self)
289
- {
290
- return rb_ivar_get(self, symbol("super"));
291
- }
292
-
293
- static VALUE
294
- class_node_body_get(VALUE self)
295
- {
296
- return rb_ivar_get(self, symbol("body"));
297
- }
298
-
299
191
  static VALUE
300
192
  module_node_new(const NODE *node)
301
193
  {
@@ -313,24 +205,12 @@ colon2_node_new(const NODE *node)
313
205
  {
314
206
  VALUE obj = rb_class_new_instance(0, 0, rb_cColon2Node);
315
207
 
316
- rb_ivar_set(obj, symbol("mid"), ID2SYM(RNODE_COLON2(node)->nd_mid));
317
- rb_ivar_set(obj, symbol("head"), ast_to_node_instance(RNODE_COLON2(node)->nd_head));
208
+ rb_ivar_set(obj, rb_intern("@mid"), ID2SYM(RNODE_COLON2(node)->nd_mid));
209
+ rb_ivar_set(obj, rb_intern("@head"), ast_to_node_instance(RNODE_COLON2(node)->nd_head));
318
210
 
319
211
  return obj;
320
212
  }
321
213
 
322
- static VALUE
323
- colon2_node_mid_get(VALUE self)
324
- {
325
- return rb_ivar_get(self, symbol("mid"));
326
- }
327
-
328
- static VALUE
329
- colon2_node_head_get(VALUE self)
330
- {
331
- return rb_ivar_get(self, symbol("head"));
332
- }
333
-
334
214
  static VALUE
335
215
  colon3_node_new(const NODE *node)
336
216
  {
@@ -341,28 +221,16 @@ colon3_node_new(const NODE *node)
341
221
  return obj;
342
222
  }
343
223
 
344
- static VALUE
345
- colon3_node_mid_get(VALUE self)
346
- {
347
- return rb_ivar_get(self, rb_intern("@mid"));
348
- }
349
-
350
224
  static VALUE
351
225
  begin_node_new(const NODE *node)
352
226
  {
353
227
  VALUE obj = rb_class_new_instance(0, 0, rb_cBeginNode);
354
228
 
355
- rb_ivar_set(obj, symbol("body"), ast_to_node_instance(RNODE_BEGIN(node)->nd_body));
229
+ rb_ivar_set(obj, rb_intern("@body"), ast_to_node_instance(RNODE_BEGIN(node)->nd_body));
356
230
 
357
231
  return obj;
358
232
  }
359
233
 
360
- static VALUE
361
- begin_node_body_get(VALUE self)
362
- {
363
- return rb_ivar_get(self, symbol("body"));
364
- }
365
-
366
234
  static VALUE
367
235
  args_ainfo_to_hash(const struct rb_args_info ainfo)
368
236
  {
@@ -373,9 +241,11 @@ args_ainfo_to_hash(const struct rb_args_info ainfo)
373
241
  rb_hash_aset(result, symbol("pre_init"), ast_to_node_instance(ainfo.pre_init));
374
242
  rb_hash_aset(result, symbol("post_args_num"), INT2NUM(ainfo.post_args_num));
375
243
  rb_hash_aset(result, symbol("post_init"), ast_to_node_instance(ainfo.post_init));
376
- rb_hash_aset(result, symbol("first_post_arg"), Qnil);
377
- rb_hash_aset(result, symbol("rest_arg"), Qnil);
378
- rb_hash_aset(result, symbol("block_arg"), Qnil);
244
+
245
+ rb_hash_aset(result, symbol("first_post_arg"), ainfo.first_post_arg ? ID2SYM(ainfo.first_post_arg) : Qnil);
246
+ rb_hash_aset(result, symbol("rest_arg"), ainfo.rest_arg ? ID2SYM(ainfo.rest_arg) : Qnil);
247
+ rb_hash_aset(result, symbol("block_arg"), ainfo.block_arg ? ID2SYM(ainfo.block_arg) : Qnil);
248
+
379
249
  rb_hash_aset(result, symbol("opt_args"), ast_to_node_instance((const NODE *)(ainfo.opt_args)));
380
250
  rb_hash_aset(result, symbol("kw_args"), ast_to_node_instance((const NODE *)(ainfo.kw_args)));
381
251
  rb_hash_aset(result, symbol("kw_rest_arg"), ast_to_node_instance(ainfo.kw_rest_arg));
@@ -389,17 +259,11 @@ arguments_node_new(const NODE *node)
389
259
  VALUE obj = rb_class_new_instance(0, 0, rb_cArgumentsNode);
390
260
  VALUE ainfo_hash = args_ainfo_to_hash(RNODE_ARGS(node)->nd_ainfo);
391
261
 
392
- rb_ivar_set(obj, symbol("ainfo"), ainfo_hash);
262
+ rb_ivar_set(obj, rb_intern("@ainfo"), ainfo_hash);
393
263
 
394
264
  return obj;
395
265
  }
396
266
 
397
- static VALUE
398
- arguments_node_ainfo_get(VALUE self)
399
- {
400
- return rb_ivar_get(self, symbol("ainfo"));
401
- }
402
-
403
267
  static VALUE
404
268
  self_node_new(const NODE *node)
405
269
  {
@@ -419,6 +283,10 @@ ast_to_node_instance(const NODE *node)
419
283
  return Qnil;
420
284
  }
421
285
 
286
+ if (node == (NODE *)-1) {
287
+ return Qnil;
288
+ }
289
+
422
290
  type = nd_type(node);
423
291
 
424
292
  switch (type) {
@@ -674,38 +542,22 @@ Init_kanayago(void)
674
542
  Init_StringNode(rb_mKanayago);
675
543
 
676
544
  rb_cConstantNode = rb_define_class_under(rb_mKanayago, "ConstantNode", rb_cObject);
677
- rb_define_method(rb_cConstantNode, "vid", constant_node_vid_get, 0);
678
545
 
679
546
  rb_cConstantDeclarationNode = rb_define_class_under(rb_mKanayago, "ConstantDeclarationNode", rb_cObject);
680
- rb_define_method(rb_cConstantDeclarationNode, "vid", constant_declaration_node_vid_get, 0);
681
- rb_define_method(rb_cConstantDeclarationNode, "else", constant_declaration_node_else_get, 0);
682
- rb_define_method(rb_cConstantDeclarationNode, "value", constant_declaration_node_value_get, 0);
683
547
 
684
548
  rb_cDefinitionNode = rb_define_class_under(rb_mKanayago, "DefinitionNode", rb_cObject);
685
- rb_define_method(rb_cDefinitionNode, "mid", definition_node_mid_get, 0);
686
- rb_define_method(rb_cDefinitionNode, "defn", definition_node_defn_get, 0);
687
549
 
688
550
  rb_cOperatorCallNode = rb_define_class_under(rb_mKanayago, "OperatorCallNode", rb_cObject);
689
- rb_define_method(rb_cOperatorCallNode, "recv", operator_call_node_recv_get, 0);
690
- rb_define_method(rb_cOperatorCallNode, "mid", operator_call_node_mid_get, 0);
691
- rb_define_method(rb_cOperatorCallNode, "args", operator_call_node_args_get, 0);
692
551
 
693
552
  rb_cListNode = rb_define_class_under(rb_mKanayago, "ListNode", rb_cObject);
694
553
 
695
554
  rb_cArgumentsNode = rb_define_class_under(rb_mKanayago, "ArgumentsNode", rb_cObject);
696
- rb_define_method(rb_cArgumentsNode, "ainfo", arguments_node_ainfo_get, 0);
697
555
 
698
556
  rb_cCallNode = rb_define_class_under(rb_mKanayago, "CallNode", rb_cObject);
699
- rb_define_method(rb_cCallNode, "recv", call_node_recv_get, 0);
700
- rb_define_method(rb_cCallNode, "mid", call_node_mid_get, 0);
701
- rb_define_method(rb_cCallNode, "args", call_node_args_get, 0);
702
557
 
703
558
  rb_cFunctionCallNode = rb_define_class_under(rb_mKanayago, "FunctionCallNode", rb_cObject);
704
- rb_define_method(rb_cFunctionCallNode, "mid", function_call_node_mid_get, 0);
705
- rb_define_method(rb_cFunctionCallNode, "args", function_call_node_args_get, 0);
706
559
 
707
560
  rb_cVariableCallNode = rb_define_class_under(rb_mKanayago, "VariableCallNode", rb_cObject);
708
- rb_define_method(rb_cVariableCallNode, "mid", variable_call_node_mid_get, 0);
709
561
 
710
562
  // For Statement Node(e.g. Kanayago::IfStatementNode)
711
563
  Init_StatementNode(rb_mKanayago);
@@ -713,21 +565,14 @@ Init_kanayago(void)
713
565
  rb_cBlockNode = rb_define_class_under(rb_mKanayago, "BlockNode", rb_cArray);
714
566
 
715
567
  rb_cBeginNode = rb_define_class_under(rb_mKanayago, "BeginNode", rb_cObject);
716
- rb_define_method(rb_cBeginNode, "body", begin_node_body_get, 0);
717
568
 
718
569
  rb_cClassNode = rb_define_class_under(rb_mKanayago, "ClassNode", rb_cObject);
719
- rb_define_method(rb_cClassNode, "cpath", class_node_cpath_get, 0);
720
- rb_define_method(rb_cClassNode, "super", class_node_super_get, 0);
721
- rb_define_method(rb_cClassNode, "body", class_node_body_get, 0);
722
570
 
723
571
  rb_cModuleNode = rb_define_class_under(rb_mKanayago, "ModuleNode", rb_cObject);
724
572
 
725
573
  rb_cColon2Node = rb_define_class_under(rb_mKanayago, "Colon2Node", rb_cObject);
726
- rb_define_method(rb_cColon2Node, "mid", colon2_node_mid_get, 0);
727
- rb_define_method(rb_cColon2Node, "head", colon2_node_head_get, 0);
728
574
 
729
575
  rb_cColon3Node = rb_define_class_under(rb_mKanayago, "Colon3Node", rb_cObject);
730
- rb_define_method(rb_cColon3Node, "mid", colon3_node_mid_get, 0);
731
576
 
732
577
  // For Variable Node(e.g. Kanayago::LocalVariableNode)
733
578
  Init_VariableNode(rb_mKanayago);
@@ -7,28 +7,14 @@ scope_node_new(const NODE *node)
7
7
  {
8
8
  VALUE result = rb_class_new_instance(0, 0, rb_cScopeNode);
9
9
 
10
- rb_ivar_set(result, symbol("args"), ast_to_node_instance((const NODE *)(RNODE_SCOPE(node)->nd_args)));
11
- rb_ivar_set(result, symbol("body"), ast_to_node_instance(RNODE_SCOPE(node)->nd_body));
10
+ rb_ivar_set(result, rb_intern("@args"), ast_to_node_instance((const NODE *)(RNODE_SCOPE(node)->nd_args)));
11
+ rb_ivar_set(result, rb_intern("@body"), ast_to_node_instance(RNODE_SCOPE(node)->nd_body));
12
12
 
13
13
  return result;
14
14
  }
15
15
 
16
- static VALUE
17
- scope_node_args_get(VALUE self)
18
- {
19
- return rb_ivar_get(self, symbol("args"));
20
- }
21
-
22
- static VALUE
23
- scope_node_body_get(VALUE self)
24
- {
25
- return rb_ivar_get(self, symbol("body"));
26
- }
27
-
28
16
  void
29
17
  Init_ScopeNode(VALUE module)
30
18
  {
31
19
  rb_cScopeNode = rb_define_class_under(module, "ScopeNode", rb_cObject);
32
- rb_define_method(rb_cScopeNode, "args", scope_node_args_get, 0);
33
- rb_define_method(rb_cScopeNode, "body", scope_node_body_get, 0);
34
20
  }
@@ -21,8 +21,9 @@ VALUE
21
21
  dynamic_variable_node_new(const NODE *node)
22
22
  {
23
23
  VALUE obj = rb_class_new_instance(0, 0, rb_cDynamicVariableNode);
24
+ ID vid = RNODE_DVAR(node)->nd_vid;
24
25
 
25
- rb_ivar_set(obj, rb_intern("@vid"), ID2SYM(RNODE_DVAR(node)->nd_vid));
26
+ rb_ivar_set(obj, rb_intern("@vid"), vid ? ID2SYM(vid) : Qnil);
26
27
 
27
28
  return obj;
28
29
  }
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanayago
4
+ class OperatorCallNode
5
+ attr_reader :recv, :mid, :args
6
+ end
7
+
8
+ class CallNode
9
+ attr_reader :recv, :mid, :args
10
+ end
11
+
12
+ class FunctionCallNode
13
+ attr_reader :mid, :args
14
+ end
15
+
16
+ class VariableCallNode
17
+ attr_reader :mid
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanayago
4
+ class ConstantDeclarationNode
5
+ attr_reader :vid, :else, :value
6
+ end
7
+
8
+ class Colon2Node
9
+ attr_reader :mid, :head
10
+ end
11
+
12
+ class Colon3Node
13
+ attr_reader :mid
14
+ end
15
+ end
@@ -84,4 +84,8 @@ module Kanayago
84
84
  class BackRefNode
85
85
  attr_reader :nth
86
86
  end
87
+
88
+ class SelfNode
89
+ attr_reader :state
90
+ end
87
91
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanayago
4
+ class ScopeNode
5
+ attr_reader :args, :body
6
+ end
7
+
8
+ class BlockNode # rubocop:disable Lint/EmptyClass
9
+ end
10
+
11
+ class ArgumentsNode
12
+ attr_reader :ainfo
13
+ end
14
+ end
@@ -61,10 +61,22 @@ module Kanayago
61
61
  attr_reader :id, :value
62
62
  end
63
63
 
64
+ class DefinitionNode
65
+ attr_reader :mid, :defn
66
+ end
67
+
64
68
  class SingletonDefinitionNode
65
69
  attr_reader :recv, :mid, :defn
66
70
  end
67
71
 
72
+ class ClassNode
73
+ attr_reader :cpath, :super, :body
74
+ end
75
+
76
+ class ModuleNode
77
+ attr_reader :cpath, :super, :body
78
+ end
79
+
68
80
  class SingletonClassNode
69
81
  attr_reader :recv, :body
70
82
  end
@@ -122,6 +134,10 @@ module Kanayago
122
134
  attr_reader :body, :iter
123
135
  end
124
136
 
137
+ class BeginNode
138
+ attr_reader :body
139
+ end
140
+
125
141
  class EnsureNode
126
142
  attr_reader :head, :ensr
127
143
  end
@@ -20,4 +20,8 @@ module Kanayago
20
20
  class GlobalVariableNode
21
21
  attr_reader :vid
22
22
  end
23
+
24
+ class ConstantNode
25
+ attr_reader :vid
26
+ end
23
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kanayago
4
- VERSION = '0.2.0'
4
+ VERSION = '0.4.0'
5
5
  end
data/lib/kanayago.rb CHANGED
@@ -8,26 +8,13 @@ require_relative 'kanayago/string_node'
8
8
  require_relative 'kanayago/statement_node'
9
9
  require_relative 'kanayago/variable_node'
10
10
  require_relative 'kanayago/pattern_node'
11
+ require_relative 'kanayago/call_node'
12
+ require_relative 'kanayago/scope_node'
13
+ require_relative 'kanayago/constant_node'
11
14
 
12
15
  # Parse Ruby code with Ruby's Parser(Universal Parser)
13
16
  module Kanayago
14
17
  def self.parse(source)
15
18
  kanayago_parse(source)
16
19
  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
33
20
  end