opal 0.3.11 → 0.3.15
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.
- data/.gitignore +13 -0
- data/Gemfile +10 -0
- data/LICENSE +20 -0
- data/README.md +11 -116
- data/Rakefile +126 -0
- data/bin/opal +1 -2
- data/docs/spec_runner.html +16 -0
- data/index.html +434 -0
- data/lib/opal.rb +14 -15
- data/lib/opal/builder.rb +46 -148
- data/lib/opal/command.rb +45 -115
- data/lib/opal/context.rb +139 -78
- data/lib/opal/dependency_builder.rb +34 -0
- data/lib/opal/environment.rb +92 -0
- data/lib/opal/parser/grammar.rb +4915 -0
- data/lib/opal/{parser.y → parser/grammar.y} +430 -284
- data/lib/opal/parser/lexer.rb +1329 -0
- data/lib/opal/parser/parser.rb +1460 -0
- data/lib/opal/parser/scope.rb +140 -0
- data/lib/opal/parser/sexp.rb +17 -0
- data/lib/opal/version.rb +2 -1
- data/opal.gemspec +23 -0
- data/opal.js +3149 -4162
- data/runtime/README.md +25 -0
- data/runtime/corelib/alpha.rb +10 -0
- data/runtime/corelib/array.rb +962 -0
- data/runtime/corelib/basic_object.rb +66 -0
- data/runtime/corelib/boolean.rb +44 -0
- data/runtime/corelib/class.rb +43 -0
- data/runtime/corelib/comparable.rb +25 -0
- data/runtime/corelib/complex.rb +2 -0
- data/runtime/corelib/dir.rb +29 -0
- data/runtime/corelib/enumerable.rb +316 -0
- data/runtime/corelib/enumerator.rb +80 -0
- data/runtime/corelib/error.rb +25 -0
- data/runtime/corelib/file.rb +80 -0
- data/runtime/corelib/hash.rb +503 -0
- data/runtime/corelib/io.rb +44 -0
- data/runtime/corelib/kernel.rb +237 -0
- data/runtime/corelib/load_order +29 -0
- data/runtime/corelib/match_data.rb +37 -0
- data/runtime/corelib/module.rb +171 -0
- data/runtime/corelib/native.rb +50 -0
- data/runtime/corelib/nil_class.rb +47 -0
- data/runtime/corelib/numeric.rb +219 -0
- data/runtime/corelib/object.rb +21 -0
- data/runtime/corelib/proc.rb +42 -0
- data/runtime/corelib/range.rb +38 -0
- data/runtime/corelib/rational.rb +16 -0
- data/runtime/corelib/regexp.rb +63 -0
- data/runtime/corelib/string.rb +185 -0
- data/runtime/corelib/struct.rb +97 -0
- data/runtime/corelib/time.rb +196 -0
- data/runtime/corelib/top_self.rb +7 -0
- data/runtime/gemlib/alpha.rb +5 -0
- data/runtime/gemlib/kernel.rb +17 -0
- data/runtime/gemlib/load_order +2 -0
- data/runtime/kernel/class.js +256 -0
- data/runtime/kernel/debug.js +42 -0
- data/runtime/kernel/init.js +114 -0
- data/runtime/kernel/load_order +5 -0
- data/runtime/kernel/loader.js +151 -0
- data/runtime/kernel/runtime.js +414 -0
- data/runtime/spec/README.md +34 -0
- data/runtime/spec/core/array/allocate_spec.rb +15 -0
- data/runtime/spec/core/array/append_spec.rb +31 -0
- data/runtime/spec/core/array/assoc_spec.rb +29 -0
- data/runtime/spec/core/array/at_spec.rb +38 -0
- data/runtime/spec/core/array/clear_spec.rb +22 -0
- data/runtime/spec/core/array/collect_spec.rb +3 -0
- data/runtime/spec/core/array/compact_spec.rb +42 -0
- data/runtime/spec/core/array/concat_spec.rb +21 -0
- data/runtime/spec/core/array/constructor_spec.rb +24 -0
- data/runtime/spec/core/array/count_spec.rb +11 -0
- data/runtime/spec/core/array/delete_at_spec.rb +31 -0
- data/runtime/spec/core/array/delete_if_spec.rb +24 -0
- data/runtime/spec/core/array/delete_spec.rb +26 -0
- data/runtime/spec/core/array/each_index_spec.rb +33 -0
- data/runtime/spec/core/array/each_spec.rb +11 -0
- data/runtime/spec/core/array/element_reference_spec.rb +136 -0
- data/runtime/spec/core/array/element_set_spec.rb +7 -0
- data/runtime/spec/core/array/empty_spec.rb +10 -0
- data/runtime/spec/core/array/eql_spec.rb +3 -0
- data/runtime/spec/core/array/equal_value_spec.rb +3 -0
- data/runtime/spec/core/array/fetch_spec.rb +26 -0
- data/runtime/spec/core/array/first_spec.rb +54 -0
- data/runtime/spec/core/array/fixtures/classes.rb +8 -0
- data/runtime/spec/core/array/flatten_spec.rb +41 -0
- data/runtime/spec/core/array/include_spec.rb +20 -0
- data/runtime/spec/core/array/insert_spec.rb +59 -0
- data/runtime/spec/core/array/last_spec.rb +57 -0
- data/runtime/spec/core/array/length_spec.rb +3 -0
- data/runtime/spec/core/array/map_spec.rb +3 -0
- data/runtime/spec/core/array/plus_spec.rb +16 -0
- data/runtime/spec/core/array/pop_spec.rb +79 -0
- data/runtime/spec/core/array/push_spec.rb +19 -0
- data/runtime/spec/core/array/rassoc_spec.rb +12 -0
- data/runtime/spec/core/array/reject_spec.rb +54 -0
- data/runtime/spec/core/array/replace_spec.rb +3 -0
- data/runtime/spec/core/array/reverse_each_spec.rb +18 -0
- data/runtime/spec/core/array/reverse_spec.rb +9 -0
- data/runtime/spec/core/array/shared/collect.rb +53 -0
- data/runtime/spec/core/array/shared/eql.rb +19 -0
- data/runtime/spec/core/array/shared/length.rb +6 -0
- data/runtime/spec/core/array/shared/replace.rb +31 -0
- data/runtime/spec/core/class/new_spec.rb +19 -0
- data/runtime/spec/core/enumerable/all_spec.rb +102 -0
- data/runtime/spec/core/enumerable/any_spec.rb +115 -0
- data/runtime/spec/core/enumerable/collect_spec.rb +3 -0
- data/runtime/spec/core/enumerable/count_spec.rb +29 -0
- data/runtime/spec/core/enumerable/detect_spec.rb +3 -0
- data/runtime/spec/core/enumerable/find_spec.rb +3 -0
- data/runtime/spec/core/enumerable/fixtures/classes.rb +26 -0
- data/runtime/spec/core/enumerable/shared/collect.rb +12 -0
- data/runtime/spec/core/enumerable/shared/entries.rb +7 -0
- data/runtime/spec/core/enumerable/shared/find.rb +49 -0
- data/runtime/spec/core/enumerable/to_a_spec.rb +7 -0
- data/runtime/spec/core/false/and_spec.rb +11 -0
- data/runtime/spec/core/false/inspect_spec.rb +7 -0
- data/runtime/spec/core/false/or_spec.rb +11 -0
- data/runtime/spec/core/false/to_s_spec.rb +7 -0
- data/runtime/spec/core/false/xor_spec.rb +11 -0
- data/runtime/spec/core/hash/allocate_spec.rb +15 -0
- data/runtime/spec/core/hash/assoc_spec.rb +29 -0
- data/runtime/spec/core/hash/clear_spec.rb +21 -0
- data/runtime/spec/core/hash/clone_spec.rb +12 -0
- data/runtime/spec/core/hash/default_spec.rb +6 -0
- data/runtime/spec/core/hash/delete_if_spec.rb +15 -0
- data/runtime/spec/core/hash/element_reference_spec.rb +16 -0
- data/runtime/spec/core/hash/element_set_spec.rb +8 -0
- data/runtime/spec/core/hash/new_spec.rb +13 -0
- data/runtime/spec/core/matchdata/to_a_spec.rb +7 -0
- data/runtime/spec/core/nil/and_spec.rb +12 -0
- data/runtime/spec/core/nil/inspect_spec.rb +8 -0
- data/runtime/spec/core/nil/nil_spec.rb +8 -0
- data/runtime/spec/core/nil/or_spec.rb +12 -0
- data/runtime/spec/core/nil/to_a_spec.rb +8 -0
- data/runtime/spec/core/nil/to_f_spec.rb +12 -0
- data/runtime/spec/core/nil/to_i_spec.rb +12 -0
- data/runtime/spec/core/nil/to_s_spec.rb +8 -0
- data/runtime/spec/core/nil/xor_spec.rb +12 -0
- data/runtime/spec/core/numeric/equal_value_spec.rb +11 -0
- data/runtime/spec/core/object/is_a_spec.rb +2 -0
- data/runtime/spec/core/object/shared/kind_of.rb +0 -0
- data/runtime/spec/core/regexp/match_spec.rb +23 -0
- data/runtime/spec/core/regexp/shared/match.rb +11 -0
- data/runtime/spec/core/symbol/to_proc_spec.rb +8 -0
- data/runtime/spec/core/true/and_spec.rb +11 -0
- data/runtime/spec/core/true/inspect_spec.rb +7 -0
- data/runtime/spec/core/true/or_spec.rb +11 -0
- data/runtime/spec/core/true/to_s_spec.rb +7 -0
- data/runtime/spec/core/true/xor_spec.rb +11 -0
- data/runtime/spec/language/alias_spec.rb +25 -0
- data/runtime/spec/language/and_spec.rb +62 -0
- data/runtime/spec/language/array_spec.rb +68 -0
- data/runtime/spec/language/block_spec.rb +105 -0
- data/runtime/spec/language/break_spec.rb +49 -0
- data/runtime/spec/language/case_spec.rb +165 -0
- data/runtime/spec/language/defined_spec.rb +80 -0
- data/runtime/spec/language/ensure_spec.rb +82 -0
- data/runtime/spec/language/fixtures/block.rb +19 -0
- data/runtime/spec/language/fixtures/break.rb +39 -0
- data/runtime/spec/language/fixtures/defined.rb +9 -0
- data/runtime/spec/language/fixtures/ensure.rb +37 -0
- data/runtime/spec/language/fixtures/next.rb +46 -0
- data/runtime/spec/language/fixtures/send.rb +36 -0
- data/runtime/spec/language/fixtures/super.rb +43 -0
- data/runtime/spec/language/hash_spec.rb +43 -0
- data/runtime/spec/language/if_spec.rb +278 -0
- data/runtime/spec/language/loop_spec.rb +32 -0
- data/runtime/spec/language/next_spec.rb +128 -0
- data/runtime/spec/language/or_spec.rb +65 -0
- data/runtime/spec/language/predefined_spec.rb +21 -0
- data/runtime/spec/language/regexp/interpolation_spec.rb +9 -0
- data/runtime/spec/language/regexp_spec.rb +7 -0
- data/runtime/spec/language/send_spec.rb +105 -0
- data/runtime/spec/language/string_spec.rb +4 -0
- data/runtime/spec/language/super_spec.rb +18 -0
- data/runtime/spec/language/symbol_spec.rb +41 -0
- data/runtime/spec/language/undef_spec.rb +16 -0
- data/runtime/spec/language/unless_spec.rb +44 -0
- data/runtime/spec/language/until_spec.rb +137 -0
- data/runtime/spec/language/variables_spec.rb +28 -0
- data/runtime/spec/language/versions/hash_1.9.rb +20 -0
- data/runtime/spec/language/while_spec.rb +175 -0
- data/runtime/spec/library/stringscanner/scan_spec.rb +36 -0
- data/runtime/spec/opal/forwardable/def_instance_delegator_spec.rb +49 -0
- data/runtime/spec/opal/opal/defined_spec.rb +15 -0
- data/runtime/spec/opal/opal/function_spec.rb +11 -0
- data/runtime/spec/opal/opal/native_spec.rb +16 -0
- data/runtime/spec/opal/opal/null_spec.rb +10 -0
- data/runtime/spec/opal/opal/number_spec.rb +11 -0
- data/runtime/spec/opal/opal/object_spec.rb +16 -0
- data/runtime/spec/opal/opal/string_spec.rb +11 -0
- data/runtime/spec/opal/opal/typeof_spec.rb +9 -0
- data/runtime/spec/opal/opal/undefined_spec.rb +10 -0
- data/runtime/spec/opal/true/case_compare_spec.rb +12 -0
- data/runtime/spec/opal/true/class_spec.rb +10 -0
- data/runtime/spec/spec_helper.rb +25 -0
- data/runtime/stdlib/base64.rb +91 -0
- data/runtime/stdlib/date.rb +4 -0
- data/{stdlib → runtime/stdlib}/dev.rb +0 -0
- data/runtime/stdlib/forwardable.rb +33 -0
- data/runtime/stdlib/optparse.rb +0 -0
- data/runtime/stdlib/pp.rb +6 -0
- data/{stdlib → runtime/stdlib}/racc/parser.rb +0 -0
- data/runtime/stdlib/rbconfig.rb +0 -0
- data/runtime/stdlib/si.rb +17 -0
- data/runtime/stdlib/strscan.rb +53 -0
- data/runtime/stdlib/uri.rb +111 -0
- data/runtime/stdlib/uri/common.rb +1014 -0
- data/runtime/stdlib/uri/ftp.rb +261 -0
- data/runtime/stdlib/uri/generic.rb +1599 -0
- data/runtime/stdlib/uri/http.rb +106 -0
- data/runtime/stdlib/uri/https.rb +22 -0
- data/runtime/stdlib/uri/ldap.rb +260 -0
- data/runtime/stdlib/uri/ldaps.rb +20 -0
- data/runtime/stdlib/uri/mailto.rb +280 -0
- data/spec/builder/build_source_spec.rb +52 -0
- data/spec/builder/fixtures/build_source/adam.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/a.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/wow/b.rb +0 -0
- data/spec/builder/fixtures/build_source/bar/wow/cow/c.rb +0 -0
- data/spec/builder/fixtures/build_source/beynon.rb +0 -0
- data/spec/builder/fixtures/build_source/charles.js +0 -0
- data/spec/builder/fixtures/build_source/foo/a.rb +0 -0
- data/spec/builder/fixtures/build_source/foo/b.rb +0 -0
- data/spec/builder/fixtures/build_source/foo/x.js +0 -0
- data/spec/builder/fixtures/build_source/foo/y.js +0 -0
- data/spec/builder/output_path_spec.rb +50 -0
- data/spec/grammar/alias_spec.rb +26 -0
- data/spec/grammar/and_spec.rb +13 -0
- data/spec/grammar/array_spec.rb +22 -0
- data/spec/grammar/attrasgn_spec.rb +28 -0
- data/spec/grammar/begin_spec.rb +38 -0
- data/spec/grammar/block_spec.rb +12 -0
- data/spec/grammar/break_spec.rb +17 -0
- data/spec/grammar/call_spec.rb +58 -0
- data/spec/grammar/class_spec.rb +35 -0
- data/spec/grammar/const_spec.rb +13 -0
- data/spec/grammar/cvar_spec.rb +11 -0
- data/spec/grammar/def_spec.rb +60 -0
- data/spec/grammar/false_spec.rb +17 -0
- data/spec/grammar/file_spec.rb +7 -0
- data/spec/grammar/gvar_spec.rb +13 -0
- data/spec/grammar/hash_spec.rb +17 -0
- data/spec/grammar/iasgn_spec.rb +9 -0
- data/spec/grammar/if_spec.rb +26 -0
- data/spec/grammar/iter_spec.rb +59 -0
- data/spec/grammar/ivar_spec.rb +9 -0
- data/spec/grammar/lasgn_spec.rb +8 -0
- data/spec/grammar/line_spec.rb +8 -0
- data/spec/grammar/lvar_spec.rb +38 -0
- data/spec/grammar/module_spec.rb +27 -0
- data/spec/grammar/nil_spec.rb +17 -0
- data/spec/grammar/not_spec.rb +27 -0
- data/spec/grammar/op_asgn1_spec.rb +23 -0
- data/spec/grammar/op_asgn2_spec.rb +23 -0
- data/spec/grammar/or_spec.rb +13 -0
- data/spec/grammar/return_spec.rb +17 -0
- data/spec/grammar/sclass_spec.rb +20 -0
- data/spec/grammar/self_spec.rb +17 -0
- data/spec/grammar/str_spec.rb +96 -0
- data/spec/grammar/super_spec.rb +20 -0
- data/spec/grammar/true_spec.rb +17 -0
- data/spec/grammar/undef_spec.rb +15 -0
- data/spec/grammar/unless_spec.rb +13 -0
- data/spec/grammar/while_spec.rb +15 -0
- data/spec/grammar/xstr_spec.rb +116 -0
- data/spec/grammar/yield_spec.rb +20 -0
- data/spec/spec_helper.rb +9 -0
- metadata +346 -21
- data/lib/opal/bundle.rb +0 -34
- data/lib/opal/lexer.rb +0 -902
- data/lib/opal/nodes.rb +0 -2150
- data/lib/opal/parser.rb +0 -4894
- data/lib/opal/rake/bundle_task.rb +0 -63
- data/opal-parser.js +0 -8343
- data/stdlib/strscan.rb +0 -52
- data/templates/init/Rakefile +0 -7
- data/templates/init/index.html +0 -17
- data/templates/init/lib/__NAME__.rb +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Opal::
|
|
1
|
+
class Opal::Grammar
|
|
2
2
|
|
|
3
3
|
token CLASS MODULE DEF UNDEF BEGIN RESCUE ENSURE END IF UNLESS
|
|
4
4
|
THEN ELSIF ELSE CASE WHEN WHILE UNTIL FOR BREAK NEXT
|
|
@@ -12,9 +12,9 @@ token CLASS MODULE DEF UNDEF BEGIN RESCUE ENSURE END IF UNLESS
|
|
|
12
12
|
'::' '::@' OP_ASGN '=>' PAREN_BEG '(' ')' tLPAREN_ARG
|
|
13
13
|
ARRAY_BEG ']' tLBRACE tLBRACE_ARG SPLAT '*' '&@' '&'
|
|
14
14
|
'~' '%' '/' '+' '-' '<' '>' '|' '!' '^'
|
|
15
|
-
|
|
15
|
+
LCURLY '}' BACK_REF2 SYMBOL_BEG STRING_BEG XSTRING_BEG REGEXP_BEG
|
|
16
16
|
WORDS_BEG AWORDS_BEG STRING_DBEG STRING_DVAR STRING_END STRING
|
|
17
|
-
SYMBOL '\\n' '?' ':' ',' SPACE ';' LABEL
|
|
17
|
+
SYMBOL '\\n' '?' ':' ',' SPACE ';' LABEL
|
|
18
18
|
|
|
19
19
|
prechigh
|
|
20
20
|
right '!' '~' '+@'
|
|
@@ -52,23 +52,29 @@ target:
|
|
|
52
52
|
bodystmt:
|
|
53
53
|
compstmt opt_rescue opt_else opt_ensure
|
|
54
54
|
{
|
|
55
|
-
result =
|
|
55
|
+
result = new_body val[0], val[1], val[2], val[3]
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
compstmt:
|
|
59
59
|
stmts opt_terms
|
|
60
60
|
{
|
|
61
|
-
|
|
61
|
+
comp = new_compstmt val[0]
|
|
62
|
+
if comp and comp[0] == :begin and comp.size == 2
|
|
63
|
+
result = comp[1]
|
|
64
|
+
result.line = comp.line
|
|
65
|
+
else
|
|
66
|
+
result = comp
|
|
67
|
+
end
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
stmts:
|
|
65
71
|
none
|
|
66
72
|
{
|
|
67
|
-
result =
|
|
73
|
+
result = new_block
|
|
68
74
|
}
|
|
69
75
|
| stmt
|
|
70
76
|
{
|
|
71
|
-
result =
|
|
77
|
+
result = new_block val[0]
|
|
72
78
|
}
|
|
73
79
|
| stmts terms stmt
|
|
74
80
|
{
|
|
@@ -78,35 +84,44 @@ stmts:
|
|
|
78
84
|
|
|
79
85
|
stmt:
|
|
80
86
|
ALIAS fitem fitem
|
|
87
|
+
{
|
|
88
|
+
result = s(:alias, val[1], val[2])
|
|
89
|
+
}
|
|
81
90
|
| ALIAS GVAR GVAR
|
|
91
|
+
{
|
|
92
|
+
result = s(:valias, val[1].intern, val[2].intern)
|
|
93
|
+
}
|
|
82
94
|
| ALIAS GVAR BACK_REF
|
|
83
95
|
| ALIAS GVAR NTH_REF
|
|
96
|
+
{
|
|
97
|
+
result = s(:valias, val[1].intern, val[2].intern)
|
|
98
|
+
}
|
|
84
99
|
| UNDEF undef_list
|
|
85
100
|
{
|
|
86
|
-
result =
|
|
101
|
+
result = val[1]
|
|
87
102
|
}
|
|
88
103
|
| stmt IF_MOD expr_value
|
|
89
104
|
{
|
|
90
|
-
result =
|
|
105
|
+
result = new_if val[2], val[0], nil
|
|
91
106
|
}
|
|
92
107
|
| stmt UNLESS_MOD expr_value
|
|
93
108
|
{
|
|
94
|
-
result =
|
|
109
|
+
result = new_if val[2], nil, val[0]
|
|
95
110
|
}
|
|
96
111
|
| stmt WHILE_MOD expr_value
|
|
97
112
|
{
|
|
98
|
-
result =
|
|
113
|
+
result = s(:while, val[2], val[0], true)
|
|
99
114
|
}
|
|
100
115
|
| stmt UNTIL_MOD expr_value
|
|
101
116
|
{
|
|
102
|
-
result =
|
|
117
|
+
result = s(:until, val[2], val[0], true)
|
|
103
118
|
}
|
|
104
119
|
| stmt RESCUE_MOD stmt
|
|
105
|
-
| klBEGIN
|
|
106
|
-
| klEND
|
|
120
|
+
| klBEGIN LCURLY compstmt '}'
|
|
121
|
+
| klEND LCURLY compstmt '}'
|
|
107
122
|
| lhs '=' command_call
|
|
108
123
|
{
|
|
109
|
-
result =
|
|
124
|
+
result = new_assign val[0], val[2]
|
|
110
125
|
}
|
|
111
126
|
| mlhs '=' command_call
|
|
112
127
|
{
|
|
@@ -114,7 +129,7 @@ stmt:
|
|
|
114
129
|
}
|
|
115
130
|
| var_lhs OP_ASGN command_call
|
|
116
131
|
{
|
|
117
|
-
result =
|
|
132
|
+
result = new_op_asgn val[1].intern, val[0], val[2]
|
|
118
133
|
}
|
|
119
134
|
| primary_value '[@' aref_args ']' OP_ASGN command_call
|
|
120
135
|
# {
|
|
@@ -122,12 +137,15 @@ stmt:
|
|
|
122
137
|
# }
|
|
123
138
|
| primary_value '.' IDENTIFIER OP_ASGN command_call
|
|
124
139
|
{
|
|
125
|
-
result =
|
|
140
|
+
result = s(:op_asgn2, val[0], "#{val[2]}=".intern, val[3].intern, val[4])
|
|
126
141
|
}
|
|
127
142
|
| primary_value '.' CONSTANT OP_ASGN command_call
|
|
128
143
|
| primary_value '::' IDENTIFIER OP_ASGN command_call
|
|
129
144
|
| backref OP_ASGN command_call
|
|
130
145
|
| lhs '=' mrhs
|
|
146
|
+
{
|
|
147
|
+
result = new_assign val[0], s(:svalue, val[2])
|
|
148
|
+
}
|
|
131
149
|
| mlhs '=' arg_value
|
|
132
150
|
{
|
|
133
151
|
result = MlhsAssignNode.new val[1], val[0], val[2]
|
|
@@ -142,19 +160,22 @@ expr:
|
|
|
142
160
|
command_call
|
|
143
161
|
| expr AND expr
|
|
144
162
|
{
|
|
145
|
-
result =
|
|
163
|
+
result = s(:and, val[0], val[2])
|
|
164
|
+
result.line = val[0].line
|
|
146
165
|
}
|
|
147
166
|
| expr OR expr
|
|
148
167
|
{
|
|
149
|
-
result =
|
|
168
|
+
result = s(:or, val[0], val[2])
|
|
169
|
+
result.line = val[0].line
|
|
150
170
|
}
|
|
151
171
|
| NOT expr
|
|
152
172
|
{
|
|
153
|
-
result =
|
|
173
|
+
result = s(:not, val[1])
|
|
174
|
+
result.line = val[1].line
|
|
154
175
|
}
|
|
155
176
|
| '!' command_call
|
|
156
177
|
{
|
|
157
|
-
result =
|
|
178
|
+
result = s(:not, val[1])
|
|
158
179
|
}
|
|
159
180
|
| arg
|
|
160
181
|
|
|
@@ -166,15 +187,21 @@ command_call:
|
|
|
166
187
|
| block_command
|
|
167
188
|
| RETURN call_args
|
|
168
189
|
{
|
|
169
|
-
|
|
190
|
+
args = val[1]
|
|
191
|
+
args = args[1] if args.size == 2
|
|
192
|
+
result = s(:return, args)
|
|
170
193
|
}
|
|
171
194
|
| BREAK call_args
|
|
172
195
|
{
|
|
173
|
-
|
|
196
|
+
args = val[1]
|
|
197
|
+
args = args[1] if args.size == 2
|
|
198
|
+
result = s(:break, args)
|
|
174
199
|
}
|
|
175
200
|
| NEXT call_args
|
|
176
201
|
{
|
|
177
|
-
|
|
202
|
+
args = val[1]
|
|
203
|
+
args = args[1] if args.size == 2
|
|
204
|
+
result = s(:next, args)
|
|
178
205
|
}
|
|
179
206
|
|
|
180
207
|
block_command:
|
|
@@ -188,12 +215,12 @@ cmd_brace_block:
|
|
|
188
215
|
command:
|
|
189
216
|
operation command_args =LOWEST
|
|
190
217
|
{
|
|
191
|
-
result =
|
|
218
|
+
result = new_call nil, val[0].intern, val[1]
|
|
192
219
|
}
|
|
193
220
|
| operation command_args cmd_brace_block
|
|
194
221
|
| primary_value '.' operation2 command_args =LOWEST
|
|
195
222
|
{
|
|
196
|
-
result =
|
|
223
|
+
result = new_call val[0], val[2].intern, val[3]
|
|
197
224
|
}
|
|
198
225
|
| primary_value '.' operation2 command_args cmd_brace_block
|
|
199
226
|
| primary_value '::' operation2 command_args =LOWEST
|
|
@@ -203,11 +230,11 @@ command:
|
|
|
203
230
|
| primary_value '::' operation2 command_args cmd_brace_block
|
|
204
231
|
| SUPER command_args
|
|
205
232
|
{
|
|
206
|
-
result =
|
|
233
|
+
result = new_super val[1]
|
|
207
234
|
}
|
|
208
235
|
| YIELD command_args
|
|
209
236
|
{
|
|
210
|
-
result =
|
|
237
|
+
result = new_yield val[1]
|
|
211
238
|
}
|
|
212
239
|
|
|
213
240
|
mlhs:
|
|
@@ -276,16 +303,27 @@ mlhs_node:
|
|
|
276
303
|
|
|
277
304
|
lhs:
|
|
278
305
|
variable
|
|
306
|
+
{
|
|
307
|
+
result = new_assignable val[0]
|
|
308
|
+
}
|
|
279
309
|
| primary_value '[@' aref_args ']'
|
|
280
310
|
{
|
|
281
|
-
|
|
311
|
+
args = val[2]
|
|
312
|
+
args[0] = :arglist if args[0] == :array
|
|
313
|
+
result = s(:attrasgn, val[0], :[]=, args)
|
|
282
314
|
}
|
|
283
315
|
| primary_value '.' IDENTIFIER
|
|
284
316
|
{
|
|
285
|
-
result =
|
|
317
|
+
result = s(:attrasgn, val[0], "#{val[2]}=".intern, s(:arglist))
|
|
286
318
|
}
|
|
287
319
|
| primary_value '::' IDENTIFIER
|
|
320
|
+
{
|
|
321
|
+
result = s(:attrasgn, val[0], "#{val[2]}=".intern, s(:arglist))
|
|
322
|
+
}
|
|
288
323
|
| primary_value '.' CONSTANT
|
|
324
|
+
{
|
|
325
|
+
result = s(:attrasgn, val[0], "#{val[2]}=".intern, s(:arglist))
|
|
326
|
+
}
|
|
289
327
|
| primary_value '::' CONSTANT
|
|
290
328
|
| '::@' CONSTANT
|
|
291
329
|
| backref
|
|
@@ -296,15 +334,15 @@ cname:
|
|
|
296
334
|
cpath:
|
|
297
335
|
'::@' cname
|
|
298
336
|
{
|
|
299
|
-
result =
|
|
337
|
+
result = s(:colon3, val[1].intern)
|
|
300
338
|
}
|
|
301
339
|
| cname
|
|
302
340
|
{
|
|
303
|
-
result =
|
|
341
|
+
result = val[0].intern
|
|
304
342
|
}
|
|
305
343
|
| primary_value '::' cname
|
|
306
344
|
{
|
|
307
|
-
result =
|
|
345
|
+
result = s(:colon2, val[0], val[2].intern)
|
|
308
346
|
}
|
|
309
347
|
|
|
310
348
|
fname:
|
|
@@ -312,16 +350,30 @@ fname:
|
|
|
312
350
|
| CONSTANT
|
|
313
351
|
| FID
|
|
314
352
|
| op
|
|
353
|
+
{
|
|
354
|
+
@lex_state = :expr_end
|
|
355
|
+
result = val[0]
|
|
356
|
+
}
|
|
315
357
|
| reswords
|
|
358
|
+
{
|
|
359
|
+
@lex_state = :expr_end
|
|
360
|
+
result = val[0]
|
|
361
|
+
}
|
|
316
362
|
|
|
317
363
|
fitem:
|
|
318
364
|
fname
|
|
365
|
+
{
|
|
366
|
+
result = s(:lit, val[0].intern)
|
|
367
|
+
}
|
|
319
368
|
| symbol
|
|
369
|
+
{
|
|
370
|
+
result = s(:lit, val[0])
|
|
371
|
+
}
|
|
320
372
|
|
|
321
373
|
undef_list:
|
|
322
374
|
fitem
|
|
323
375
|
{
|
|
324
|
-
result =
|
|
376
|
+
result = s(:undef, val[0])
|
|
325
377
|
}
|
|
326
378
|
| undef_list ',' fitem
|
|
327
379
|
{
|
|
@@ -347,20 +399,23 @@ reswords:
|
|
|
347
399
|
arg:
|
|
348
400
|
lhs '=' arg
|
|
349
401
|
{
|
|
350
|
-
result =
|
|
402
|
+
result = new_assign val[0], val[2]
|
|
351
403
|
}
|
|
352
404
|
| lhs '=' arg RESCUE_MOD arg
|
|
353
405
|
| var_lhs OP_ASGN arg
|
|
354
406
|
{
|
|
355
|
-
result =
|
|
407
|
+
result = new_op_asgn val[1].intern, val[0], val[2]
|
|
356
408
|
}
|
|
357
409
|
| primary_value '[@' aref_args ']' OP_ASGN arg
|
|
358
410
|
{
|
|
359
|
-
|
|
411
|
+
args = val[2]
|
|
412
|
+
args[0] = :arglist if args[0] == :array
|
|
413
|
+
result = s(:op_asgn1, val[0], val[2], val[4].intern, val[5])
|
|
414
|
+
result.line = val[0].line
|
|
360
415
|
}
|
|
361
416
|
| primary_value '.' IDENTIFIER OP_ASGN arg
|
|
362
417
|
{
|
|
363
|
-
result =
|
|
418
|
+
result = s(:op_asgn2, val[0], "#{val[2]}=".intern, val[3].intern, val[4])
|
|
364
419
|
}
|
|
365
420
|
| primary_value '.' CONSTANT OP_ASGN arg
|
|
366
421
|
| primary_value '::' IDENTIFIER OP_ASGN arg
|
|
@@ -369,124 +424,136 @@ arg:
|
|
|
369
424
|
| backref OP_ASGN arg
|
|
370
425
|
| arg '..' arg
|
|
371
426
|
{
|
|
372
|
-
result =
|
|
427
|
+
result = s(:dot2, val[0], val[2])
|
|
428
|
+
result.line = val[0].line
|
|
373
429
|
}
|
|
374
430
|
| arg '...' arg
|
|
375
431
|
{
|
|
376
|
-
result =
|
|
432
|
+
result = s(:dot3, val[0], val[2])
|
|
433
|
+
result.line = val[0].line
|
|
377
434
|
}
|
|
378
435
|
| arg '+' arg
|
|
379
436
|
{
|
|
380
|
-
result =
|
|
437
|
+
result = new_call val[0], :"+", s(:arglist, val[2])
|
|
381
438
|
}
|
|
382
439
|
| arg '-' arg
|
|
383
440
|
{
|
|
384
|
-
result =
|
|
441
|
+
result = new_call val[0], :"-", s(:arglist, val[2])
|
|
385
442
|
}
|
|
386
443
|
| arg '*' arg
|
|
387
444
|
{
|
|
388
|
-
result =
|
|
445
|
+
result = new_call val[0], :"*", s(:arglist, val[2])
|
|
389
446
|
}
|
|
390
447
|
| arg '/' arg
|
|
391
448
|
{
|
|
392
|
-
result =
|
|
449
|
+
result = new_call val[0], :"/", s(:arglist, val[2])
|
|
393
450
|
}
|
|
394
451
|
| arg '%' arg
|
|
395
452
|
{
|
|
396
|
-
result =
|
|
453
|
+
result = new_call val[0], :"%", s(:arglist, val[2])
|
|
397
454
|
}
|
|
398
455
|
| arg '**' arg
|
|
399
456
|
{
|
|
400
|
-
result =
|
|
457
|
+
result = new_call val[0], :"**", s(:arglist, val[2])
|
|
401
458
|
}
|
|
459
|
+
| '-@NUM' INTEGER '**' arg
|
|
460
|
+
| '-@NUM' FLOAT '**' arg
|
|
402
461
|
| '+@' arg
|
|
403
462
|
{
|
|
404
|
-
result =
|
|
463
|
+
result = new_call val[1], :"+@", s(:arglist)
|
|
464
|
+
result = val[1] if val[1][0] == :lit and Numeric === val[1][1]
|
|
405
465
|
}
|
|
406
466
|
| '-@' arg
|
|
407
467
|
{
|
|
408
|
-
result =
|
|
468
|
+
result = new_call val[1], :"-@", s(:arglist)
|
|
469
|
+
if val[1][0] == :lit and Numeric === val[1][1]
|
|
470
|
+
val[1][1] = -val[1][1]
|
|
471
|
+
result = val[1]
|
|
472
|
+
end
|
|
409
473
|
}
|
|
410
474
|
| arg '|' arg
|
|
411
475
|
{
|
|
412
|
-
result =
|
|
476
|
+
result = new_call val[0], :"|", s(:arglist, val[2])
|
|
413
477
|
}
|
|
414
478
|
| arg '^' arg
|
|
415
479
|
{
|
|
416
|
-
result =
|
|
480
|
+
result = new_call val[0], :"^", s(:arglist, val[2])
|
|
417
481
|
}
|
|
418
482
|
| arg '&' arg
|
|
419
483
|
{
|
|
420
|
-
result =
|
|
484
|
+
result = new_call val[0], :"&", s(:arglist, val[2])
|
|
421
485
|
}
|
|
422
486
|
| arg '<=>' arg
|
|
423
487
|
{
|
|
424
|
-
result =
|
|
488
|
+
result = new_call val[0], :"<=>", s(:arglist, val[2])
|
|
425
489
|
}
|
|
426
490
|
| arg '>' arg
|
|
427
491
|
{
|
|
428
|
-
result =
|
|
492
|
+
result = new_call val[0], :">", s(:arglist, val[2])
|
|
429
493
|
}
|
|
430
494
|
| arg '>=' arg
|
|
431
495
|
{
|
|
432
|
-
result =
|
|
496
|
+
result = new_call val[0], :">=", s(:arglist, val[2])
|
|
433
497
|
}
|
|
434
498
|
| arg '<' arg
|
|
435
499
|
{
|
|
436
|
-
result =
|
|
500
|
+
result = new_call val[0], :"<", s(:arglist, val[2])
|
|
437
501
|
}
|
|
438
502
|
| arg '<=' arg
|
|
439
503
|
{
|
|
440
|
-
result =
|
|
504
|
+
result = new_call val[0], :"<=", s(:arglist, val[2])
|
|
441
505
|
}
|
|
442
506
|
| arg '==' arg
|
|
443
507
|
{
|
|
444
|
-
result =
|
|
508
|
+
result = new_call val[0], :"==", s(:arglist, val[2])
|
|
445
509
|
}
|
|
446
510
|
| arg '===' arg
|
|
447
511
|
{
|
|
448
|
-
result =
|
|
512
|
+
result = new_call val[0], :"===", s(:arglist, val[2])
|
|
449
513
|
}
|
|
450
514
|
| arg '!=' arg
|
|
451
515
|
{
|
|
452
|
-
result =
|
|
516
|
+
result = s(:not, new_call(val[0], :"==", s(:arglist, val[2])))
|
|
453
517
|
}
|
|
454
518
|
| arg '=~' arg
|
|
455
519
|
{
|
|
456
|
-
result =
|
|
520
|
+
result = new_call val[0], :"=~", s(:arglist, val[2])
|
|
457
521
|
}
|
|
458
522
|
| arg '!~' arg
|
|
459
523
|
{
|
|
460
|
-
result =
|
|
524
|
+
result = s(:not, new_call(val[0], :"=~", s(:arglist, val[2])))
|
|
461
525
|
}
|
|
462
526
|
| '!' arg
|
|
463
527
|
{
|
|
464
|
-
result =
|
|
528
|
+
result = s(:not, val[1])
|
|
465
529
|
}
|
|
466
530
|
| '~' arg
|
|
467
531
|
{
|
|
468
|
-
result =
|
|
532
|
+
result = new_call val[1], :"~", s(:arglist)
|
|
469
533
|
}
|
|
470
534
|
| arg '<<' arg
|
|
471
535
|
{
|
|
472
|
-
result =
|
|
536
|
+
result = new_call val[0], :"<<", s(:arglist, val[2])
|
|
473
537
|
}
|
|
474
538
|
| arg '>>' arg
|
|
475
539
|
{
|
|
476
|
-
result =
|
|
540
|
+
result = new_call val[0], :">>", s(:arglist, val[2])
|
|
477
541
|
}
|
|
478
542
|
| arg '&&' arg
|
|
479
543
|
{
|
|
480
|
-
result =
|
|
544
|
+
result = s(:and, val[0], val[2])
|
|
545
|
+
result.line = val[0].line
|
|
481
546
|
}
|
|
482
547
|
| arg '||' arg
|
|
483
548
|
{
|
|
484
|
-
result =
|
|
549
|
+
result = s(:or, val[0], val[2])
|
|
550
|
+
result.line = val[0].line
|
|
485
551
|
}
|
|
486
552
|
| DEFINED opt_nl arg
|
|
487
553
|
| arg '?' arg ':' arg
|
|
488
554
|
{
|
|
489
|
-
result =
|
|
555
|
+
result = s(:if, val[0], val[2], val[4])
|
|
556
|
+
result.line = val[0].line
|
|
490
557
|
}
|
|
491
558
|
| primary
|
|
492
559
|
|
|
@@ -496,30 +563,24 @@ arg_value:
|
|
|
496
563
|
aref_args:
|
|
497
564
|
none
|
|
498
565
|
{
|
|
499
|
-
result =
|
|
566
|
+
result = nil
|
|
500
567
|
}
|
|
501
|
-
| command opt_nl
|
|
502
568
|
| args trailer
|
|
503
569
|
{
|
|
504
|
-
result =
|
|
505
|
-
}
|
|
506
|
-
| args ',' SPLAT arg opt_nl
|
|
507
|
-
{
|
|
508
|
-
result = [val[0], val[3]]
|
|
570
|
+
result = val[0]
|
|
509
571
|
}
|
|
510
572
|
| assocs trailer
|
|
511
573
|
{
|
|
512
|
-
result =
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
result = [[], val[1]]
|
|
574
|
+
result = s(:array, val[0])
|
|
575
|
+
#result.line = val[0].line
|
|
576
|
+
# FIXME:
|
|
577
|
+
result = s(:array)
|
|
517
578
|
}
|
|
518
579
|
|
|
519
580
|
paren_args:
|
|
520
581
|
'(' none ')'
|
|
521
582
|
{
|
|
522
|
-
result =
|
|
583
|
+
result = nil
|
|
523
584
|
}
|
|
524
585
|
| '(' call_args opt_nl ')'
|
|
525
586
|
{
|
|
@@ -530,61 +591,36 @@ paren_args:
|
|
|
530
591
|
|
|
531
592
|
opt_paren_args:
|
|
532
593
|
none
|
|
533
|
-
{
|
|
534
|
-
result = []
|
|
535
|
-
}
|
|
536
594
|
| paren_args
|
|
537
595
|
|
|
538
596
|
call_args:
|
|
539
597
|
command
|
|
540
598
|
{
|
|
541
|
-
result =
|
|
599
|
+
result = s(:array, val[0])
|
|
542
600
|
}
|
|
543
601
|
| args opt_block_arg
|
|
544
602
|
{
|
|
545
|
-
result =
|
|
546
|
-
|
|
547
|
-
| args ',' SPLAT arg_value opt_block_arg
|
|
548
|
-
{
|
|
549
|
-
result = [val[0], val[3], nil, val[4]]
|
|
603
|
+
result = val[0]
|
|
604
|
+
add_block_pass val[0], val[1]
|
|
550
605
|
}
|
|
551
606
|
| assocs opt_block_arg
|
|
552
607
|
{
|
|
553
|
-
result =
|
|
554
|
-
|
|
555
|
-
| assocs ',' SPLAT arg_value opt_block_arg
|
|
556
|
-
{
|
|
557
|
-
result = [nil, val[3], val[0], val[4]]
|
|
608
|
+
result = s(:arglist, s(:hash, *val[0]))
|
|
609
|
+
add_block_pass result, val[1]
|
|
558
610
|
}
|
|
559
611
|
| args ',' assocs opt_block_arg
|
|
560
612
|
{
|
|
561
|
-
result =
|
|
562
|
-
|
|
563
|
-
| args ',' assocs ',' SPLAT arg opt_block_arg
|
|
564
|
-
{
|
|
565
|
-
result = [val[0], val[5], val[2], val[6]]
|
|
566
|
-
}
|
|
567
|
-
| SPLAT arg_value opt_block_arg
|
|
568
|
-
{
|
|
569
|
-
result = [nil, val[1], nil, val[2]]
|
|
613
|
+
result = val[0]
|
|
614
|
+
result << s(:hash, *val[2])
|
|
570
615
|
}
|
|
571
616
|
| block_arg
|
|
572
617
|
{
|
|
573
|
-
result =
|
|
618
|
+
result = s(:arglist)
|
|
619
|
+
add_block_pass result, val[0]
|
|
574
620
|
}
|
|
575
621
|
|
|
576
622
|
call_args2:
|
|
577
623
|
arg_value ',' args opt_block_arg
|
|
578
|
-
| arg_value ',' block_arg
|
|
579
|
-
| arg_value ',' SPLAT arg_value opt_block_arg
|
|
580
|
-
| arg_value ',' args ',' SPLAT arg_value opt_block_arg
|
|
581
|
-
| assocs opt_block_arg
|
|
582
|
-
| assocs ',' SPLAT arg_value opt_block_arg
|
|
583
|
-
| arg_value ',' assocs opt_block_arg
|
|
584
|
-
| arg_value ',' args ',' assocs opt_block_arg
|
|
585
|
-
| arg_value ',' assocs ',' SPLAT arg_value opt_block_arg
|
|
586
|
-
| arg_value ',' args ',' assocs ',' SPLAT arg_value opt_block_arg
|
|
587
|
-
| SPLAT arg_value opt_block_arg
|
|
588
624
|
| block_arg
|
|
589
625
|
|
|
590
626
|
command_args:
|
|
@@ -601,7 +637,7 @@ open_args:
|
|
|
601
637
|
call_args
|
|
602
638
|
| tLPAREN_ARG ')'
|
|
603
639
|
{
|
|
604
|
-
result =
|
|
640
|
+
result = nil
|
|
605
641
|
}
|
|
606
642
|
| tLPAREN_ARG call_args2 ')'
|
|
607
643
|
{
|
|
@@ -611,7 +647,7 @@ open_args:
|
|
|
611
647
|
block_arg:
|
|
612
648
|
'&@' arg_value
|
|
613
649
|
{
|
|
614
|
-
result = val[1]
|
|
650
|
+
result = s(:block_pass, val[1])
|
|
615
651
|
}
|
|
616
652
|
|
|
617
653
|
opt_block_arg:
|
|
@@ -627,17 +663,32 @@ opt_block_arg:
|
|
|
627
663
|
args:
|
|
628
664
|
arg_value
|
|
629
665
|
{
|
|
630
|
-
result =
|
|
666
|
+
result = s(:array, val[0])
|
|
667
|
+
}
|
|
668
|
+
| SPLAT arg_value
|
|
669
|
+
{
|
|
670
|
+
result = s(:array, s(:splat, val[1]))
|
|
631
671
|
}
|
|
632
672
|
| args ',' arg_value
|
|
633
673
|
{
|
|
634
674
|
result = val[0] << val[2]
|
|
635
675
|
}
|
|
676
|
+
| args ',' SPLAT arg_value
|
|
677
|
+
{
|
|
678
|
+
result = val[0] << s(:splat, val[3])
|
|
679
|
+
}
|
|
636
680
|
|
|
637
681
|
mrhs:
|
|
638
682
|
args ',' arg_value
|
|
683
|
+
{
|
|
684
|
+
val[0] << val[2]
|
|
685
|
+
result = val[0]
|
|
686
|
+
}
|
|
639
687
|
| args ',' SPLAT arg_value
|
|
640
688
|
| SPLAT arg_value
|
|
689
|
+
{
|
|
690
|
+
result = s(:splat, val[1])
|
|
691
|
+
}
|
|
641
692
|
|
|
642
693
|
primary:
|
|
643
694
|
literal
|
|
@@ -649,74 +700,83 @@ primary:
|
|
|
649
700
|
| var_ref
|
|
650
701
|
| backref
|
|
651
702
|
| FID
|
|
652
|
-
| BEGIN
|
|
703
|
+
| BEGIN
|
|
653
704
|
{
|
|
654
|
-
result =
|
|
705
|
+
result = @line
|
|
706
|
+
}
|
|
707
|
+
bodystmt END
|
|
708
|
+
{
|
|
709
|
+
result = s(:begin, val[2])
|
|
710
|
+
result.line = val[1]
|
|
655
711
|
}
|
|
656
712
|
| tLPAREN_ARG expr opt_nl ')'
|
|
657
713
|
| PAREN_BEG compstmt ')'
|
|
658
714
|
{
|
|
659
|
-
result =
|
|
715
|
+
result = val[1] || s(:nil)
|
|
660
716
|
}
|
|
661
717
|
| primary_value '::' CONSTANT
|
|
662
718
|
{
|
|
663
|
-
result =
|
|
719
|
+
result = s(:colon2, val[0], val[2].intern)
|
|
664
720
|
}
|
|
665
721
|
| '::@' CONSTANT
|
|
666
722
|
{
|
|
667
|
-
result =
|
|
723
|
+
result = s(:colon3, val[1])
|
|
668
724
|
}
|
|
669
725
|
| primary_value '[@' aref_args ']'
|
|
670
726
|
{
|
|
671
|
-
result =
|
|
727
|
+
result = new_call val[0], :[], val[2]
|
|
672
728
|
}
|
|
673
729
|
| '[' aref_args ']'
|
|
674
730
|
{
|
|
675
|
-
result =
|
|
731
|
+
result = val[1] || s(:array)
|
|
676
732
|
}
|
|
677
733
|
| '{' assoc_list '}'
|
|
678
734
|
{
|
|
679
|
-
result =
|
|
735
|
+
result = s(:hash, *val[1])
|
|
680
736
|
}
|
|
681
737
|
| RETURN
|
|
682
738
|
{
|
|
683
|
-
result =
|
|
739
|
+
result = s(:return)
|
|
684
740
|
}
|
|
685
741
|
| YIELD '(' call_args ')'
|
|
686
742
|
{
|
|
687
|
-
result =
|
|
743
|
+
result = new_yield val[2]
|
|
688
744
|
}
|
|
689
745
|
| YIELD '(' ')'
|
|
690
746
|
{
|
|
691
|
-
result =
|
|
747
|
+
result = s(:yield)
|
|
692
748
|
}
|
|
693
749
|
| YIELD
|
|
694
750
|
{
|
|
695
|
-
result =
|
|
751
|
+
result = s(:yield)
|
|
696
752
|
}
|
|
697
753
|
| DEFINED opt_nl '(' expr ')'
|
|
754
|
+
{
|
|
755
|
+
result = s(:defined, val[3])
|
|
756
|
+
}
|
|
698
757
|
| operation brace_block
|
|
699
758
|
{
|
|
700
|
-
result =
|
|
701
|
-
result
|
|
759
|
+
result = val[1]
|
|
760
|
+
result[1] = new_call(nil, val[0].intern, s(:arglist))
|
|
702
761
|
}
|
|
703
762
|
| method_call
|
|
704
763
|
| method_call brace_block
|
|
705
764
|
{
|
|
706
|
-
result = val[
|
|
707
|
-
result
|
|
765
|
+
result = val[1]
|
|
766
|
+
result[1] = val[0]
|
|
708
767
|
}
|
|
709
768
|
| IF expr_value then compstmt if_tail END
|
|
710
769
|
{
|
|
711
|
-
result =
|
|
770
|
+
result = new_if val[1], val[3], val[4]
|
|
712
771
|
}
|
|
713
772
|
| UNLESS expr_value then compstmt opt_else END
|
|
714
773
|
{
|
|
715
|
-
result =
|
|
774
|
+
result = new_if val[1], val[4], val[3]
|
|
716
775
|
}
|
|
717
776
|
| WHILE
|
|
718
777
|
{
|
|
719
778
|
cond_push 1
|
|
779
|
+
result = @line
|
|
720
780
|
}
|
|
721
781
|
expr_value do
|
|
722
782
|
{
|
|
@@ -724,72 +784,123 @@ primary:
|
|
|
724
784
|
}
|
|
725
785
|
compstmt END
|
|
726
786
|
{
|
|
727
|
-
result =
|
|
787
|
+
result = s(:while, val[2], val[5], true)
|
|
788
|
+
result.line = val[1]
|
|
728
789
|
}
|
|
729
790
|
| UNTIL
|
|
730
791
|
{
|
|
731
|
-
|
|
792
|
+
cond_push 1
|
|
793
|
+
result = @line
|
|
732
794
|
}
|
|
733
795
|
expr_value do
|
|
734
796
|
{
|
|
735
|
-
|
|
797
|
+
cond_pop
|
|
736
798
|
}
|
|
737
799
|
compstmt END
|
|
738
800
|
{
|
|
739
|
-
result =
|
|
801
|
+
result = s(:until, val[2], val[5], true)
|
|
802
|
+
result.line = val[1]
|
|
740
803
|
}
|
|
741
804
|
| CASE expr_value opt_terms case_body END
|
|
742
805
|
{
|
|
743
|
-
result =
|
|
806
|
+
result = s(:case, val[1], *val[3])
|
|
807
|
+
result.line = val[1].line
|
|
744
808
|
}
|
|
745
809
|
| CASE opt_terms case_body END
|
|
746
810
|
{
|
|
747
|
-
result =
|
|
811
|
+
result = s(:case, nil, *val[2])
|
|
812
|
+
result.line = val[2].line
|
|
748
813
|
}
|
|
749
814
|
| CASE opt_terms ELSE compstmt END
|
|
815
|
+
{
|
|
816
|
+
result = s(:case, nil, val[3])
|
|
817
|
+
result.line = val[3].line
|
|
818
|
+
}
|
|
750
819
|
| FOR block_var IN
|
|
751
820
|
{
|
|
752
|
-
cond_push
|
|
821
|
+
result = "this.cond_push(1);"
|
|
753
822
|
}
|
|
754
823
|
expr_value do
|
|
755
824
|
{
|
|
756
|
-
cond_pop
|
|
825
|
+
result = "this.cond_pop();"
|
|
757
826
|
}
|
|
758
827
|
compstmt END
|
|
828
|
+
| CLASS
|
|
759
829
|
{
|
|
760
|
-
result =
|
|
830
|
+
result = @line
|
|
761
831
|
}
|
|
762
|
-
|
|
832
|
+
cpath superclass
|
|
763
833
|
{
|
|
764
|
-
|
|
834
|
+
# ...
|
|
765
835
|
}
|
|
766
|
-
|
|
836
|
+
bodystmt END
|
|
767
837
|
{
|
|
768
|
-
result =
|
|
838
|
+
result = new_class val[2], val[3], val[5]
|
|
839
|
+
result.line = val[1]
|
|
840
|
+
result.end_line = @line
|
|
769
841
|
}
|
|
770
|
-
|
|
|
842
|
+
| CLASS '<<'
|
|
771
843
|
{
|
|
772
|
-
result =
|
|
844
|
+
result = @line
|
|
773
845
|
}
|
|
774
|
-
|
|
846
|
+
expr term
|
|
775
847
|
{
|
|
776
|
-
|
|
848
|
+
# ...
|
|
777
849
|
}
|
|
778
|
-
|
|
850
|
+
bodystmt END
|
|
779
851
|
{
|
|
780
|
-
result =
|
|
852
|
+
result = new_sclass val[3], val[6]
|
|
853
|
+
result.line = val[2]
|
|
854
|
+
}
|
|
855
|
+
| MODULE
|
|
856
|
+
{
|
|
857
|
+
result = @line
|
|
858
|
+
}
|
|
859
|
+
cpath
|
|
860
|
+
{
|
|
861
|
+
# ...
|
|
862
|
+
}
|
|
863
|
+
bodystmt END
|
|
864
|
+
{
|
|
865
|
+
result = new_module val[2], val[4]
|
|
866
|
+
result.line = val[1]
|
|
867
|
+
result.end_line = @line
|
|
868
|
+
}
|
|
869
|
+
| DEF fname
|
|
870
|
+
{
|
|
871
|
+
result = @scope_line
|
|
872
|
+
push_scope
|
|
873
|
+
}
|
|
874
|
+
f_arglist bodystmt END
|
|
875
|
+
{
|
|
876
|
+
result = new_defn val[2], val[1], val[3], val[4]
|
|
877
|
+
pop_scope
|
|
878
|
+
}
|
|
879
|
+
| DEF singleton dot_or_colon
|
|
880
|
+
{
|
|
881
|
+
# ..
|
|
882
|
+
}
|
|
883
|
+
fname
|
|
884
|
+
{
|
|
885
|
+
result = @scope_line
|
|
886
|
+
push_scope
|
|
887
|
+
}
|
|
888
|
+
f_arglist bodystmt END
|
|
889
|
+
{
|
|
890
|
+
result = new_defs val[5], val[1], val[4], val[6], val[7]
|
|
891
|
+
pop_scope
|
|
781
892
|
}
|
|
782
893
|
| BREAK
|
|
783
894
|
{
|
|
784
|
-
result =
|
|
895
|
+
result = s(:break)
|
|
785
896
|
}
|
|
786
897
|
| NEXT
|
|
787
898
|
{
|
|
788
|
-
result =
|
|
899
|
+
result = s(:next)
|
|
789
900
|
}
|
|
790
901
|
| REDO
|
|
791
902
|
{
|
|
792
|
-
result =
|
|
903
|
+
result = s(:redo)
|
|
793
904
|
}
|
|
794
905
|
| RETRY
|
|
795
906
|
|
|
@@ -812,65 +923,67 @@ if_tail:
|
|
|
812
923
|
{
|
|
813
924
|
result = val[0]
|
|
814
925
|
}
|
|
815
|
-
| ELSIF
|
|
926
|
+
| ELSIF
|
|
816
927
|
{
|
|
817
|
-
result =
|
|
928
|
+
result = @line
|
|
929
|
+
}
|
|
930
|
+
expr_value then compstmt if_tail
|
|
931
|
+
{
|
|
932
|
+
result = s(:if, val[2], val[4], val[5])
|
|
933
|
+
result.line = val[1]
|
|
818
934
|
}
|
|
819
935
|
|
|
820
936
|
opt_else:
|
|
821
937
|
none
|
|
822
|
-
{
|
|
823
|
-
result = []
|
|
824
|
-
}
|
|
825
938
|
| ELSE compstmt
|
|
826
939
|
{
|
|
827
|
-
result =
|
|
940
|
+
result = val[1]
|
|
828
941
|
}
|
|
829
942
|
|
|
830
943
|
block_var:
|
|
831
944
|
block_var_args
|
|
832
945
|
{
|
|
833
|
-
result =
|
|
946
|
+
result = val[0]
|
|
834
947
|
}
|
|
835
948
|
|
|
836
949
|
block_var_args:
|
|
837
950
|
f_arg ',' f_block_optarg ',' f_rest_arg opt_f_block_arg
|
|
838
951
|
{
|
|
839
|
-
result =
|
|
952
|
+
result = new_block_args val[0], val[2], val[4], val[5]
|
|
840
953
|
}
|
|
841
954
|
| f_arg ',' f_block_optarg opt_f_block_arg
|
|
842
955
|
{
|
|
843
|
-
result =
|
|
956
|
+
result = new_block_args val[0], val[2], nil, val[3]
|
|
844
957
|
}
|
|
845
958
|
| f_arg ',' f_rest_arg opt_f_block_arg
|
|
846
959
|
{
|
|
847
|
-
result =
|
|
960
|
+
result = new_block_args val[0], nil, val[2], val[3]
|
|
848
961
|
}
|
|
849
962
|
| f_arg opt_f_block_arg
|
|
850
963
|
{
|
|
851
|
-
result =
|
|
964
|
+
result = new_block_args val[0], nil, nil, val[1]
|
|
852
965
|
}
|
|
853
966
|
| f_block_optarg ',' f_rest_arg opt_f_block_arg
|
|
854
967
|
{
|
|
855
|
-
result =
|
|
968
|
+
result = new_block_args nil, val[0], val[2], val[3]
|
|
856
969
|
}
|
|
857
970
|
| f_block_optarg opt_f_block_arg
|
|
858
971
|
{
|
|
859
|
-
result =
|
|
972
|
+
result = new_block_args nil, val[0], nil, val[1]
|
|
860
973
|
}
|
|
861
974
|
| f_rest_arg opt_f_block_arg
|
|
862
975
|
{
|
|
863
|
-
result =
|
|
976
|
+
result = new_block_args nil, nil, val[0], val[1]
|
|
864
977
|
}
|
|
865
978
|
| f_block_arg
|
|
866
979
|
{
|
|
867
|
-
result =
|
|
980
|
+
result = new_block_args nil, nil, nil, val[0]
|
|
868
981
|
}
|
|
869
982
|
|
|
870
983
|
f_block_optarg:
|
|
871
984
|
f_block_opt
|
|
872
985
|
{
|
|
873
|
-
result =
|
|
986
|
+
result = s(:block, val[0])
|
|
874
987
|
}
|
|
875
988
|
| f_block_optarg ',' f_block_opt
|
|
876
989
|
{
|
|
@@ -881,21 +994,18 @@ f_block_optarg:
|
|
|
881
994
|
f_block_opt:
|
|
882
995
|
IDENTIFIER '=' primary_value
|
|
883
996
|
{
|
|
884
|
-
result =
|
|
997
|
+
result = new_assign new_assignable(s(:identifier, val[0].intern)), val[2]
|
|
885
998
|
}
|
|
886
999
|
|
|
887
1000
|
opt_block_var:
|
|
888
1001
|
none
|
|
889
|
-
{
|
|
890
|
-
result = [nil]
|
|
891
|
-
}
|
|
892
1002
|
| '|' '|'
|
|
893
1003
|
{
|
|
894
|
-
result =
|
|
1004
|
+
result = 0
|
|
895
1005
|
}
|
|
896
1006
|
| '||'
|
|
897
1007
|
{
|
|
898
|
-
result =
|
|
1008
|
+
result = 0
|
|
899
1009
|
}
|
|
900
1010
|
| '|' block_var '|'
|
|
901
1011
|
{
|
|
@@ -905,18 +1015,21 @@ opt_block_var:
|
|
|
905
1015
|
do_block:
|
|
906
1016
|
DO_BLOCK
|
|
907
1017
|
{
|
|
908
|
-
|
|
1018
|
+
push_scope :block
|
|
1019
|
+
result = @line
|
|
909
1020
|
}
|
|
910
1021
|
opt_block_var compstmt END
|
|
911
1022
|
{
|
|
912
|
-
result =
|
|
1023
|
+
result = new_iter nil, val[2], val[3]
|
|
1024
|
+
result.line = val[1]
|
|
1025
|
+
pop_scope
|
|
913
1026
|
}
|
|
914
1027
|
|
|
915
1028
|
block_call:
|
|
916
1029
|
command do_block
|
|
917
1030
|
{
|
|
918
|
-
result = val[
|
|
919
|
-
|
|
1031
|
+
result = val[1]
|
|
1032
|
+
result[1] = val[0]
|
|
920
1033
|
}
|
|
921
1034
|
| block_call '.' operation2 opt_paren_args
|
|
922
1035
|
| block_call '::' operation2 opt_paren_args
|
|
@@ -924,71 +1037,85 @@ block_call:
|
|
|
924
1037
|
method_call:
|
|
925
1038
|
operation paren_args
|
|
926
1039
|
{
|
|
927
|
-
result =
|
|
1040
|
+
result = new_call nil, val[0].intern, val[1]
|
|
928
1041
|
}
|
|
929
1042
|
| primary_value '.' operation2 opt_paren_args
|
|
930
1043
|
{
|
|
931
|
-
result =
|
|
1044
|
+
result = new_call val[0], val[2].intern, val[3]
|
|
932
1045
|
}
|
|
933
1046
|
| primary_value '::' operation2 paren_args
|
|
934
1047
|
| primary_value '::' operation3
|
|
935
1048
|
| SUPER paren_args
|
|
936
1049
|
{
|
|
937
|
-
result =
|
|
1050
|
+
result = new_super val[1]
|
|
938
1051
|
}
|
|
939
1052
|
| SUPER
|
|
940
1053
|
{
|
|
941
|
-
result =
|
|
1054
|
+
result = s(:zsuper)
|
|
942
1055
|
}
|
|
943
1056
|
|
|
944
1057
|
brace_block:
|
|
945
|
-
|
|
1058
|
+
LCURLY
|
|
946
1059
|
{
|
|
947
|
-
|
|
1060
|
+
push_scope :block
|
|
1061
|
+
result = @line
|
|
948
1062
|
}
|
|
949
|
-
|
|
1063
|
+
opt_block_var compstmt '}'
|
|
950
1064
|
{
|
|
951
|
-
result =
|
|
1065
|
+
result = new_iter nil, val[2], val[3]
|
|
1066
|
+
result.line = val[1]
|
|
1067
|
+
pop_scope
|
|
952
1068
|
}
|
|
953
|
-
|
|
954
|
-
case_body:
|
|
955
|
-
WHEN when_args then compstmt cases
|
|
1069
|
+
| DO
|
|
956
1070
|
{
|
|
957
|
-
|
|
958
|
-
result =
|
|
1071
|
+
push_scope :block
|
|
1072
|
+
result = @line
|
|
959
1073
|
}
|
|
960
|
-
|
|
961
|
-
when_args:
|
|
962
|
-
args
|
|
1074
|
+
opt_block_var compstmt END
|
|
963
1075
|
{
|
|
964
|
-
result = val[
|
|
1076
|
+
result = new_iter nil, val[2], val[3]
|
|
1077
|
+
result.line = val[1]
|
|
1078
|
+
pop_scope
|
|
965
1079
|
}
|
|
966
|
-
|
|
1080
|
+
|
|
1081
|
+
case_body:
|
|
1082
|
+
WHEN
|
|
967
1083
|
{
|
|
968
|
-
result =
|
|
1084
|
+
result = @line
|
|
969
1085
|
}
|
|
970
|
-
|
|
1086
|
+
args then compstmt cases
|
|
971
1087
|
{
|
|
972
|
-
|
|
1088
|
+
part = s(:when, val[2], val[4])
|
|
1089
|
+
part.line = val[2].line
|
|
1090
|
+
result = [part]
|
|
1091
|
+
result.push *val[5] if val[5]
|
|
973
1092
|
}
|
|
974
1093
|
|
|
975
1094
|
cases:
|
|
976
1095
|
opt_else
|
|
1096
|
+
{
|
|
1097
|
+
result = [val[0]]
|
|
1098
|
+
}
|
|
977
1099
|
| case_body
|
|
978
1100
|
|
|
979
1101
|
opt_rescue:
|
|
980
1102
|
RESCUE exc_list exc_var then compstmt opt_rescue
|
|
981
1103
|
{
|
|
982
|
-
|
|
983
|
-
|
|
1104
|
+
exc = val[1] || s(:array)
|
|
1105
|
+
exc << new_assign(val[2], s(:gvar, '$!'.intern)) if val[2]
|
|
1106
|
+
result = [s(:resbody, exc, val[4])]
|
|
1107
|
+
result.push val[5].first if val[5]
|
|
984
1108
|
}
|
|
985
1109
|
|
|
|
986
1110
|
{
|
|
987
|
-
result =
|
|
1111
|
+
result = nil
|
|
988
1112
|
}
|
|
989
1113
|
|
|
990
1114
|
exc_list:
|
|
991
1115
|
arg_value
|
|
1116
|
+
{
|
|
1117
|
+
result = s(:array, val[0])
|
|
1118
|
+
}
|
|
992
1119
|
| mrhs
|
|
993
1120
|
| none
|
|
994
1121
|
|
|
@@ -1005,20 +1132,26 @@ exc_var:
|
|
|
1005
1132
|
opt_ensure:
|
|
1006
1133
|
ENSURE compstmt
|
|
1007
1134
|
{
|
|
1008
|
-
result = val[1]
|
|
1135
|
+
result = val[1].nil? ? s(:nil) : val[1]
|
|
1009
1136
|
}
|
|
1010
1137
|
| none
|
|
1011
|
-
{
|
|
1012
|
-
result = nil
|
|
1013
|
-
}
|
|
1014
1138
|
|
|
1015
1139
|
literal:
|
|
1016
1140
|
numeric
|
|
1141
|
+
{
|
|
1142
|
+
result = s(:lit, val[0])
|
|
1143
|
+
}
|
|
1017
1144
|
| symbol
|
|
1145
|
+
{
|
|
1146
|
+
result = s(:lit, val[0])
|
|
1147
|
+
}
|
|
1018
1148
|
| dsym
|
|
1019
1149
|
|
|
1020
1150
|
strings:
|
|
1021
1151
|
string
|
|
1152
|
+
{
|
|
1153
|
+
result = new_str val[0]
|
|
1154
|
+
}
|
|
1022
1155
|
|
|
1023
1156
|
string:
|
|
1024
1157
|
string1
|
|
@@ -1027,40 +1160,42 @@ string:
|
|
|
1027
1160
|
string1:
|
|
1028
1161
|
STRING_BEG string_contents STRING_END
|
|
1029
1162
|
{
|
|
1030
|
-
result =
|
|
1163
|
+
result = val[1]
|
|
1031
1164
|
}
|
|
1032
1165
|
| STRING
|
|
1033
1166
|
|
|
1034
1167
|
xstring:
|
|
1035
1168
|
XSTRING_BEG xstring_contents STRING_END
|
|
1036
1169
|
{
|
|
1037
|
-
result =
|
|
1170
|
+
result = new_xstr val[1]
|
|
1038
1171
|
}
|
|
1039
1172
|
|
|
1040
1173
|
regexp:
|
|
1041
1174
|
REGEXP_BEG xstring_contents REGEXP_END
|
|
1042
1175
|
{
|
|
1043
|
-
result =
|
|
1176
|
+
result = new_regexp val[1]
|
|
1044
1177
|
}
|
|
1045
1178
|
|
|
1046
1179
|
words:
|
|
1047
1180
|
WORDS_BEG SPACE STRING_END
|
|
1048
1181
|
{
|
|
1049
|
-
result =
|
|
1182
|
+
result = s(:array)
|
|
1050
1183
|
}
|
|
1051
1184
|
| WORDS_BEG word_list STRING_END
|
|
1052
1185
|
{
|
|
1053
|
-
result =
|
|
1186
|
+
result = val[1]
|
|
1054
1187
|
}
|
|
1055
1188
|
|
|
1056
1189
|
word_list:
|
|
1057
1190
|
none
|
|
1058
1191
|
{
|
|
1059
|
-
result =
|
|
1192
|
+
result = s(:array)
|
|
1060
1193
|
}
|
|
1061
1194
|
| word_list word SPACE
|
|
1062
1195
|
{
|
|
1063
|
-
|
|
1196
|
+
part = val[1]
|
|
1197
|
+
part = s(:dstr, "", val[1]) if part[0] == :evstr
|
|
1198
|
+
result = val[0] << part
|
|
1064
1199
|
}
|
|
1065
1200
|
|
|
1066
1201
|
word:
|
|
@@ -1076,75 +1211,95 @@ word:
|
|
|
1076
1211
|
awords:
|
|
1077
1212
|
AWORDS_BEG SPACE STRING_END
|
|
1078
1213
|
{
|
|
1079
|
-
result =
|
|
1214
|
+
result = s(:array)
|
|
1080
1215
|
}
|
|
1081
1216
|
| AWORDS_BEG qword_list STRING_END
|
|
1082
1217
|
{
|
|
1083
|
-
result =
|
|
1218
|
+
result = val[1]
|
|
1084
1219
|
}
|
|
1085
1220
|
|
|
1086
1221
|
qword_list:
|
|
1087
1222
|
none
|
|
1088
1223
|
{
|
|
1089
|
-
result =
|
|
1224
|
+
result = s(:array)
|
|
1090
1225
|
}
|
|
1091
1226
|
| qword_list STRING_CONTENT SPACE
|
|
1092
1227
|
{
|
|
1093
|
-
result = val[0]
|
|
1228
|
+
result = val[0] << s(:str, val[1])
|
|
1094
1229
|
}
|
|
1095
1230
|
|
|
1096
1231
|
string_contents:
|
|
1097
1232
|
none
|
|
1098
1233
|
{
|
|
1099
|
-
result =
|
|
1234
|
+
result = nil
|
|
1100
1235
|
}
|
|
1101
1236
|
| string_contents string_content
|
|
1102
1237
|
{
|
|
1103
|
-
result = val[0]
|
|
1238
|
+
result = str_append val[0], val[1]
|
|
1104
1239
|
}
|
|
1105
1240
|
|
|
1106
1241
|
xstring_contents:
|
|
1107
1242
|
none
|
|
1108
1243
|
{
|
|
1109
|
-
result =
|
|
1244
|
+
result = nil
|
|
1110
1245
|
}
|
|
1111
1246
|
| xstring_contents string_content
|
|
1112
1247
|
{
|
|
1113
|
-
result = val[0]
|
|
1248
|
+
result = str_append val[0], val[1]
|
|
1114
1249
|
}
|
|
1115
1250
|
|
|
1116
1251
|
string_content:
|
|
1117
1252
|
STRING_CONTENT
|
|
1118
1253
|
{
|
|
1119
|
-
result =
|
|
1254
|
+
result = s(:str, val[0])
|
|
1255
|
+
}
|
|
1256
|
+
| STRING_DVAR
|
|
1257
|
+
{
|
|
1258
|
+
result = @string_parse
|
|
1259
|
+
@string_parse = nil
|
|
1120
1260
|
}
|
|
1121
|
-
|
|
1261
|
+
string_dvar
|
|
1122
1262
|
{
|
|
1123
|
-
|
|
1263
|
+
@string_parse = val[1]
|
|
1264
|
+
result = s(:evstr, val[2])
|
|
1124
1265
|
}
|
|
1125
1266
|
| STRING_DBEG
|
|
1126
1267
|
{
|
|
1127
1268
|
cond_push 0
|
|
1128
1269
|
cmdarg_push 0
|
|
1270
|
+
result = @string_parse
|
|
1271
|
+
@string_parse = nil
|
|
1272
|
+
@lex_state = :expr_beg
|
|
1129
1273
|
}
|
|
1130
1274
|
compstmt '}'
|
|
1131
1275
|
{
|
|
1276
|
+
@string_parse = val[1]
|
|
1132
1277
|
cond_lexpop
|
|
1133
1278
|
cmdarg_lexpop
|
|
1134
|
-
result =
|
|
1279
|
+
result = s(:evstr, val[2])
|
|
1135
1280
|
}
|
|
1136
1281
|
|
|
1137
1282
|
string_dvar:
|
|
1138
1283
|
GVAR
|
|
1284
|
+
{
|
|
1285
|
+
result = s(:gvar, val[0].intern)
|
|
1286
|
+
}
|
|
1139
1287
|
| IVAR
|
|
1288
|
+
{
|
|
1289
|
+
result = s(:ivar, val[0].intern)
|
|
1290
|
+
}
|
|
1140
1291
|
| CVAR
|
|
1292
|
+
{
|
|
1293
|
+
result = s(:cvar, val[0].intern)
|
|
1294
|
+
}
|
|
1141
1295
|
| backref
|
|
1142
1296
|
|
|
1143
1297
|
|
|
1144
1298
|
symbol:
|
|
1145
1299
|
SYMBOL_BEG sym
|
|
1146
1300
|
{
|
|
1147
|
-
result =
|
|
1301
|
+
result = val[1].intern
|
|
1302
|
+
@lex_state = :expr_end
|
|
1148
1303
|
}
|
|
1149
1304
|
| SYMBOL
|
|
1150
1305
|
|
|
@@ -1156,80 +1311,72 @@ sym: fname
|
|
|
1156
1311
|
dsym:
|
|
1157
1312
|
SYMBOL_BEG xstring_contents STRING_END
|
|
1158
1313
|
{
|
|
1159
|
-
result =
|
|
1314
|
+
result = new_dsym val[1]
|
|
1160
1315
|
}
|
|
1161
1316
|
|
|
1162
1317
|
numeric:
|
|
1163
1318
|
INTEGER
|
|
1164
|
-
{
|
|
1165
|
-
result = NumericNode.new val[0]
|
|
1166
|
-
}
|
|
1167
1319
|
| FLOAT
|
|
1168
|
-
{
|
|
1169
|
-
result = NumericNode.new val[0]
|
|
1170
|
-
}
|
|
1171
1320
|
| '-@NUM' INTEGER =LOWEST
|
|
1172
1321
|
| '-@NUM' FLOAT =LOWEST
|
|
1173
1322
|
|
|
1174
1323
|
variable:
|
|
1175
1324
|
IDENTIFIER
|
|
1176
1325
|
{
|
|
1177
|
-
result =
|
|
1326
|
+
result = s(:identifier, val[0].intern)
|
|
1178
1327
|
}
|
|
1179
1328
|
| IVAR
|
|
1180
1329
|
{
|
|
1181
|
-
result =
|
|
1330
|
+
result = s(:ivar, val[0].intern)
|
|
1182
1331
|
}
|
|
1183
1332
|
| GVAR
|
|
1184
1333
|
{
|
|
1185
|
-
result =
|
|
1334
|
+
result = s(:gvar, val[0].intern)
|
|
1186
1335
|
}
|
|
1187
1336
|
| CONSTANT
|
|
1188
1337
|
{
|
|
1189
|
-
result =
|
|
1338
|
+
result = s(:const, val[0].intern)
|
|
1190
1339
|
}
|
|
1191
1340
|
| CVAR
|
|
1192
1341
|
{
|
|
1193
|
-
result =
|
|
1342
|
+
result = s(:cvar, val[0].intern)
|
|
1194
1343
|
}
|
|
1195
1344
|
| NIL
|
|
1196
1345
|
{
|
|
1197
|
-
result =
|
|
1198
|
-
}
|
|
1199
|
-
| UNDEFINED
|
|
1200
|
-
{
|
|
1201
|
-
result = UndefinedNode.new val[0]
|
|
1202
|
-
}
|
|
1203
|
-
| NULL
|
|
1204
|
-
{
|
|
1205
|
-
result = NullNode.new val[0]
|
|
1346
|
+
result = s(:nil)
|
|
1206
1347
|
}
|
|
1207
1348
|
| SELF
|
|
1208
1349
|
{
|
|
1209
|
-
result =
|
|
1350
|
+
result = s(:self)
|
|
1210
1351
|
}
|
|
1211
1352
|
| TRUE
|
|
1212
1353
|
{
|
|
1213
|
-
result =
|
|
1354
|
+
result = s(:true)
|
|
1214
1355
|
}
|
|
1215
1356
|
| FALSE
|
|
1216
1357
|
{
|
|
1217
|
-
result =
|
|
1358
|
+
result = s(:false)
|
|
1218
1359
|
}
|
|
1219
1360
|
| FILE
|
|
1220
1361
|
{
|
|
1221
|
-
result =
|
|
1362
|
+
result = s(:str, @file)
|
|
1222
1363
|
}
|
|
1223
1364
|
| LINE
|
|
1224
1365
|
{
|
|
1225
|
-
result =
|
|
1366
|
+
result = s(:lit, @line)
|
|
1226
1367
|
}
|
|
1227
1368
|
|
|
1228
1369
|
var_ref:
|
|
1229
1370
|
variable
|
|
1371
|
+
{
|
|
1372
|
+
result = new_var_ref val[0]
|
|
1373
|
+
}
|
|
1230
1374
|
|
|
1231
1375
|
var_lhs:
|
|
1232
1376
|
variable
|
|
1377
|
+
{
|
|
1378
|
+
result = new_assignable val[0]
|
|
1379
|
+
}
|
|
1233
1380
|
|
|
1234
1381
|
backref:
|
|
1235
1382
|
NTH_REF
|
|
@@ -1262,59 +1409,63 @@ f_arglist:
|
|
|
1262
1409
|
f_args:
|
|
1263
1410
|
f_arg ',' f_optarg ',' f_rest_arg opt_f_block_arg
|
|
1264
1411
|
{
|
|
1265
|
-
result =
|
|
1412
|
+
result = new_args val[0], val[2], val[4], val[5]
|
|
1266
1413
|
}
|
|
1267
1414
|
| f_arg ',' f_optarg opt_f_block_arg
|
|
1268
1415
|
{
|
|
1269
|
-
result =
|
|
1416
|
+
result = new_args val[0], val[2], nil, val[3]
|
|
1270
1417
|
}
|
|
1271
1418
|
| f_arg ',' f_rest_arg opt_f_block_arg
|
|
1272
1419
|
{
|
|
1273
|
-
result =
|
|
1420
|
+
result = new_args val[0], nil, val[2], val[3]
|
|
1274
1421
|
}
|
|
1275
1422
|
| f_arg opt_f_block_arg
|
|
1276
1423
|
{
|
|
1277
|
-
result =
|
|
1424
|
+
result = new_args val[0], nil, nil, val[1]
|
|
1278
1425
|
}
|
|
1279
1426
|
| f_optarg ',' f_rest_arg opt_f_block_arg
|
|
1280
1427
|
{
|
|
1281
|
-
|
|
1428
|
+
result = new_args nil, val[0], val[2], val[3]
|
|
1282
1429
|
}
|
|
1283
1430
|
| f_optarg opt_f_block_arg
|
|
1284
1431
|
{
|
|
1285
|
-
result =
|
|
1432
|
+
result = new_args nil, val[0], nil, val[1]
|
|
1286
1433
|
}
|
|
1287
1434
|
| f_rest_arg opt_f_block_arg
|
|
1288
1435
|
{
|
|
1289
|
-
result =
|
|
1436
|
+
result = new_args nil, nil, val[0], val[1]
|
|
1290
1437
|
}
|
|
1291
1438
|
| f_block_arg
|
|
1292
1439
|
{
|
|
1293
|
-
result =
|
|
1440
|
+
result = new_args nil, nil, nil, val[0]
|
|
1294
1441
|
}
|
|
1295
1442
|
|
|
|
1296
1443
|
{
|
|
1297
|
-
result =
|
|
1444
|
+
result = s(:args)
|
|
1298
1445
|
}
|
|
1299
1446
|
|
|
1300
1447
|
f_norm_arg:
|
|
1301
1448
|
CONSTANT
|
|
1302
1449
|
{
|
|
1303
|
-
|
|
1450
|
+
raise 'formal argument cannot be a constant'
|
|
1304
1451
|
}
|
|
1305
1452
|
| IVAR
|
|
1306
1453
|
{
|
|
1307
|
-
|
|
1454
|
+
raise 'formal argument cannot be an instance variable'
|
|
1308
1455
|
}
|
|
1309
1456
|
| CVAR
|
|
1310
1457
|
{
|
|
1311
|
-
|
|
1458
|
+
raise 'formal argument cannot be a class variable'
|
|
1312
1459
|
}
|
|
1313
1460
|
| GVAR
|
|
1314
1461
|
{
|
|
1315
|
-
|
|
1462
|
+
raise 'formal argument cannot be a global variable'
|
|
1316
1463
|
}
|
|
1317
1464
|
| IDENTIFIER
|
|
1465
|
+
{
|
|
1466
|
+
result = val[0].intern
|
|
1467
|
+
@scope.add_local result
|
|
1468
|
+
}
|
|
1318
1469
|
|
|
1319
1470
|
f_arg:
|
|
1320
1471
|
f_norm_arg
|
|
@@ -1330,13 +1481,13 @@ f_arg:
|
|
|
1330
1481
|
f_opt:
|
|
1331
1482
|
IDENTIFIER '=' arg_value
|
|
1332
1483
|
{
|
|
1333
|
-
result =
|
|
1484
|
+
result = new_assign new_assignable(s(:identifier, val[0].intern)), val[2]
|
|
1334
1485
|
}
|
|
1335
1486
|
|
|
1336
1487
|
f_optarg:
|
|
1337
1488
|
f_opt
|
|
1338
1489
|
{
|
|
1339
|
-
result =
|
|
1490
|
+
result = s(:block, val[0])
|
|
1340
1491
|
}
|
|
1341
1492
|
| f_optarg ',' f_opt
|
|
1342
1493
|
{
|
|
@@ -1351,11 +1502,11 @@ restarg_mark:
|
|
|
1351
1502
|
f_rest_arg:
|
|
1352
1503
|
restarg_mark IDENTIFIER
|
|
1353
1504
|
{
|
|
1354
|
-
result = val[1]
|
|
1505
|
+
result = "*#{val[1]}".intern
|
|
1355
1506
|
}
|
|
1356
1507
|
| restarg_mark
|
|
1357
1508
|
{
|
|
1358
|
-
result =
|
|
1509
|
+
result = :"*"
|
|
1359
1510
|
}
|
|
1360
1511
|
|
|
1361
1512
|
blkarg_mark:
|
|
@@ -1365,7 +1516,7 @@ blkarg_mark:
|
|
|
1365
1516
|
f_block_arg:
|
|
1366
1517
|
blkarg_mark IDENTIFIER
|
|
1367
1518
|
{
|
|
1368
|
-
result = val[1]
|
|
1519
|
+
result = "&#{val[1]}".intern
|
|
1369
1520
|
}
|
|
1370
1521
|
|
|
1371
1522
|
opt_f_block_arg:
|
|
@@ -1405,11 +1556,11 @@ assoc_list:
|
|
|
1405
1556
|
assocs:
|
|
1406
1557
|
assoc
|
|
1407
1558
|
{
|
|
1408
|
-
result =
|
|
1559
|
+
result = val[0]
|
|
1409
1560
|
}
|
|
1410
1561
|
| assocs ',' assoc
|
|
1411
1562
|
{
|
|
1412
|
-
result = val[0]
|
|
1563
|
+
result = val[0].push *val[2]
|
|
1413
1564
|
}
|
|
1414
1565
|
|
|
1415
1566
|
assoc:
|
|
@@ -1419,7 +1570,7 @@ assoc:
|
|
|
1419
1570
|
}
|
|
1420
1571
|
| LABEL arg_value
|
|
1421
1572
|
{
|
|
1422
|
-
result = [
|
|
1573
|
+
result = [s(:lit, val[0].intern), val[1]]
|
|
1423
1574
|
}
|
|
1424
1575
|
|
|
1425
1576
|
operation:
|
|
@@ -1466,9 +1617,4 @@ none_block_pass:
|
|
|
1466
1617
|
|
|
1467
1618
|
end
|
|
1468
1619
|
|
|
1469
|
-
---- header
|
|
1470
|
-
|
|
1471
|
-
require 'opal/lexer'
|
|
1472
|
-
require 'opal/nodes'
|
|
1473
|
-
|
|
1474
1620
|
---- inner
|