ruby-internal 0.8.0 → 0.8.1

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 (36) hide show
  1. data/Rakefile +1 -1
  2. data/bin/ruby-internal-node-dump +1 -1
  3. data/bin/ruby-internal-obfuscate +1 -1
  4. data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +45 -45
  5. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +259 -258
  6. data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +43 -43
  7. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +261 -260
  8. data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +45 -45
  9. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +261 -260
  10. data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +37 -37
  11. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +219 -218
  12. data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +4 -0
  13. data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +41 -41
  14. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +231 -230
  15. data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +4 -0
  16. data/ext/cached/ruby-1.9.2/internal/node/node_type_descrip.c +37 -37
  17. data/ext/cached/ruby-1.9.2/internal/node/nodeinfo.c +206 -205
  18. data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +4 -0
  19. data/ext/cached/ruby-1.9.3/internal/node/node_type_descrip.c +41 -41
  20. data/ext/cached/ruby-1.9.3/internal/node/nodeinfo.c +230 -229
  21. data/ext/internal/binding/block.h +0 -20
  22. data/ext/internal/method/internal_method.h +5 -5
  23. data/ext/internal/module/classpath.c +13 -18
  24. data/ext/internal/module/classpath.h +3 -3
  25. data/ext/internal/module/getcfp.h +12 -0
  26. data/ext/internal/node/block.h +0 -20
  27. data/ext/internal/node/global_entry.h +31 -42
  28. data/ext/internal/node/global_entry.h.rpp +1 -1
  29. data/ext/internal/node/node_type_descrip.c +38 -47
  30. data/ext/internal/node/nodeinfo.c +311 -626
  31. data/ext/internal/node/nodeinfo.h +4 -1
  32. data/ext/internal/proc/block.h +0 -20
  33. data/ext/internal/tag/tag.h +0 -10
  34. data/ext/internal/vm/instruction/insns_info.c +5974 -3
  35. data/ext/internal/vm/instruction/insns_info.h +878 -0
  36. metadata +37 -51
@@ -3,6 +3,7 @@
3
3
 
4
4
  st_table * rb_global_tbl;
5
5
 
6
+ #define global_variable rb_global_variable
6
7
  #define global_entry rb_global_entry
7
8
  #define gvar_getter_t rb_gvar_getter_t
8
9
  #define gvar_setter_t rb_gvar_setter_t
@@ -25,6 +26,9 @@ struct global_variable {
25
26
  #define undef_getter rb_gvar_undef_getter
26
27
  #define undef_setter rb_gvar_undef_setter
27
28
  #define undef_marker rb_gvar_undef_marker
29
+ #define val_getter rb_gvar_val_getter
30
+ #define val_setter rb_gvar_val_setter
31
+ #define val_marker rb_gvar_val_marker
28
32
  struct global_entry*
29
33
  rb_global_entry(ID id)
30
34
  {
@@ -2,62 +2,62 @@
2
2
  #include "version.h"
3
3
 
4
4
  Node_Type_Descrip node_type_descrips_unsorted[] = {
5
- { NODE_ALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "ALIAS" },
5
+ { NODE_ALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "ALIAS" },
6
6
  #ifdef HAVE_NODE_ALLOCA
7
- { NODE_ALLOCA, NEN_CFNC, NEN_CNT, NEN_VALUE, "ALLOCA" },
7
+ { NODE_ALLOCA, NEN_CFNC, NEN_VALUE, NEN_CNT, "ALLOCA" },
8
8
  #endif
9
9
  { NODE_AND, NEN_2ND, NEN_1ST, NEN_NONE, "AND" },
10
- { NODE_ARGS, NEN_OPT, NEN_REST, NEN_CNT, "ARGS" },
10
+ { NODE_ARGS, NEN_REST, NEN_OPT, NEN_CNT, "ARGS" },
11
11
  { NODE_ARGSCAT, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSCAT" },
12
12
  { NODE_ARGSPUSH, NEN_HEAD, NEN_BODY, NEN_NONE, "ARGSPUSH" },
13
- { NODE_ARRAY, NEN_NEXT, NEN_HEAD, NEN_ALEN, "ARRAY" },
14
- { NODE_ATTRASGN, NEN_ARGS, NEN_MID, NEN_RECV, "ATTRASGN" },
13
+ { NODE_ARRAY, NEN_ALEN, NEN_HEAD, NEN_NEXT, "ARRAY" },
14
+ { NODE_ATTRASGN, NEN_RECV, NEN_ARGS, NEN_MID, "ATTRASGN" },
15
15
  { NODE_BACK_REF, NEN_NTH, NEN_CNT, NEN_NONE, "BACK_REF" },
16
16
  { NODE_BEGIN, NEN_BODY, NEN_NONE, NEN_NONE, "BEGIN" },
17
- { NODE_BLOCK, NEN_NEXT, NEN_HEAD, NEN_NONE, "BLOCK" },
17
+ { NODE_BLOCK, NEN_HEAD, NEN_NEXT, NEN_NONE, "BLOCK" },
18
18
  { NODE_BLOCK_ARG, NEN_CNT, NEN_NONE, NEN_NONE, "BLOCK_ARG" },
19
- { NODE_BLOCK_PASS, NEN_ITER, NEN_BODY, NEN_NONE, "BLOCK_PASS" },
19
+ { NODE_BLOCK_PASS, NEN_BODY, NEN_ITER, NEN_NONE, "BLOCK_PASS" },
20
20
  { NODE_BMETHOD, NEN_CVAL, NEN_NONE, NEN_NONE, "BMETHOD" },
21
21
  { NODE_BREAK, NEN_STTS, NEN_NONE, NEN_NONE, "BREAK" },
22
22
  { NODE_CALL, NEN_ARGS, NEN_MID, NEN_RECV, "CALL" },
23
- { NODE_CASE, NEN_NEXT, NEN_HEAD, NEN_BODY, "CASE" },
24
- { NODE_CDECL, NEN_VID, NEN_VALUE, NEN_NONE, "CDECL" },
23
+ { NODE_CASE, NEN_HEAD, NEN_BODY, NEN_NEXT, "CASE" },
24
+ { NODE_CDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CDECL" },
25
25
  { NODE_CLASS, NEN_SUPER, NEN_CPATH, NEN_BODY, "CLASS" },
26
26
  { NODE_COLON2, NEN_HEAD, NEN_MID, NEN_NONE, "COLON2" },
27
27
  { NODE_COLON3, NEN_MID, NEN_NONE, NEN_NONE, "COLON3" },
28
28
  { NODE_CONST, NEN_VID, NEN_NONE, NEN_NONE, "CONST" },
29
29
  { NODE_CVAR, NEN_VID, NEN_NONE, NEN_NONE, "CVAR" },
30
- { NODE_CVASGN, NEN_VID, NEN_VALUE, NEN_NONE, "CVASGN" },
31
- { NODE_CVDECL, NEN_VID, NEN_VALUE, NEN_NONE, "CVDECL" },
32
- { NODE_DASGN, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN" },
33
- { NODE_DASGN_CURR, NEN_VID, NEN_VALUE, NEN_NONE, "DASGN_CURR" },
30
+ { NODE_CVASGN, NEN_VALUE, NEN_VID, NEN_NONE, "CVASGN" },
31
+ { NODE_CVDECL, NEN_VALUE, NEN_VID, NEN_NONE, "CVDECL" },
32
+ { NODE_DASGN, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN" },
33
+ { NODE_DASGN_CURR, NEN_VALUE, NEN_VID, NEN_NONE, "DASGN_CURR" },
34
34
  { NODE_DEFINED, NEN_HEAD, NEN_NONE, NEN_NONE, "DEFINED" },
35
- { NODE_DEFN, NEN_NOEX, NEN_DEFN, NEN_MID, "DEFN" },
36
- { NODE_DEFS, NEN_DEFN, NEN_MID, NEN_RECV, "DEFS" },
37
- { NODE_DOT2, NEN_STATE, NEN_BEG, NEN_END, "DOT2" },
38
- { NODE_DOT3, NEN_STATE, NEN_BEG, NEN_END, "DOT3" },
39
- { NODE_DREGX, NEN_NEXT, NEN_CFLAG, NEN_LIT, "DREGX" },
40
- { NODE_DREGX_ONCE, NEN_NEXT, NEN_CFLAG, NEN_LIT, "DREGX_ONCE" },
41
- { NODE_DSTR, NEN_NEXT, NEN_LIT, NEN_NONE, "DSTR" },
42
- { NODE_DSYM, NEN_NEXT, NEN_LIT, NEN_NONE, "DSYM" },
35
+ { NODE_DEFN, NEN_DEFN, NEN_MID, NEN_NOEX, "DEFN" },
36
+ { NODE_DEFS, NEN_DEFN, NEN_RECV, NEN_MID, "DEFS" },
37
+ { NODE_DOT2, NEN_BEG, NEN_END, NEN_STATE, "DOT2" },
38
+ { NODE_DOT3, NEN_BEG, NEN_END, NEN_STATE, "DOT3" },
39
+ { NODE_DREGX, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX" },
40
+ { NODE_DREGX_ONCE, NEN_LIT, NEN_NEXT, NEN_CFLAG, "DREGX_ONCE" },
41
+ { NODE_DSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DSTR" },
42
+ { NODE_DSYM, NEN_LIT, NEN_NEXT, NEN_NONE, "DSYM" },
43
43
  { NODE_DVAR, NEN_VID, NEN_NONE, NEN_NONE, "DVAR" },
44
- { NODE_DXSTR, NEN_NEXT, NEN_LIT, NEN_NONE, "DXSTR" },
44
+ { NODE_DXSTR, NEN_LIT, NEN_NEXT, NEN_NONE, "DXSTR" },
45
45
  { NODE_ENSURE, NEN_HEAD, NEN_ENSR, NEN_NONE, "ENSURE" },
46
46
  { NODE_EVSTR, NEN_BODY, NEN_NONE, NEN_NONE, "EVSTR" },
47
47
  { NODE_FALSE, NEN_NONE, NEN_NONE, NEN_NONE, "FALSE" },
48
48
  { NODE_FCALL, NEN_ARGS, NEN_MID, NEN_NONE, "FCALL" },
49
49
  { NODE_FLIP2, NEN_CNT, NEN_BEG, NEN_END, "FLIP2" },
50
50
  { NODE_FLIP3, NEN_CNT, NEN_BEG, NEN_END, "FLIP3" },
51
- { NODE_FOR, NEN_ITER, NEN_VAR, NEN_BODY, "FOR" },
52
- { NODE_GASGN, NEN_VID, NEN_ENTRY, NEN_VALUE, "GASGN" },
51
+ { NODE_FOR, NEN_BODY, NEN_ITER, NEN_VAR, "FOR" },
52
+ { NODE_GASGN, NEN_VALUE, NEN_VID, NEN_ENTRY, "GASGN" },
53
53
  { NODE_GVAR, NEN_VID, NEN_ENTRY, NEN_NONE, "GVAR" },
54
54
  { NODE_HASH, NEN_HEAD, NEN_NONE, NEN_NONE, "HASH" },
55
- { NODE_IASGN, NEN_VID, NEN_VALUE, NEN_NONE, "IASGN" },
56
- { NODE_IF, NEN_ELSE, NEN_COND, NEN_BODY, "IF" },
57
- { NODE_IFUNC, NEN_TVAL, NEN_STATE, NEN_CFNC, "IFUNC" },
58
- { NODE_ITER, NEN_ITER, NEN_VAR, NEN_BODY, "ITER" },
55
+ { NODE_IASGN, NEN_VALUE, NEN_VID, NEN_NONE, "IASGN" },
56
+ { NODE_IF, NEN_COND, NEN_BODY, NEN_ELSE, "IF" },
57
+ { NODE_IFUNC, NEN_CFNC, NEN_TVAL, NEN_STATE, "IFUNC" },
58
+ { NODE_ITER, NEN_BODY, NEN_ITER, NEN_VAR, "ITER" },
59
59
  { NODE_IVAR, NEN_VID, NEN_NONE, NEN_NONE, "IVAR" },
60
- { NODE_LASGN, NEN_VID, NEN_CNT, NEN_VALUE, "LASGN" },
60
+ { NODE_LASGN, NEN_VALUE, NEN_VID, NEN_CNT, "LASGN" },
61
61
  { NODE_LIT, NEN_LIT, NEN_NONE, NEN_NONE, "LIT" },
62
62
  { NODE_LVAR, NEN_VID, NEN_CNT, NEN_NONE, "LVAR" },
63
63
  { NODE_MASGN, NEN_ARGS, NEN_HEAD, NEN_VALUE, "MASGN" },
@@ -71,19 +71,19 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
71
71
  { NODE_NTH_REF, NEN_NTH, NEN_CNT, NEN_NONE, "NTH_REF" },
72
72
  { NODE_OPT_N, NEN_BODY, NEN_NONE, NEN_NONE, "OPT_N" },
73
73
  { NODE_OP_ASGN1, NEN_ARGS, NEN_MID, NEN_RECV, "OP_ASGN1" },
74
- { NODE_OP_ASGN2, NEN_NEXT, NEN_RECV, NEN_VALUE, "OP_ASGN2" },
75
- { NODE_OP_ASGN2_ARG, NEN_AID, NEN_MID, NEN_VID, "OP_ASGN2_ARG" },
74
+ { NODE_OP_ASGN2, NEN_RECV, NEN_NEXT, NEN_VALUE, "OP_ASGN2" },
75
+ { NODE_OP_ASGN2_ARG, NEN_VID, NEN_AID, NEN_MID, "OP_ASGN2_ARG" },
76
76
  { NODE_OP_ASGN_AND, NEN_RECV, NEN_VALUE, NEN_NONE, "OP_ASGN_AND" },
77
- { NODE_OP_ASGN_OR, NEN_AID, NEN_RECV, NEN_VALUE, "OP_ASGN_OR" },
77
+ { NODE_OP_ASGN_OR, NEN_AID, NEN_VALUE, NEN_RECV, "OP_ASGN_OR" },
78
78
  { NODE_OR, NEN_2ND, NEN_1ST, NEN_NONE, "OR" },
79
79
  { NODE_POSTEXE, NEN_NONE, NEN_NONE, NEN_NONE, "POSTEXE" },
80
80
  { NODE_REDO, NEN_NONE, NEN_NONE, NEN_NONE, "REDO" },
81
- { NODE_RESBODY, NEN_ARGS, NEN_HEAD, NEN_BODY, "RESBODY" },
82
- { NODE_RESCUE, NEN_ELSE, NEN_HEAD, NEN_RESQ, "RESCUE" },
81
+ { NODE_RESBODY, NEN_HEAD, NEN_BODY, NEN_ARGS, "RESBODY" },
82
+ { NODE_RESCUE, NEN_HEAD, NEN_RESQ, NEN_ELSE, "RESCUE" },
83
83
  { NODE_RETRY, NEN_NONE, NEN_NONE, NEN_NONE, "RETRY" },
84
84
  { NODE_RETURN, NEN_STTS, NEN_NONE, NEN_NONE, "RETURN" },
85
- { NODE_SCLASS, NEN_RECV, NEN_BODY, NEN_NONE, "SCLASS" },
86
- { NODE_SCOPE, NEN_NEXT, NEN_TBL, NEN_RVAL, "SCOPE" },
85
+ { NODE_SCLASS, NEN_BODY, NEN_RECV, NEN_NONE, "SCLASS" },
86
+ { NODE_SCOPE, NEN_TBL, NEN_RVAL, NEN_NEXT, "SCOPE" },
87
87
  { NODE_SELF, NEN_NONE, NEN_NONE, NEN_NONE, "SELF" },
88
88
  { NODE_SPLAT, NEN_HEAD, NEN_NONE, NEN_NONE, "SPLAT" },
89
89
  { NODE_STR, NEN_LIT, NEN_NONE, NEN_NONE, "STR" },
@@ -91,13 +91,13 @@ Node_Type_Descrip node_type_descrips_unsorted[] = {
91
91
  { NODE_TO_ARY, NEN_HEAD, NEN_NONE, NEN_NONE, "TO_ARY" },
92
92
  { NODE_TRUE, NEN_NONE, NEN_NONE, NEN_NONE, "TRUE" },
93
93
  { NODE_UNDEF, NEN_BODY, NEN_NONE, NEN_NONE, "UNDEF" },
94
- { NODE_UNTIL, NEN_STATE, NEN_COND, NEN_BODY, "UNTIL" },
95
- { NODE_VALIAS, NEN_2ND, NEN_1ST, NEN_NONE, "VALIAS" },
94
+ { NODE_UNTIL, NEN_BODY, NEN_COND, NEN_STATE, "UNTIL" },
95
+ { NODE_VALIAS, NEN_1ST, NEN_2ND, NEN_NONE, "VALIAS" },
96
96
  { NODE_VCALL, NEN_MID, NEN_NONE, NEN_NONE, "VCALL" },
97
- { NODE_WHEN, NEN_NEXT, NEN_HEAD, NEN_BODY, "WHEN" },
98
- { NODE_WHILE, NEN_STATE, NEN_COND, NEN_BODY, "WHILE" },
97
+ { NODE_WHEN, NEN_HEAD, NEN_BODY, NEN_NEXT, "WHEN" },
98
+ { NODE_WHILE, NEN_BODY, NEN_COND, NEN_STATE, "WHILE" },
99
99
  { NODE_XSTR, NEN_LIT, NEN_NONE, NEN_NONE, "XSTR" },
100
- { NODE_YIELD, NEN_STATE, NEN_HEAD, NEN_NONE, "YIELD" },
100
+ { NODE_YIELD, NEN_HEAD, NEN_STATE, NEN_NONE, "YIELD" },
101
101
  { NODE_ZARRAY, NEN_NONE, NEN_NONE, NEN_NONE, "ZARRAY" },
102
102
  { NODE_ZSUPER, NEN_NONE, NEN_NONE, NEN_NONE, "ZSUPER" },
103
103
  { NODE_LAST, NEN_NONE, NEN_NONE, NEN_NONE, "LAST" },
@@ -2822,10 +2822,10 @@ void define_node_subclass_methods()
2822
2822
  rb_iv_set(rb_cALIAS, "__member__", members);
2823
2823
  rb_iv_set(rb_cALIAS, "__type__", INT2NUM(NODE_ALIAS));
2824
2824
  rb_define_singleton_method(rb_cALIAS, "members", node_s_members, 0);
2825
- rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2826
- rb_ary_push(members, rb_str_new2("second"));
2827
2825
  rb_define_method(rb_cALIAS, "first", node_1st, 0);
2828
2826
  rb_ary_push(members, rb_str_new2("first"));
2827
+ rb_define_method(rb_cALIAS, "second", node_2nd, 0);
2828
+ rb_ary_push(members, rb_str_new2("second"));
2829
2829
  }
2830
2830
 
2831
2831
  /* Document-class: Node::ALLOCA
@@ -2849,17 +2849,17 @@ void define_node_subclass_methods()
2849
2849
  rb_define_method(rb_cALLOCA, "cfnc", node_cfnc, 0);
2850
2850
  rb_ary_push(members, rb_str_new2("cfnc"));
2851
2851
 
2852
- /* Document-method: cnt
2853
- * the number of bytes allocated
2854
- */
2855
- rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2856
- rb_ary_push(members, rb_str_new2("cnt"));
2857
-
2858
2852
  /* Document-method: value
2859
2853
  * a pointer to the previously allocated temporary node
2860
2854
  */
2861
2855
  rb_define_method(rb_cALLOCA, "value", node_value, 0);
2862
2856
  rb_ary_push(members, rb_str_new2("value"));
2857
+
2858
+ /* Document-method: cnt
2859
+ * the number of bytes allocated
2860
+ */
2861
+ rb_define_method(rb_cALLOCA, "cnt", node_cnt, 0);
2862
+ rb_ary_push(members, rb_str_new2("cnt"));
2863
2863
  }
2864
2864
  #endif
2865
2865
 
@@ -2902,6 +2902,12 @@ void define_node_subclass_methods()
2902
2902
  rb_iv_set(rb_cARGS, "__type__", INT2NUM(NODE_ARGS));
2903
2903
  rb_define_singleton_method(rb_cARGS, "members", node_s_members, 0);
2904
2904
 
2905
+ /* Document-method: rest
2906
+ * an assignment node to assign the rest arg, if it is present
2907
+ */
2908
+ rb_define_method(rb_cARGS, "rest", node_rest, 0);
2909
+ rb_ary_push(members, rb_str_new2("rest"));
2910
+
2905
2911
  /* Document-method: opt
2906
2912
  * a list of assignment nodes to assign default values to the
2907
2913
  * optional arguments if no argument is specified
@@ -2909,12 +2915,6 @@ void define_node_subclass_methods()
2909
2915
  rb_define_method(rb_cARGS, "opt", node_opt, 0);
2910
2916
  rb_ary_push(members, rb_str_new2("opt"));
2911
2917
 
2912
- /* Document-method: rest
2913
- * an assignment node to assign the rest arg, if it is present
2914
- */
2915
- rb_define_method(rb_cARGS, "rest", node_rest, 0);
2916
- rb_ary_push(members, rb_str_new2("rest"));
2917
-
2918
2918
  /* Document-method: cnt
2919
2919
  * the number of required arguments
2920
2920
  */
@@ -2985,20 +2985,20 @@ void define_node_subclass_methods()
2985
2985
  rb_iv_set(rb_cARRAY, "__member__", members);
2986
2986
  rb_iv_set(rb_cARRAY, "__type__", INT2NUM(NODE_ARRAY));
2987
2987
  rb_define_singleton_method(rb_cARRAY, "members", node_s_members, 0);
2988
-
2989
- /* Document-method: next
2990
- * the tail of the array
2991
- */
2992
- rb_define_method(rb_cARRAY, "next", node_next, 0);
2993
- rb_ary_push(members, rb_str_new2("next"));
2988
+ rb_define_method(rb_cARRAY, "alen", node_alen, 0);
2989
+ rb_ary_push(members, rb_str_new2("alen"));
2994
2990
 
2995
2991
  /* Document-method: head
2996
2992
  * the first element of the array
2997
2993
  */
2998
2994
  rb_define_method(rb_cARRAY, "head", node_head, 0);
2999
2995
  rb_ary_push(members, rb_str_new2("head"));
3000
- rb_define_method(rb_cARRAY, "alen", node_alen, 0);
3001
- rb_ary_push(members, rb_str_new2("alen"));
2996
+
2997
+ /* Document-method: next
2998
+ * the tail of the array
2999
+ */
3000
+ rb_define_method(rb_cARRAY, "next", node_next, 0);
3001
+ rb_ary_push(members, rb_str_new2("next"));
3002
3002
  }
3003
3003
 
3004
3004
  /* Document-class: Node::ATTRASGN
@@ -3015,6 +3015,12 @@ void define_node_subclass_methods()
3015
3015
  rb_iv_set(rb_cATTRASGN, "__type__", INT2NUM(NODE_ATTRASGN));
3016
3016
  rb_define_singleton_method(rb_cATTRASGN, "members", node_s_members, 0);
3017
3017
 
3018
+ /* Document-method: recv
3019
+ * the receiver of the method
3020
+ */
3021
+ rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3022
+ rb_ary_push(members, rb_str_new2("recv"));
3023
+
3018
3024
  /* Document-method: args
3019
3025
  * the arguments to the method
3020
3026
  */
@@ -3026,12 +3032,6 @@ void define_node_subclass_methods()
3026
3032
  */
3027
3033
  rb_define_method(rb_cATTRASGN, "mid", node_mid, 0);
3028
3034
  rb_ary_push(members, rb_str_new2("mid"));
3029
-
3030
- /* Document-method: recv
3031
- * the receiver of the method
3032
- */
3033
- rb_define_method(rb_cATTRASGN, "recv", node_recv, 0);
3034
- rb_ary_push(members, rb_str_new2("recv"));
3035
3035
  }
3036
3036
 
3037
3037
  /* Document-class: Node::BACK_REF
@@ -3098,17 +3098,17 @@ void define_node_subclass_methods()
3098
3098
  rb_iv_set(rb_cBLOCK, "__type__", INT2NUM(NODE_BLOCK));
3099
3099
  rb_define_singleton_method(rb_cBLOCK, "members", node_s_members, 0);
3100
3100
 
3101
- /* Document-method: next
3102
- * the second expression in the block of code
3103
- */
3104
- rb_define_method(rb_cBLOCK, "next", node_next, 0);
3105
- rb_ary_push(members, rb_str_new2("next"));
3106
-
3107
3101
  /* Document-method: head
3108
3102
  * the first expression in the block of code
3109
3103
  */
3110
3104
  rb_define_method(rb_cBLOCK, "head", node_head, 0);
3111
3105
  rb_ary_push(members, rb_str_new2("head"));
3106
+
3107
+ /* Document-method: next
3108
+ * the second expression in the block of code
3109
+ */
3110
+ rb_define_method(rb_cBLOCK, "next", node_next, 0);
3111
+ rb_ary_push(members, rb_str_new2("next"));
3112
3112
  }
3113
3113
 
3114
3114
  /* Document-class: Node::BLOCK_ARG
@@ -3149,17 +3149,17 @@ void define_node_subclass_methods()
3149
3149
  rb_iv_set(rb_cBLOCK_PASS, "__type__", INT2NUM(NODE_BLOCK_PASS));
3150
3150
  rb_define_singleton_method(rb_cBLOCK_PASS, "members", node_s_members, 0);
3151
3151
 
3152
- /* Document-method: iter
3153
- * an expression which calls a method
3154
- */
3155
- rb_define_method(rb_cBLOCK_PASS, "iter", node_iter, 0);
3156
- rb_ary_push(members, rb_str_new2("iter"));
3157
-
3158
3152
  /* Document-method: body
3159
3153
  * the object to pass as a block
3160
3154
  */
3161
3155
  rb_define_method(rb_cBLOCK_PASS, "body", node_body, 0);
3162
3156
  rb_ary_push(members, rb_str_new2("body"));
3157
+
3158
+ /* Document-method: iter
3159
+ * an expression which calls a method
3160
+ */
3161
+ rb_define_method(rb_cBLOCK_PASS, "iter", node_iter, 0);
3162
+ rb_ary_push(members, rb_str_new2("iter"));
3163
3163
  }
3164
3164
 
3165
3165
  /* Document-class: Node::BMETHOD
@@ -3249,8 +3249,6 @@ void define_node_subclass_methods()
3249
3249
  rb_iv_set(rb_cCASE, "__member__", members);
3250
3250
  rb_iv_set(rb_cCASE, "__type__", INT2NUM(NODE_CASE));
3251
3251
  rb_define_singleton_method(rb_cCASE, "members", node_s_members, 0);
3252
- rb_define_method(rb_cCASE, "next", node_next, 0);
3253
- rb_ary_push(members, rb_str_new2("next"));
3254
3252
 
3255
3253
  /* Document-method: head
3256
3254
  * the value to select on
@@ -3264,6 +3262,8 @@ void define_node_subclass_methods()
3264
3262
  */
3265
3263
  rb_define_method(rb_cCASE, "body", node_body, 0);
3266
3264
  rb_ary_push(members, rb_str_new2("body"));
3265
+ rb_define_method(rb_cCASE, "next", node_next, 0);
3266
+ rb_ary_push(members, rb_str_new2("next"));
3267
3267
  }
3268
3268
 
3269
3269
  /* Document-class: Node::CDECL
@@ -3278,17 +3278,17 @@ void define_node_subclass_methods()
3278
3278
  rb_iv_set(rb_cCDECL, "__type__", INT2NUM(NODE_CDECL));
3279
3279
  rb_define_singleton_method(rb_cCDECL, "members", node_s_members, 0);
3280
3280
 
3281
- /* Document-method: vid
3282
- * the name of the constant to be assigned, all uppercase
3283
- */
3284
- rb_define_method(rb_cCDECL, "vid", node_vid, 0);
3285
- rb_ary_push(members, rb_str_new2("vid"));
3286
-
3287
3281
  /* Document-method: value
3288
3282
  * the value to be assigned to the constant
3289
3283
  */
3290
3284
  rb_define_method(rb_cCDECL, "value", node_value, 0);
3291
3285
  rb_ary_push(members, rb_str_new2("value"));
3286
+
3287
+ /* Document-method: vid
3288
+ * the name of the constant to be assigned, all uppercase
3289
+ */
3290
+ rb_define_method(rb_cCDECL, "vid", node_vid, 0);
3291
+ rb_ary_push(members, rb_str_new2("vid"));
3292
3292
  }
3293
3293
 
3294
3294
  /* Document-class: Node::CLASS
@@ -3434,18 +3434,18 @@ void define_node_subclass_methods()
3434
3434
  rb_iv_set(rb_cCVASGN, "__type__", INT2NUM(NODE_CVASGN));
3435
3435
  rb_define_singleton_method(rb_cCVASGN, "members", node_s_members, 0);
3436
3436
 
3437
- /* Document-method: vid
3438
- * the name of the class variable to assign
3439
- */
3440
- rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3441
- rb_ary_push(members, rb_str_new2("vid"));
3442
-
3443
3437
  /* Document-method: value
3444
3438
  * an expression whose result is the new value of the class
3445
3439
  * variable
3446
3440
  */
3447
3441
  rb_define_method(rb_cCVASGN, "value", node_value, 0);
3448
3442
  rb_ary_push(members, rb_str_new2("value"));
3443
+
3444
+ /* Document-method: vid
3445
+ * the name of the class variable to assign
3446
+ */
3447
+ rb_define_method(rb_cCVASGN, "vid", node_vid, 0);
3448
+ rb_ary_push(members, rb_str_new2("vid"));
3449
3449
  }
3450
3450
 
3451
3451
  /* Document-class: Node::CVDECL
@@ -3461,18 +3461,18 @@ void define_node_subclass_methods()
3461
3461
  rb_iv_set(rb_cCVDECL, "__type__", INT2NUM(NODE_CVDECL));
3462
3462
  rb_define_singleton_method(rb_cCVDECL, "members", node_s_members, 0);
3463
3463
 
3464
- /* Document-method: vid
3465
- * the name of the class variable to assign
3466
- */
3467
- rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3468
- rb_ary_push(members, rb_str_new2("vid"));
3469
-
3470
3464
  /* Document-method: value
3471
3465
  * an expression whose result is the new value of the class
3472
3466
  * variable
3473
3467
  */
3474
3468
  rb_define_method(rb_cCVDECL, "value", node_value, 0);
3475
3469
  rb_ary_push(members, rb_str_new2("value"));
3470
+
3471
+ /* Document-method: vid
3472
+ * the name of the class variable to assign
3473
+ */
3474
+ rb_define_method(rb_cCVDECL, "vid", node_vid, 0);
3475
+ rb_ary_push(members, rb_str_new2("vid"));
3476
3476
  }
3477
3477
 
3478
3478
  /* Document-class: Node::DASGN
@@ -3495,17 +3495,17 @@ void define_node_subclass_methods()
3495
3495
  rb_iv_set(rb_cDASGN, "__type__", INT2NUM(NODE_DASGN));
3496
3496
  rb_define_singleton_method(rb_cDASGN, "members", node_s_members, 0);
3497
3497
 
3498
- /* Document-method: vid
3499
- * the name of the local variable
3500
- */
3501
- rb_define_method(rb_cDASGN, "vid", node_vid, 0);
3502
- rb_ary_push(members, rb_str_new2("vid"));
3503
-
3504
3498
  /* Document-method: value
3505
3499
  * the value to assign to the local variable
3506
3500
  */
3507
3501
  rb_define_method(rb_cDASGN, "value", node_value, 0);
3508
3502
  rb_ary_push(members, rb_str_new2("value"));
3503
+
3504
+ /* Document-method: vid
3505
+ * the name of the local variable
3506
+ */
3507
+ rb_define_method(rb_cDASGN, "vid", node_vid, 0);
3508
+ rb_ary_push(members, rb_str_new2("vid"));
3509
3509
  }
3510
3510
 
3511
3511
  /* Document-class: Node::DASGN_CURR
@@ -3520,17 +3520,17 @@ void define_node_subclass_methods()
3520
3520
  rb_iv_set(rb_cDASGN_CURR, "__type__", INT2NUM(NODE_DASGN_CURR));
3521
3521
  rb_define_singleton_method(rb_cDASGN_CURR, "members", node_s_members, 0);
3522
3522
 
3523
- /* Document-method: vid
3524
- * the name of the local variable
3525
- */
3526
- rb_define_method(rb_cDASGN_CURR, "vid", node_vid, 0);
3527
- rb_ary_push(members, rb_str_new2("vid"));
3528
-
3529
3523
  /* Document-method: value
3530
3524
  * the value to assign to the local variable
3531
3525
  */
3532
3526
  rb_define_method(rb_cDASGN_CURR, "value", node_value, 0);
3533
3527
  rb_ary_push(members, rb_str_new2("value"));
3528
+
3529
+ /* Document-method: vid
3530
+ * the name of the local variable
3531
+ */
3532
+ rb_define_method(rb_cDASGN_CURR, "vid", node_vid, 0);
3533
+ rb_ary_push(members, rb_str_new2("vid"));
3534
3534
  }
3535
3535
 
3536
3536
  /* Document-class: Node::DEFINED
@@ -3566,12 +3566,6 @@ void define_node_subclass_methods()
3566
3566
  rb_iv_set(rb_cDEFN, "__type__", INT2NUM(NODE_DEFN));
3567
3567
  rb_define_singleton_method(rb_cDEFN, "members", node_s_members, 0);
3568
3568
 
3569
- /* Document-method: noex
3570
- * the flags which should be used to define the method
3571
- */
3572
- rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3573
- rb_ary_push(members, rb_str_new2("noex"));
3574
-
3575
3569
  /* Document-method: defn
3576
3570
  * the body of the method definition
3577
3571
  */
@@ -3583,6 +3577,12 @@ void define_node_subclass_methods()
3583
3577
  */
3584
3578
  rb_define_method(rb_cDEFN, "mid", node_mid, 0);
3585
3579
  rb_ary_push(members, rb_str_new2("mid"));
3580
+
3581
+ /* Document-method: noex
3582
+ * the flags which should be used to define the method
3583
+ */
3584
+ rb_define_method(rb_cDEFN, "noex", node_noex, 0);
3585
+ rb_ary_push(members, rb_str_new2("noex"));
3586
3586
  }
3587
3587
 
3588
3588
  /* Document-class: Node::DEFS
@@ -3601,17 +3601,17 @@ void define_node_subclass_methods()
3601
3601
  rb_define_method(rb_cDEFS, "defn", node_defn, 0);
3602
3602
  rb_ary_push(members, rb_str_new2("defn"));
3603
3603
 
3604
- /* Document-method: mid
3605
- * the name of the method* defn the body of the method
3606
- */
3607
- rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3608
- rb_ary_push(members, rb_str_new2("mid"));
3609
-
3610
3604
  /* Document-method: recv
3611
3605
  * the object to whose singleton class the new method is to be added
3612
3606
  */
3613
3607
  rb_define_method(rb_cDEFS, "recv", node_recv, 0);
3614
3608
  rb_ary_push(members, rb_str_new2("recv"));
3609
+
3610
+ /* Document-method: mid
3611
+ * the name of the method* defn the body of the method
3612
+ */
3613
+ rb_define_method(rb_cDEFS, "mid", node_mid, 0);
3614
+ rb_ary_push(members, rb_str_new2("mid"));
3615
3615
  }
3616
3616
 
3617
3617
  /* Document-class: Node::DOT2
@@ -3626,8 +3626,6 @@ void define_node_subclass_methods()
3626
3626
  rb_iv_set(rb_cDOT2, "__member__", members);
3627
3627
  rb_iv_set(rb_cDOT2, "__type__", INT2NUM(NODE_DOT2));
3628
3628
  rb_define_singleton_method(rb_cDOT2, "members", node_s_members, 0);
3629
- rb_define_method(rb_cDOT2, "state", node_state, 0);
3630
- rb_ary_push(members, rb_str_new2("state"));
3631
3629
 
3632
3630
  /* Document-method: beg
3633
3631
  * the beginning of the range
@@ -3640,6 +3638,8 @@ void define_node_subclass_methods()
3640
3638
  */
3641
3639
  rb_define_method(rb_cDOT2, "end", node_end, 0);
3642
3640
  rb_ary_push(members, rb_str_new2("end"));
3641
+ rb_define_method(rb_cDOT2, "state", node_state, 0);
3642
+ rb_ary_push(members, rb_str_new2("state"));
3643
3643
  }
3644
3644
 
3645
3645
  /* Document-class: Node::DOT3
@@ -3654,8 +3654,6 @@ void define_node_subclass_methods()
3654
3654
  rb_iv_set(rb_cDOT3, "__member__", members);
3655
3655
  rb_iv_set(rb_cDOT3, "__type__", INT2NUM(NODE_DOT3));
3656
3656
  rb_define_singleton_method(rb_cDOT3, "members", node_s_members, 0);
3657
- rb_define_method(rb_cDOT3, "state", node_state, 0);
3658
- rb_ary_push(members, rb_str_new2("state"));
3659
3657
 
3660
3658
  /* Document-method: beg
3661
3659
  * the beginning of the range
@@ -3668,6 +3666,8 @@ void define_node_subclass_methods()
3668
3666
  */
3669
3667
  rb_define_method(rb_cDOT3, "end", node_end, 0);
3670
3668
  rb_ary_push(members, rb_str_new2("end"));
3669
+ rb_define_method(rb_cDOT3, "state", node_state, 0);
3670
+ rb_ary_push(members, rb_str_new2("state"));
3671
3671
  }
3672
3672
 
3673
3673
  /* Document-class: Node::DREGX
@@ -3686,6 +3686,12 @@ void define_node_subclass_methods()
3686
3686
  rb_iv_set(rb_cDREGX, "__type__", INT2NUM(NODE_DREGX));
3687
3687
  rb_define_singleton_method(rb_cDREGX, "members", node_s_members, 0);
3688
3688
 
3689
+ /* Document-method: lit
3690
+ * a string
3691
+ */
3692
+ rb_define_method(rb_cDREGX, "lit", node_lit, 0);
3693
+ rb_ary_push(members, rb_str_new2("lit"));
3694
+
3689
3695
  /* Document-method: next
3690
3696
  * a list of expressions to be appended onto the string
3691
3697
  */
@@ -3708,12 +3714,6 @@ void define_node_subclass_methods()
3708
3714
  */
3709
3715
  rb_define_method(rb_cDREGX, "cflag", node_cflag, 0);
3710
3716
  rb_ary_push(members, rb_str_new2("cflag"));
3711
-
3712
- /* Document-method: lit
3713
- * a string
3714
- */
3715
- rb_define_method(rb_cDREGX, "lit", node_lit, 0);
3716
- rb_ary_push(members, rb_str_new2("lit"));
3717
3717
  }
3718
3718
 
3719
3719
  /* Document-class: Node::DREGX_ONCE
@@ -3729,6 +3729,12 @@ void define_node_subclass_methods()
3729
3729
  rb_iv_set(rb_cDREGX_ONCE, "__type__", INT2NUM(NODE_DREGX_ONCE));
3730
3730
  rb_define_singleton_method(rb_cDREGX_ONCE, "members", node_s_members, 0);
3731
3731
 
3732
+ /* Document-method: lit
3733
+ * a string
3734
+ */
3735
+ rb_define_method(rb_cDREGX_ONCE, "lit", node_lit, 0);
3736
+ rb_ary_push(members, rb_str_new2("lit"));
3737
+
3732
3738
  /* Document-method: next
3733
3739
  * a list of expressions to be appended onto the string
3734
3740
  */
@@ -3741,12 +3747,6 @@ void define_node_subclass_methods()
3741
3747
  */
3742
3748
  rb_define_method(rb_cDREGX_ONCE, "cflag", node_cflag, 0);
3743
3749
  rb_ary_push(members, rb_str_new2("cflag"));
3744
-
3745
- /* Document-method: lit
3746
- * a string
3747
- */
3748
- rb_define_method(rb_cDREGX_ONCE, "lit", node_lit, 0);
3749
- rb_ary_push(members, rb_str_new2("lit"));
3750
3750
  }
3751
3751
 
3752
3752
  /* Document-class: Node::DSTR
@@ -3765,17 +3765,17 @@ void define_node_subclass_methods()
3765
3765
  rb_iv_set(rb_cDSTR, "__type__", INT2NUM(NODE_DSTR));
3766
3766
  rb_define_singleton_method(rb_cDSTR, "members", node_s_members, 0);
3767
3767
 
3768
- /* Document-method: next
3769
- * a list of expressions to be appended onto the string
3770
- */
3771
- rb_define_method(rb_cDSTR, "next", node_next, 0);
3772
- rb_ary_push(members, rb_str_new2("next"));
3773
-
3774
3768
  /* Document-method: lit
3775
3769
  * a string
3776
3770
  */
3777
3771
  rb_define_method(rb_cDSTR, "lit", node_lit, 0);
3778
3772
  rb_ary_push(members, rb_str_new2("lit"));
3773
+
3774
+ /* Document-method: next
3775
+ * a list of expressions to be appended onto the string
3776
+ */
3777
+ rb_define_method(rb_cDSTR, "next", node_next, 0);
3778
+ rb_ary_push(members, rb_str_new2("next"));
3779
3779
  }
3780
3780
 
3781
3781
  /* Document-class: Node::DSYM
@@ -3796,10 +3796,10 @@ void define_node_subclass_methods()
3796
3796
  rb_iv_set(rb_cDSYM, "__member__", members);
3797
3797
  rb_iv_set(rb_cDSYM, "__type__", INT2NUM(NODE_DSYM));
3798
3798
  rb_define_singleton_method(rb_cDSYM, "members", node_s_members, 0);
3799
- rb_define_method(rb_cDSYM, "next", node_next, 0);
3800
- rb_ary_push(members, rb_str_new2("next"));
3801
3799
  rb_define_method(rb_cDSYM, "lit", node_lit, 0);
3802
3800
  rb_ary_push(members, rb_str_new2("lit"));
3801
+ rb_define_method(rb_cDSYM, "next", node_next, 0);
3802
+ rb_ary_push(members, rb_str_new2("next"));
3803
3803
  }
3804
3804
 
3805
3805
  /* Document-class: Node::DVAR
@@ -3842,17 +3842,17 @@ void define_node_subclass_methods()
3842
3842
  rb_iv_set(rb_cDXSTR, "__type__", INT2NUM(NODE_DXSTR));
3843
3843
  rb_define_singleton_method(rb_cDXSTR, "members", node_s_members, 0);
3844
3844
 
3845
- /* Document-method: next
3846
- * a list of expressions to be appended onto the string
3847
- */
3848
- rb_define_method(rb_cDXSTR, "next", node_next, 0);
3849
- rb_ary_push(members, rb_str_new2("next"));
3850
-
3851
3845
  /* Document-method: lit
3852
3846
  * a string
3853
3847
  */
3854
3848
  rb_define_method(rb_cDXSTR, "lit", node_lit, 0);
3855
3849
  rb_ary_push(members, rb_str_new2("lit"));
3850
+
3851
+ /* Document-method: next
3852
+ * a list of expressions to be appended onto the string
3853
+ */
3854
+ rb_define_method(rb_cDXSTR, "next", node_next, 0);
3855
+ rb_ary_push(members, rb_str_new2("next"));
3856
3856
  }
3857
3857
 
3858
3858
  /* Document-class: Node::ENSURE
@@ -4041,6 +4041,12 @@ void define_node_subclass_methods()
4041
4041
  rb_iv_set(rb_cFOR, "__type__", INT2NUM(NODE_FOR));
4042
4042
  rb_define_singleton_method(rb_cFOR, "members", node_s_members, 0);
4043
4043
 
4044
+ /* Document-method: body
4045
+ * the body of the loop
4046
+ */
4047
+ rb_define_method(rb_cFOR, "body", node_body, 0);
4048
+ rb_ary_push(members, rb_str_new2("body"));
4049
+
4044
4050
  /* Document-method: iter
4045
4051
  * the sequence over which to iterate
4046
4052
  */
@@ -4054,12 +4060,6 @@ void define_node_subclass_methods()
4054
4060
  */
4055
4061
  rb_define_method(rb_cFOR, "var", node_var, 0);
4056
4062
  rb_ary_push(members, rb_str_new2("var"));
4057
-
4058
- /* Document-method: body
4059
- * the body of the loop
4060
- */
4061
- rb_define_method(rb_cFOR, "body", node_body, 0);
4062
- rb_ary_push(members, rb_str_new2("body"));
4063
4063
  }
4064
4064
 
4065
4065
  /* Document-class: Node::GASGN
@@ -4073,6 +4073,12 @@ void define_node_subclass_methods()
4073
4073
  rb_iv_set(rb_cGASGN, "__type__", INT2NUM(NODE_GASGN));
4074
4074
  rb_define_singleton_method(rb_cGASGN, "members", node_s_members, 0);
4075
4075
 
4076
+ /* Document-method: value
4077
+ * an expression whose result is the new value of the global variable
4078
+ */
4079
+ rb_define_method(rb_cGASGN, "value", node_value, 0);
4080
+ rb_ary_push(members, rb_str_new2("value"));
4081
+
4076
4082
  /* Document-method: vid
4077
4083
  * the name of the global variable, with a leading '$' character.
4078
4084
  */
@@ -4080,12 +4086,6 @@ void define_node_subclass_methods()
4080
4086
  rb_ary_push(members, rb_str_new2("vid"));
4081
4087
  rb_define_method(rb_cGASGN, "entry", node_entry, 0);
4082
4088
  rb_ary_push(members, rb_str_new2("entry"));
4083
-
4084
- /* Document-method: value
4085
- * an expression whose result is the new value of the global variable
4086
- */
4087
- rb_define_method(rb_cGASGN, "value", node_value, 0);
4088
- rb_ary_push(members, rb_str_new2("value"));
4089
4089
  }
4090
4090
 
4091
4091
  /* Document-class: Node::GVAR
@@ -4138,17 +4138,17 @@ void define_node_subclass_methods()
4138
4138
  rb_iv_set(rb_cIASGN, "__type__", INT2NUM(NODE_IASGN));
4139
4139
  rb_define_singleton_method(rb_cIASGN, "members", node_s_members, 0);
4140
4140
 
4141
- /* Document-method: vid
4142
- * the name of the instance variable, with a leading '@' sign
4143
- */
4144
- rb_define_method(rb_cIASGN, "vid", node_vid, 0);
4145
- rb_ary_push(members, rb_str_new2("vid"));
4146
-
4147
4141
  /* Document-method: value
4148
4142
  * the value to assign to the instance variable
4149
4143
  */
4150
4144
  rb_define_method(rb_cIASGN, "value", node_value, 0);
4151
4145
  rb_ary_push(members, rb_str_new2("value"));
4146
+
4147
+ /* Document-method: vid
4148
+ * the name of the instance variable, with a leading '@' sign
4149
+ */
4150
+ rb_define_method(rb_cIASGN, "vid", node_vid, 0);
4151
+ rb_ary_push(members, rb_str_new2("vid"));
4152
4152
  }
4153
4153
 
4154
4154
  /* Document-class: Node::IF
@@ -4171,6 +4171,7 @@ void define_node_subclass_methods()
4171
4171
  *
4172
4172
  * A conditional block using elsif has another IF node as the else
4173
4173
  * expression.
4174
+ *
4174
4175
  */
4175
4176
  {
4176
4177
  VALUE rb_cIF = rb_define_class_under(rb_cNode, "IF", rb_cNode);
@@ -4180,13 +4181,6 @@ void define_node_subclass_methods()
4180
4181
  rb_iv_set(rb_cIF, "__type__", INT2NUM(NODE_IF));
4181
4182
  rb_define_singleton_method(rb_cIF, "members", node_s_members, 0);
4182
4183
 
4183
- /* Document-method: else
4184
- * the expression to evaluate if the expression is false, or false
4185
- * if the expression is empty
4186
- */
4187
- rb_define_method(rb_cIF, "else", node_else, 0);
4188
- rb_ary_push(members, rb_str_new2("else"));
4189
-
4190
4184
  /* Document-method: cond
4191
4185
  * the condition to evaluate
4192
4186
  */
@@ -4199,6 +4193,13 @@ void define_node_subclass_methods()
4199
4193
  */
4200
4194
  rb_define_method(rb_cIF, "body", node_body, 0);
4201
4195
  rb_ary_push(members, rb_str_new2("body"));
4196
+
4197
+ /* Document-method: else
4198
+ * the expression to evaluate if the expression is false, or false
4199
+ * if the expression is empty
4200
+ */
4201
+ rb_define_method(rb_cIF, "else", node_else, 0);
4202
+ rb_ary_push(members, rb_str_new2("else"));
4202
4203
  }
4203
4204
 
4204
4205
  /* Document-class: Node::IFUNC
@@ -4212,6 +4213,12 @@ void define_node_subclass_methods()
4212
4213
  rb_iv_set(rb_cIFUNC, "__type__", INT2NUM(NODE_IFUNC));
4213
4214
  rb_define_singleton_method(rb_cIFUNC, "members", node_s_members, 0);
4214
4215
 
4216
+ /* Document-method: cfnc
4217
+ * a pointer to the C function to which to yield
4218
+ */
4219
+ rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
4220
+ rb_ary_push(members, rb_str_new2("cfnc"));
4221
+
4215
4222
  /* Document-method: tval
4216
4223
  * the user-specified data to be passed as the second argument to
4217
4224
  * cfnc
@@ -4224,12 +4231,6 @@ void define_node_subclass_methods()
4224
4231
  */
4225
4232
  rb_define_method(rb_cIFUNC, "state", node_state, 0);
4226
4233
  rb_ary_push(members, rb_str_new2("state"));
4227
-
4228
- /* Document-method: cfnc
4229
- * a pointer to the C function to which to yield
4230
- */
4231
- rb_define_method(rb_cIFUNC, "cfnc", node_cfnc, 0);
4232
- rb_ary_push(members, rb_str_new2("cfnc"));
4233
4234
  }
4234
4235
 
4235
4236
  /* Document-class: Node::ITER
@@ -4253,6 +4254,12 @@ void define_node_subclass_methods()
4253
4254
  rb_iv_set(rb_cITER, "__type__", INT2NUM(NODE_ITER));
4254
4255
  rb_define_singleton_method(rb_cITER, "members", node_s_members, 0);
4255
4256
 
4257
+ /* Document-method: body
4258
+ * the body of the loop
4259
+ */
4260
+ rb_define_method(rb_cITER, "body", node_body, 0);
4261
+ rb_ary_push(members, rb_str_new2("body"));
4262
+
4256
4263
  /* Document-method: iter
4257
4264
  * an expression which calls the desired iteration method, usually
4258
4265
  * recv.each
@@ -4267,12 +4274,6 @@ void define_node_subclass_methods()
4267
4274
  */
4268
4275
  rb_define_method(rb_cITER, "var", node_var, 0);
4269
4276
  rb_ary_push(members, rb_str_new2("var"));
4270
-
4271
- /* Document-method: body
4272
- * the body of the loop
4273
- */
4274
- rb_define_method(rb_cITER, "body", node_body, 0);
4275
- rb_ary_push(members, rb_str_new2("body"));
4276
4277
  }
4277
4278
 
4278
4279
  /* Document-class: Node::IVAR
@@ -4307,6 +4308,12 @@ void define_node_subclass_methods()
4307
4308
  rb_iv_set(rb_cLASGN, "__type__", INT2NUM(NODE_LASGN));
4308
4309
  rb_define_singleton_method(rb_cLASGN, "members", node_s_members, 0);
4309
4310
 
4311
+ /* Document-method: value
4312
+ * the value to assign to the local variable
4313
+ */
4314
+ rb_define_method(rb_cLASGN, "value", node_value, 0);
4315
+ rb_ary_push(members, rb_str_new2("value"));
4316
+
4310
4317
  /* Document-method: vid
4311
4318
  * the name of the local variable
4312
4319
  */
@@ -4314,12 +4321,6 @@ void define_node_subclass_methods()
4314
4321
  rb_ary_push(members, rb_str_new2("vid"));
4315
4322
  rb_define_method(rb_cLASGN, "cnt", node_cnt, 0);
4316
4323
  rb_ary_push(members, rb_str_new2("cnt"));
4317
-
4318
- /* Document-method: value
4319
- * the value to assign to the local variable
4320
- */
4321
- rb_define_method(rb_cLASGN, "value", node_value, 0);
4322
- rb_ary_push(members, rb_str_new2("value"));
4323
4324
  }
4324
4325
 
4325
4326
  /* Document-class: Node::LIT
@@ -4692,6 +4693,12 @@ void define_node_subclass_methods()
4692
4693
  rb_iv_set(rb_cOP_ASGN2, "__type__", INT2NUM(NODE_OP_ASGN2));
4693
4694
  rb_define_singleton_method(rb_cOP_ASGN2, "members", node_s_members, 0);
4694
4695
 
4696
+ /* Document-method: recv
4697
+ * the receiver of the attribute
4698
+ */
4699
+ rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4700
+ rb_ary_push(members, rb_str_new2("recv"));
4701
+
4695
4702
  /* Document-method: next
4696
4703
  * another node of type OP_ASGN2 which contains more information
4697
4704
  * about the assignment operation than can fit in this node alone
@@ -4699,12 +4706,6 @@ void define_node_subclass_methods()
4699
4706
  rb_define_method(rb_cOP_ASGN2, "next", node_next, 0);
4700
4707
  rb_ary_push(members, rb_str_new2("next"));
4701
4708
 
4702
- /* Document-method: recv
4703
- * the receiver of the attribute
4704
- */
4705
- rb_define_method(rb_cOP_ASGN2, "recv", node_recv, 0);
4706
- rb_ary_push(members, rb_str_new2("recv"));
4707
-
4708
4709
  /* Document-method: value
4709
4710
  * the value to assign to the attribute
4710
4711
  */
@@ -4725,6 +4726,12 @@ void define_node_subclass_methods()
4725
4726
  rb_iv_set(rb_cOP_ASGN2_ARG, "__type__", INT2NUM(NODE_OP_ASGN2_ARG));
4726
4727
  rb_define_singleton_method(rb_cOP_ASGN2_ARG, "members", node_s_members, 0);
4727
4728
 
4729
+ /* Document-method: vid
4730
+ * The method to call on the receiver to retrieve the attribute
4731
+ */
4732
+ rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
4733
+ rb_ary_push(members, rb_str_new2("vid"));
4734
+
4728
4735
  /* Document-method: aid
4729
4736
  * The method to call on the receiver to set the attribute
4730
4737
  */
@@ -4738,12 +4745,6 @@ void define_node_subclass_methods()
4738
4745
  */
4739
4746
  rb_define_method(rb_cOP_ASGN2_ARG, "mid", node_mid, 0);
4740
4747
  rb_ary_push(members, rb_str_new2("mid"));
4741
-
4742
- /* Document-method: vid
4743
- * The method to call on the receiver to retrieve the attribute
4744
- */
4745
- rb_define_method(rb_cOP_ASGN2_ARG, "vid", node_vid, 0);
4746
- rb_ary_push(members, rb_str_new2("vid"));
4747
4748
  }
4748
4749
 
4749
4750
  /* Document-class: Node::OP_ASGN_AND
@@ -4800,17 +4801,17 @@ void define_node_subclass_methods()
4800
4801
  rb_define_method(rb_cOP_ASGN_OR, "aid", node_aid, 0);
4801
4802
  rb_ary_push(members, rb_str_new2("aid"));
4802
4803
 
4803
- /* Document-method: recv
4804
- * the receiver of the assignment
4805
- */
4806
- rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
4807
- rb_ary_push(members, rb_str_new2("recv"));
4808
-
4809
4804
  /* Document-method: value
4810
4805
  * the right hand side of the assignment
4811
4806
  */
4812
4807
  rb_define_method(rb_cOP_ASGN_OR, "value", node_value, 0);
4813
4808
  rb_ary_push(members, rb_str_new2("value"));
4809
+
4810
+ /* Document-method: recv
4811
+ * the receiver of the assignment
4812
+ */
4813
+ rb_define_method(rb_cOP_ASGN_OR, "recv", node_recv, 0);
4814
+ rb_ary_push(members, rb_str_new2("recv"));
4814
4815
  }
4815
4816
 
4816
4817
  /* Document-class: Node::OR
@@ -4890,12 +4891,6 @@ void define_node_subclass_methods()
4890
4891
  rb_iv_set(rb_cRESBODY, "__type__", INT2NUM(NODE_RESBODY));
4891
4892
  rb_define_singleton_method(rb_cRESBODY, "members", node_s_members, 0);
4892
4893
 
4893
- /* Document-method: args
4894
- * the expression type to match against
4895
- */
4896
- rb_define_method(rb_cRESBODY, "args", node_args, 0);
4897
- rb_ary_push(members, rb_str_new2("args"));
4898
-
4899
4894
  /* Document-method: head
4900
4895
  * the next rescue
4901
4896
  */
@@ -4907,6 +4902,12 @@ void define_node_subclass_methods()
4907
4902
  */
4908
4903
  rb_define_method(rb_cRESBODY, "body", node_body, 0);
4909
4904
  rb_ary_push(members, rb_str_new2("body"));
4905
+
4906
+ /* Document-method: args
4907
+ * the expression type to match against
4908
+ */
4909
+ rb_define_method(rb_cRESBODY, "args", node_args, 0);
4910
+ rb_ary_push(members, rb_str_new2("args"));
4910
4911
  }
4911
4912
 
4912
4913
  /* Document-class: Node::RESCUE
@@ -4946,12 +4947,6 @@ void define_node_subclass_methods()
4946
4947
  rb_iv_set(rb_cRESCUE, "__type__", INT2NUM(NODE_RESCUE));
4947
4948
  rb_define_singleton_method(rb_cRESCUE, "members", node_s_members, 0);
4948
4949
 
4949
- /* Document-method: else
4950
- * the expression to be evaluated if no exception is raised
4951
- */
4952
- rb_define_method(rb_cRESCUE, "else", node_else, 0);
4953
- rb_ary_push(members, rb_str_new2("else"));
4954
-
4955
4950
  /* Document-method: head
4956
4951
  * the body of the block to evaluate
4957
4952
  */
@@ -4963,6 +4958,12 @@ void define_node_subclass_methods()
4963
4958
  */
4964
4959
  rb_define_method(rb_cRESCUE, "resq", node_resq, 0);
4965
4960
  rb_ary_push(members, rb_str_new2("resq"));
4961
+
4962
+ /* Document-method: else
4963
+ * the expression to be evaluated if no exception is raised
4964
+ */
4965
+ rb_define_method(rb_cRESCUE, "else", node_else, 0);
4966
+ rb_ary_push(members, rb_str_new2("else"));
4966
4967
  }
4967
4968
 
4968
4969
  /* Document-class: Node::RETRY
@@ -5017,17 +5018,17 @@ void define_node_subclass_methods()
5017
5018
  rb_iv_set(rb_cSCLASS, "__type__", INT2NUM(NODE_SCLASS));
5018
5019
  rb_define_singleton_method(rb_cSCLASS, "members", node_s_members, 0);
5019
5020
 
5020
- /* Document-method: recv
5021
- * the object whose singleton class is to be modified
5022
- */
5023
- rb_define_method(rb_cSCLASS, "recv", node_recv, 0);
5024
- rb_ary_push(members, rb_str_new2("recv"));
5025
-
5026
5021
  /* Document-method: body
5027
5022
  * the body of the class definition
5028
5023
  */
5029
5024
  rb_define_method(rb_cSCLASS, "body", node_body, 0);
5030
5025
  rb_ary_push(members, rb_str_new2("body"));
5026
+
5027
+ /* Document-method: recv
5028
+ * the object whose singleton class is to be modified
5029
+ */
5030
+ rb_define_method(rb_cSCLASS, "recv", node_recv, 0);
5031
+ rb_ary_push(members, rb_str_new2("recv"));
5031
5032
  }
5032
5033
 
5033
5034
  /* Document-class: Node::SCOPE
@@ -5052,12 +5053,6 @@ void define_node_subclass_methods()
5052
5053
  rb_iv_set(rb_cSCOPE, "__type__", INT2NUM(NODE_SCOPE));
5053
5054
  rb_define_singleton_method(rb_cSCOPE, "members", node_s_members, 0);
5054
5055
 
5055
- /* Document-method: next
5056
- * the body of the lexical scope
5057
- */
5058
- rb_define_method(rb_cSCOPE, "next", node_next, 0);
5059
- rb_ary_push(members, rb_str_new2("next"));
5060
-
5061
5056
  /* Document-method: tbl
5062
5057
  * the names of the local variables* next the first expression in
5063
5058
  * the scope
@@ -5071,6 +5066,12 @@ void define_node_subclass_methods()
5071
5066
  */
5072
5067
  rb_define_method(rb_cSCOPE, "rval", node_rval, 0);
5073
5068
  rb_ary_push(members, rb_str_new2("rval"));
5069
+
5070
+ /* Document-method: next
5071
+ * the body of the lexical scope
5072
+ */
5073
+ rb_define_method(rb_cSCOPE, "next", node_next, 0);
5074
+ rb_ary_push(members, rb_str_new2("next"));
5074
5075
  }
5075
5076
 
5076
5077
  /* Document-class: Node::SELF
@@ -5212,20 +5213,20 @@ void define_node_subclass_methods()
5212
5213
  rb_iv_set(rb_cUNTIL, "__member__", members);
5213
5214
  rb_iv_set(rb_cUNTIL, "__type__", INT2NUM(NODE_UNTIL));
5214
5215
  rb_define_singleton_method(rb_cUNTIL, "members", node_s_members, 0);
5215
- rb_define_method(rb_cUNTIL, "state", node_state, 0);
5216
- rb_ary_push(members, rb_str_new2("state"));
5217
-
5218
- /* Document-method: cond
5219
- * a condition to terminate the loop when it becomes true
5220
- */
5221
- rb_define_method(rb_cUNTIL, "cond", node_cond, 0);
5222
- rb_ary_push(members, rb_str_new2("cond"));
5223
5216
 
5224
5217
  /* Document-method: body
5225
5218
  * the body of the loop
5226
5219
  */
5227
5220
  rb_define_method(rb_cUNTIL, "body", node_body, 0);
5228
5221
  rb_ary_push(members, rb_str_new2("body"));
5222
+
5223
+ /* Document-method: cond
5224
+ * a condition to terminate the loop when it becomes true
5225
+ */
5226
+ rb_define_method(rb_cUNTIL, "cond", node_cond, 0);
5227
+ rb_ary_push(members, rb_str_new2("cond"));
5228
+ rb_define_method(rb_cUNTIL, "state", node_state, 0);
5229
+ rb_ary_push(members, rb_str_new2("state"));
5229
5230
  }
5230
5231
 
5231
5232
  /* Document-class: Node::VALIAS
@@ -5241,10 +5242,10 @@ void define_node_subclass_methods()
5241
5242
  rb_iv_set(rb_cVALIAS, "__member__", members);
5242
5243
  rb_iv_set(rb_cVALIAS, "__type__", INT2NUM(NODE_VALIAS));
5243
5244
  rb_define_singleton_method(rb_cVALIAS, "members", node_s_members, 0);
5244
- rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5245
- rb_ary_push(members, rb_str_new2("second"));
5246
5245
  rb_define_method(rb_cVALIAS, "first", node_1st, 0);
5247
5246
  rb_ary_push(members, rb_str_new2("first"));
5247
+ rb_define_method(rb_cVALIAS, "second", node_2nd, 0);
5248
+ rb_ary_push(members, rb_str_new2("second"));
5248
5249
  }
5249
5250
 
5250
5251
  /* Document-class: Node::VCALL
@@ -5304,12 +5305,6 @@ void define_node_subclass_methods()
5304
5305
  rb_iv_set(rb_cWHEN, "__type__", INT2NUM(NODE_WHEN));
5305
5306
  rb_define_singleton_method(rb_cWHEN, "members", node_s_members, 0);
5306
5307
 
5307
- /* Document-method: next
5308
- * the next expression to be evaluated if the condition is false
5309
- */
5310
- rb_define_method(rb_cWHEN, "next", node_next, 0);
5311
- rb_ary_push(members, rb_str_new2("next"));
5312
-
5313
5308
  /* Document-method: head
5314
5309
  * a value to compare against, or a condition to be tested
5315
5310
  */
@@ -5321,6 +5316,12 @@ void define_node_subclass_methods()
5321
5316
  */
5322
5317
  rb_define_method(rb_cWHEN, "body", node_body, 0);
5323
5318
  rb_ary_push(members, rb_str_new2("body"));
5319
+
5320
+ /* Document-method: next
5321
+ * the next expression to be evaluated if the condition is false
5322
+ */
5323
+ rb_define_method(rb_cWHEN, "next", node_next, 0);
5324
+ rb_ary_push(members, rb_str_new2("next"));
5324
5325
  }
5325
5326
 
5326
5327
  /* Document-class: Node::WHILE
@@ -5336,20 +5337,20 @@ void define_node_subclass_methods()
5336
5337
  rb_iv_set(rb_cWHILE, "__member__", members);
5337
5338
  rb_iv_set(rb_cWHILE, "__type__", INT2NUM(NODE_WHILE));
5338
5339
  rb_define_singleton_method(rb_cWHILE, "members", node_s_members, 0);
5339
- rb_define_method(rb_cWHILE, "state", node_state, 0);
5340
- rb_ary_push(members, rb_str_new2("state"));
5341
-
5342
- /* Document-method: cond
5343
- * a condition to terminate the loop when it becomes false
5344
- */
5345
- rb_define_method(rb_cWHILE, "cond", node_cond, 0);
5346
- rb_ary_push(members, rb_str_new2("cond"));
5347
5340
 
5348
5341
  /* Document-method: body
5349
5342
  * the body of the loop
5350
5343
  */
5351
5344
  rb_define_method(rb_cWHILE, "body", node_body, 0);
5352
5345
  rb_ary_push(members, rb_str_new2("body"));
5346
+
5347
+ /* Document-method: cond
5348
+ * a condition to terminate the loop when it becomes false
5349
+ */
5350
+ rb_define_method(rb_cWHILE, "cond", node_cond, 0);
5351
+ rb_ary_push(members, rb_str_new2("cond"));
5352
+ rb_define_method(rb_cWHILE, "state", node_state, 0);
5353
+ rb_ary_push(members, rb_str_new2("state"));
5353
5354
  }
5354
5355
 
5355
5356
  /* Document-class: Node::XSTR
@@ -5386,17 +5387,17 @@ void define_node_subclass_methods()
5386
5387
  rb_iv_set(rb_cYIELD, "__type__", INT2NUM(NODE_YIELD));
5387
5388
  rb_define_singleton_method(rb_cYIELD, "members", node_s_members, 0);
5388
5389
 
5389
- /* Document-method: state
5390
- * if nonzero, splats the value before yielding
5391
- */
5392
- rb_define_method(rb_cYIELD, "state", node_state, 0);
5393
- rb_ary_push(members, rb_str_new2("state"));
5394
-
5395
5390
  /* Document-method: head
5396
5391
  * the value to yield
5397
5392
  */
5398
5393
  rb_define_method(rb_cYIELD, "head", node_head, 0);
5399
5394
  rb_ary_push(members, rb_str_new2("head"));
5395
+
5396
+ /* Document-method: state
5397
+ * if nonzero, splats the value before yielding
5398
+ */
5399
+ rb_define_method(rb_cYIELD, "state", node_state, 0);
5400
+ rb_ary_push(members, rb_str_new2("state"));
5400
5401
  }
5401
5402
 
5402
5403
  /* Document-class: Node::ZARRAY