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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +261 -0
 - data/README.md +1 -1
 - data/Rakefile +5 -48
 - data/ext/kanayago/extconf.rb +8 -0
 - data/ext/kanayago/kanayago.c +30 -185
 - data/ext/kanayago/scope_node.c +2 -16
 - data/ext/kanayago/variable_node.c +2 -1
 - data/lib/kanayago/call_node.rb +19 -0
 - data/lib/kanayago/constant_node.rb +15 -0
 - data/lib/kanayago/literal_node.rb +4 -0
 - data/lib/kanayago/scope_node.rb +14 -0
 - data/lib/kanayago/statement_node.rb +16 -0
 - data/lib/kanayago/variable_node.rb +4 -0
 - data/lib/kanayago/version.rb +1 -1
 - data/lib/kanayago.rb +3 -16
 - data/script/setup_parser.rb +136 -0
 - metadata +6 -64
 - data/ext/kanayago/ccan/check_type/check_type.h +0 -63
 - data/ext/kanayago/ccan/container_of/container_of.h +0 -142
 - data/ext/kanayago/ccan/list/list.h +0 -791
 - data/ext/kanayago/ccan/str/str.h +0 -17
 - data/ext/kanayago/constant.h +0 -53
 - data/ext/kanayago/id.h +0 -354
 - data/ext/kanayago/id_table.h +0 -54
 - data/ext/kanayago/include/ruby/st.h +0 -199
 - data/ext/kanayago/internal/array.h +0 -154
 - data/ext/kanayago/internal/basic_operators.h +0 -65
 - data/ext/kanayago/internal/bignum.h +0 -245
 - data/ext/kanayago/internal/bits.h +0 -650
 - data/ext/kanayago/internal/compile.h +0 -34
 - data/ext/kanayago/internal/compilers.h +0 -107
 - data/ext/kanayago/internal/complex.h +0 -29
 - data/ext/kanayago/internal/encoding.h +0 -39
 - data/ext/kanayago/internal/error.h +0 -251
 - data/ext/kanayago/internal/fixnum.h +0 -185
 - data/ext/kanayago/internal/gc.h +0 -358
 - data/ext/kanayago/internal/hash.h +0 -194
 - data/ext/kanayago/internal/imemo.h +0 -322
 - data/ext/kanayago/internal/io.h +0 -163
 - data/ext/kanayago/internal/namespace.h +0 -81
 - data/ext/kanayago/internal/numeric.h +0 -275
 - data/ext/kanayago/internal/parse.h +0 -131
 - data/ext/kanayago/internal/rational.h +0 -71
 - data/ext/kanayago/internal/re.h +0 -33
 - data/ext/kanayago/internal/ruby_parser.h +0 -125
 - data/ext/kanayago/internal/sanitizers.h +0 -346
 - data/ext/kanayago/internal/serial.h +0 -23
 - data/ext/kanayago/internal/set_table.h +0 -70
 - data/ext/kanayago/internal/static_assert.h +0 -16
 - data/ext/kanayago/internal/string.h +0 -203
 - data/ext/kanayago/internal/symbol.h +0 -46
 - data/ext/kanayago/internal/thread.h +0 -112
 - data/ext/kanayago/internal/variable.h +0 -74
 - data/ext/kanayago/internal/vm.h +0 -136
 - data/ext/kanayago/internal/warnings.h +0 -16
 - data/ext/kanayago/internal.h +0 -105
 - data/ext/kanayago/lex.c +0 -302
 - data/ext/kanayago/method.h +0 -271
 - data/ext/kanayago/node.c +0 -446
 - data/ext/kanayago/node.h +0 -122
 - data/ext/kanayago/node_name.inc +0 -224
 - data/ext/kanayago/parse.c +0 -27377
 - data/ext/kanayago/parse.h +0 -244
 - data/ext/kanayago/parser_bits.h +0 -564
 - data/ext/kanayago/parser_node.h +0 -32
 - data/ext/kanayago/parser_st.c +0 -165
 - data/ext/kanayago/parser_st.h +0 -162
 - data/ext/kanayago/parser_value.h +0 -106
 - data/ext/kanayago/probes.h +0 -4
 - data/ext/kanayago/ruby_assert.h +0 -14
 - data/ext/kanayago/ruby_atomic.h +0 -66
 - data/ext/kanayago/ruby_parser.c +0 -1137
 - data/ext/kanayago/rubyparser.h +0 -1394
 - data/ext/kanayago/shape.h +0 -444
 - data/ext/kanayago/st.c +0 -3223
 - data/ext/kanayago/symbol.h +0 -116
 - data/ext/kanayago/thread_pthread.h +0 -175
 - data/ext/kanayago/universal_parser.c +0 -211
 - data/ext/kanayago/vm_core.h +0 -2349
 - data/ext/kanayago/vm_opts.h +0 -67
 
    
        data/ext/kanayago/kanayago.c
    CHANGED
    
    | 
         @@ -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,  
     | 
| 
       37 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
       38 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
       67 
     | 
    
         
            -
                rb_ivar_set(result,  
     | 
| 
       68 
     | 
    
         
            -
                rb_ivar_set(result,  
     | 
| 
      
 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,  
     | 
| 
       97 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
       155 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
      
 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,  
     | 
| 
       208 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
       209 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
       275 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
       276 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
       317 
     | 
    
         
            -
                rb_ivar_set(obj,  
     | 
| 
      
 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,  
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       377 
     | 
    
         
            -
                rb_hash_aset(result, symbol(" 
     | 
| 
       378 
     | 
    
         
            -
                rb_hash_aset(result, symbol(" 
     | 
| 
      
 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,  
     | 
| 
      
 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);
         
     | 
    
        data/ext/kanayago/scope_node.c
    CHANGED
    
    | 
         @@ -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,  
     | 
| 
       11 
     | 
    
         
            -
                rb_ivar_set(result,  
     | 
| 
      
 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( 
     | 
| 
      
 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
         
     | 
| 
         @@ -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
         
     | 
    
        data/lib/kanayago/version.rb
    CHANGED
    
    
    
        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
         
     |