opal 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +5 -0
- data/README.md +42 -2
- data/Rakefile +7 -6
- data/bin/opal +2 -2
- data/{opal → corelib}/opal.rb +21 -21
- data/{opal → corelib}/opal/array.rb +37 -24
- data/{opal → corelib}/opal/basic_object.rb +0 -0
- data/{opal → corelib}/opal/boolean.rb +0 -0
- data/{opal → corelib}/opal/class.rb +45 -22
- data/{opal → corelib}/opal/comparable.rb +0 -0
- data/{opal → corelib}/opal/enumerable.rb +0 -0
- data/{opal → corelib}/opal/enumerator.rb +0 -0
- data/{opal → corelib}/opal/error.rb +16 -12
- data/{opal → corelib}/opal/hash.rb +2 -2
- data/{opal → corelib}/opal/kernel.rb +16 -14
- data/{opal → corelib}/opal/native.rb +0 -0
- data/{opal → corelib}/opal/nil_class.rb +1 -1
- data/{opal → corelib}/opal/numeric.rb +0 -0
- data/{opal → corelib}/opal/proc.rb +0 -0
- data/{opal → corelib}/opal/range.rb +2 -2
- data/{opal → corelib}/opal/regexp.rb +0 -0
- data/{opal → corelib}/opal/runtime.js +92 -126
- data/{opal → corelib}/opal/string.rb +14 -13
- data/{opal → corelib}/opal/time.rb +0 -0
- data/lib/opal.rb +9 -8
- data/lib/opal/builder.rb +81 -0
- data/lib/opal/erb.rb +17 -0
- data/lib/opal/grammar.rb +33 -30
- data/lib/opal/grammar.y +18 -15
- data/lib/opal/grammar_helpers.rb +5 -5
- data/lib/opal/lexer.rb +3 -2
- data/lib/opal/parser.rb +58 -41
- data/lib/opal/require_parser.rb +77 -0
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +1 -1
- data/{config.ru → spec/config.ru} +0 -0
- data/spec/opal/array/to_json_spec.rb +3 -1
- data/spec/opal/boolean/to_json_spec.rb +3 -1
- data/spec/opal/erb/erb_spec.rb +25 -0
- data/spec/opal/erb/quoted.opalerb +1 -0
- data/spec/opal/erb/simple.opalerb +1 -0
- data/spec/opal/json/parse_spec.rb +3 -1
- data/spec/opal/kernel/to_json_spec.rb +3 -1
- data/spec/opal/nil/to_json_spec.rb +3 -1
- data/spec/opal/string/to_json_spec.rb +3 -1
- data/spec/parser/int_spec.rb +13 -0
- data/spec/parser/regexp_spec.rb +16 -0
- data/spec/parser/str_spec.rb +11 -0
- data/spec/rubyspec/core/array/plus_spec.rb +7 -2
- data/spec/rubyspec/core/hash/to_json_spec.rb +3 -1
- data/spec/rubyspec/core/numeric/to_json_spec.rb +3 -1
- data/spec/rubyspec/language/defined_spec.rb +9 -0
- data/spec/rubyspec/library/stringscanner/pos_spec.rb +20 -0
- data/{opal → stdlib}/date.rb +0 -0
- data/stdlib/erb.rb +26 -0
- data/{opal → stdlib}/fileutils.rb +0 -0
- data/{opal → stdlib}/iconv.rb +0 -0
- data/{opal/opal → stdlib}/json.rb +0 -0
- data/{opal → stdlib}/observer.rb +0 -0
- data/{opal → stdlib}/opal-browser/local_storage.rb +0 -0
- data/{opal → stdlib}/opal-browser/script_loader.rb +1 -1
- data/{opal → stdlib}/opal-parser.js.erb +1 -1
- data/{opal → stdlib}/opal-source-maps.js.erb +0 -0
- data/{opal → stdlib}/pp.rb +0 -0
- data/{opal → stdlib}/racc.rb +0 -0
- data/{opal → stdlib}/rbconfig.rb +0 -0
- data/{opal → stdlib}/source_map.rb +1 -1
- data/{opal → stdlib}/source_map/generator.rb +0 -0
- data/{opal → stdlib}/source_map/parser.rb +0 -0
- data/{opal → stdlib}/source_map/vlq.rb +0 -0
- data/{opal → stdlib}/strscan.rb +15 -0
- data/{opal → stdlib}/yaml.rb +0 -0
- metadata +87 -77
- checksums.yaml +0 -7
- data/CHANGELOG.md +0 -176
- data/examples/native/Gemfile +0 -3
- data/examples/native/README.md +0 -17
- data/examples/native/app/app.rb +0 -57
- data/examples/native/config.ru +0 -8
- data/examples/native/index.html.erb +0 -12
- data/examples/rack/Gemfile +0 -3
- data/examples/rack/README.md +0 -22
- data/examples/rack/app/app.rb +0 -5
- data/examples/rack/config.ru +0 -20
- data/examples/rack/index.html +0 -12
- data/examples/server/Gemfile +0 -3
- data/examples/server/README.md +0 -22
- data/examples/server/app/app.rb +0 -18
- data/examples/server/config.ru +0 -10
- data/examples/server/index.html.erb +0 -10
- data/opal/opal-template.rb +0 -33
- data/spec/opal/class/_inherited_spec.rb +0 -32
- data/spec/opal/class/new_spec.rb +0 -27
@@ -2,6 +2,7 @@ class String
|
|
2
2
|
include Comparable
|
3
3
|
|
4
4
|
`def._isString = true`
|
5
|
+
`var native_string = "".constructor;`
|
5
6
|
|
6
7
|
def self.try_convert(what)
|
7
8
|
what.to_str
|
@@ -11,7 +12,7 @@ class String
|
|
11
12
|
|
12
13
|
def self.new(str = '')
|
13
14
|
%x{
|
14
|
-
return new
|
15
|
+
return new native_string(str)
|
15
16
|
}
|
16
17
|
end
|
17
18
|
|
@@ -75,7 +76,7 @@ class String
|
|
75
76
|
end
|
76
77
|
|
77
78
|
def ==(other)
|
78
|
-
`other ==
|
79
|
+
`other == native_string(#{self})`
|
79
80
|
end
|
80
81
|
|
81
82
|
alias === ==
|
@@ -429,7 +430,7 @@ class String
|
|
429
430
|
}
|
430
431
|
|
431
432
|
var initial = #{self}.substr(0, #{self}.length - 1);
|
432
|
-
var last =
|
433
|
+
var last = native_string.fromCharCode(#{self}.charCodeAt(#{self}.length - 1) + 1);
|
433
434
|
|
434
435
|
return initial + last;
|
435
436
|
}
|
@@ -455,8 +456,8 @@ class String
|
|
455
456
|
# TODO handle case where search is regexp
|
456
457
|
def rindex(search, offset = undefined)
|
457
458
|
%x{
|
458
|
-
var search_type = (search == null ? Opal.NilClass : search
|
459
|
-
if (search_type !=
|
459
|
+
var search_type = (search == null ? Opal.NilClass : search.constructor);
|
460
|
+
if (search_type != native_string && search_type != RegExp) {
|
460
461
|
var msg = "type mismatch: " + search_type + " given";
|
461
462
|
#{raise TypeError.new(`msg`)};
|
462
463
|
}
|
@@ -471,7 +472,7 @@ class String
|
|
471
472
|
offset = #{self}.length + offset;
|
472
473
|
}
|
473
474
|
|
474
|
-
if (search_type ==
|
475
|
+
if (search_type == native_string) {
|
475
476
|
result = #{self}.lastIndexOf(search, offset);
|
476
477
|
}
|
477
478
|
else {
|
@@ -482,7 +483,7 @@ class String
|
|
482
483
|
}
|
483
484
|
}
|
484
485
|
else {
|
485
|
-
if (search_type ==
|
486
|
+
if (search_type == native_string) {
|
486
487
|
result = #{self}.lastIndexOf(search);
|
487
488
|
}
|
488
489
|
else {
|
@@ -645,7 +646,7 @@ class String
|
|
645
646
|
return $1 ? $0.toUpperCase() : $0.toLowerCase();
|
646
647
|
});
|
647
648
|
|
648
|
-
if (#{self}.constructor ===
|
649
|
+
if (#{self}.constructor === native_string) {
|
649
650
|
return str;
|
650
651
|
}
|
651
652
|
|
@@ -750,7 +751,7 @@ class String
|
|
750
751
|
var start = last_from.charCodeAt(0) + 1;
|
751
752
|
var end = char.charCodeAt(0);
|
752
753
|
for (var c = start; c < end; c++) {
|
753
|
-
from_chars_expanded.push(
|
754
|
+
from_chars_expanded.push(native_string.fromCharCode(c));
|
754
755
|
}
|
755
756
|
from_chars_expanded.push(char);
|
756
757
|
in_range = null;
|
@@ -796,7 +797,7 @@ class String
|
|
796
797
|
var start = last_from.charCodeAt(0) + 1;
|
797
798
|
var end = char.charCodeAt(0);
|
798
799
|
for (var c = start; c < end; c++) {
|
799
|
-
to_chars_expanded.push(
|
800
|
+
to_chars_expanded.push(native_string.fromCharCode(c));
|
800
801
|
}
|
801
802
|
to_chars_expanded.push(char);
|
802
803
|
in_range = null;
|
@@ -885,7 +886,7 @@ class String
|
|
885
886
|
var start = last_from.charCodeAt(0) + 1;
|
886
887
|
var end = char.charCodeAt(0);
|
887
888
|
for (var c = start; c < end; c++) {
|
888
|
-
from_chars_expanded.push(
|
889
|
+
from_chars_expanded.push(native_string.fromCharCode(c));
|
889
890
|
}
|
890
891
|
from_chars_expanded.push(char);
|
891
892
|
in_range = null;
|
@@ -931,7 +932,7 @@ class String
|
|
931
932
|
var start = last_from.charCodeAt(0) + 1;
|
932
933
|
var end = char.charCodeAt(0);
|
933
934
|
for (var c = start; c < end; c++) {
|
934
|
-
to_chars_expanded.push(
|
935
|
+
to_chars_expanded.push(native_string.fromCharCode(c));
|
935
936
|
}
|
936
937
|
to_chars_expanded.push(char);
|
937
938
|
in_range = null;
|
@@ -1012,7 +1013,7 @@ class MatchData < Array
|
|
1012
1013
|
|
1013
1014
|
def self.new(regexp, match_groups)
|
1014
1015
|
%x{
|
1015
|
-
var instance = new Opal.MatchData;
|
1016
|
+
var instance = new Opal.MatchData._alloc;
|
1016
1017
|
for (var i = 0, len = match_groups.length; i < len; i++) {
|
1017
1018
|
var group = match_groups[i];
|
1018
1019
|
if (group == undefined) {
|
File without changes
|
data/lib/opal.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'opal/parser'
|
2
|
+
require 'opal/require_parser'
|
3
|
+
require 'opal/builder'
|
4
|
+
require 'opal/erb'
|
2
5
|
require 'opal/version'
|
3
6
|
|
4
7
|
# Opal is a ruby to javascript compiler, with a runtime for running
|
@@ -15,26 +18,24 @@ module Opal
|
|
15
18
|
Parser.new.parse(source, options)
|
16
19
|
end
|
17
20
|
|
18
|
-
# Returns the path to the opal corelib. Used by Opal::Processor to load
|
19
|
-
# opal runtime and core lib.
|
20
|
-
#
|
21
|
-
# @return [String]
|
22
21
|
def self.core_dir
|
23
|
-
File.expand_path('../../
|
22
|
+
File.expand_path('../../corelib', __FILE__)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.std_dir
|
26
|
+
File.expand_path('../../stdlib', __FILE__)
|
24
27
|
end
|
25
28
|
|
26
29
|
# Add a file path to opals load path. Any gem containing ruby code that Opal
|
27
30
|
# has access to should add a load path through this method. Load paths added
|
28
31
|
# here should only be paths which contain code targeted at being compiled by
|
29
32
|
# Opal.
|
30
|
-
#
|
31
|
-
# @param [String] path file path to add
|
32
33
|
def self.append_path(path)
|
33
34
|
paths << path
|
34
35
|
end
|
35
36
|
|
36
37
|
# Private, don't add to these directly (use .append_path instead).
|
37
38
|
def self.paths
|
38
|
-
@paths ||= [core_dir]
|
39
|
+
@paths ||= [core_dir, std_dir]
|
39
40
|
end
|
40
41
|
end
|
data/lib/opal/builder.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'opal/require_parser'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
module Opal
|
5
|
+
class Builder
|
6
|
+
|
7
|
+
BUILDERS = { ".rb" => :build_ruby, ".js" => :build_js, ".erb" => :build_erb }
|
8
|
+
|
9
|
+
def self.build(name)
|
10
|
+
Builder.new.build name
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@paths = Opal.paths.clone
|
15
|
+
end
|
16
|
+
|
17
|
+
def append_path(path)
|
18
|
+
@paths << path
|
19
|
+
end
|
20
|
+
|
21
|
+
def build(path)
|
22
|
+
@segments = []
|
23
|
+
@handled = {}
|
24
|
+
|
25
|
+
require_asset path
|
26
|
+
|
27
|
+
@segments.join
|
28
|
+
end
|
29
|
+
|
30
|
+
def require_asset(path)
|
31
|
+
location = find_asset path
|
32
|
+
|
33
|
+
build_asset location
|
34
|
+
end
|
35
|
+
|
36
|
+
def find_asset(path)
|
37
|
+
file_types = %w[.rb .js .js.erb]
|
38
|
+
|
39
|
+
@paths.each do |root|
|
40
|
+
file_types.each do |type|
|
41
|
+
test = File.join root, "#{path}#{type}"
|
42
|
+
|
43
|
+
if File.exist? test
|
44
|
+
return test
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
raise "Could not find asset: #{path}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def build_asset(path)
|
53
|
+
ext = File.extname path
|
54
|
+
|
55
|
+
unless builder = BUILDERS[ext]
|
56
|
+
raise "Unknown builder for #{ext}"
|
57
|
+
end
|
58
|
+
|
59
|
+
@segments << __send__(builder, path)
|
60
|
+
end
|
61
|
+
|
62
|
+
def build_ruby(path)
|
63
|
+
parser = RequireParser.new
|
64
|
+
result = parser.parse File.read(path)
|
65
|
+
|
66
|
+
parser.requires.each do |r|
|
67
|
+
require_asset r
|
68
|
+
end
|
69
|
+
|
70
|
+
result
|
71
|
+
end
|
72
|
+
|
73
|
+
def build_js(path)
|
74
|
+
File.read(path)
|
75
|
+
end
|
76
|
+
|
77
|
+
def build_erb(path)
|
78
|
+
::ERB.new(File.read(path)).result binding
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/opal/erb.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'opal/parser'
|
2
|
+
|
3
|
+
module Opal
|
4
|
+
module ERB
|
5
|
+
def self.parse(str, name='(erb)')
|
6
|
+
body = str.gsub('"', '\\"').gsub(/<%=([\s\S]+?)%>/) do
|
7
|
+
inner = $1.gsub(/\\'/, "'").gsub(/\\"/, '"')
|
8
|
+
"\")\nout.<<(#{ inner })\nout.<<(\""
|
9
|
+
end.gsub(/<%([\s\S]+?)%>/) do
|
10
|
+
"\")\n#{ $1 }\nout.<<(\""
|
11
|
+
end
|
12
|
+
|
13
|
+
code = "ERB.new('#{name}') do |out|\nout.<<(\"#{ body }\")\nout.join\nend\n"
|
14
|
+
Opal.parse code
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/opal/grammar.rb
CHANGED
@@ -1967,7 +1967,7 @@ racc_reduce_table = [
|
|
1967
1967
|
1, 181, :_reduce_93,
|
1968
1968
|
1, 181, :_reduce_94,
|
1969
1969
|
1, 149, :_reduce_95,
|
1970
|
-
1, 149, :
|
1970
|
+
1, 149, :_reduce_none,
|
1971
1971
|
1, 150, :_reduce_97,
|
1972
1972
|
3, 150, :_reduce_98,
|
1973
1973
|
1, 182, :_reduce_none,
|
@@ -2243,8 +2243,8 @@ racc_reduce_table = [
|
|
2243
2243
|
1, 253, :_reduce_369,
|
2244
2244
|
2, 143, :_reduce_370,
|
2245
2245
|
1, 143, :_reduce_none,
|
2246
|
-
1, 198, :
|
2247
|
-
1, 198, :
|
2246
|
+
1, 198, :_reduce_none,
|
2247
|
+
1, 198, :_reduce_none,
|
2248
2248
|
1, 198, :_reduce_none,
|
2249
2249
|
1, 199, :_reduce_375,
|
2250
2250
|
1, 256, :_reduce_none,
|
@@ -2277,14 +2277,14 @@ racc_reduce_table = [
|
|
2277
2277
|
1, 264, :_reduce_403,
|
2278
2278
|
1, 264, :_reduce_none,
|
2279
2279
|
2, 184, :_reduce_405,
|
2280
|
-
1, 184, :
|
2280
|
+
1, 184, :_reduce_406,
|
2281
2281
|
1, 267, :_reduce_none,
|
2282
2282
|
1, 267, :_reduce_none,
|
2283
2283
|
1, 267, :_reduce_none,
|
2284
2284
|
1, 267, :_reduce_none,
|
2285
2285
|
3, 255, :_reduce_411,
|
2286
|
-
1, 254, :
|
2287
|
-
1, 254, :
|
2286
|
+
1, 254, :_reduce_412,
|
2287
|
+
1, 254, :_reduce_413,
|
2288
2288
|
2, 254, :_reduce_none,
|
2289
2289
|
2, 254, :_reduce_none,
|
2290
2290
|
1, 178, :_reduce_416,
|
@@ -3261,16 +3261,12 @@ def _reduce_94(val, _values, result)
|
|
3261
3261
|
end
|
3262
3262
|
|
3263
3263
|
def _reduce_95(val, _values, result)
|
3264
|
-
result = s(:
|
3264
|
+
result = s(:sym, val[0].intern)
|
3265
3265
|
|
3266
3266
|
result
|
3267
3267
|
end
|
3268
3268
|
|
3269
|
-
|
3270
|
-
result = s(:lit, val[0])
|
3271
|
-
|
3272
|
-
result
|
3273
|
-
end
|
3269
|
+
# reduce 96 omitted
|
3274
3270
|
|
3275
3271
|
def _reduce_97(val, _values, result)
|
3276
3272
|
result = s(:undef, val[0])
|
@@ -3517,16 +3513,19 @@ end
|
|
3517
3513
|
|
3518
3514
|
def _reduce_188(val, _values, result)
|
3519
3515
|
result = new_call val[1], :"+@", s(:arglist)
|
3520
|
-
result = val[1] if
|
3516
|
+
result = val[1] if [:int, :float].include? val[1][0]
|
3521
3517
|
|
3522
3518
|
result
|
3523
3519
|
end
|
3524
3520
|
|
3525
3521
|
def _reduce_189(val, _values, result)
|
3526
3522
|
result = new_call val[1], :"-@", s(:arglist)
|
3527
|
-
if val[1][0] == :
|
3523
|
+
if val[1][0] == :int
|
3528
3524
|
val[1][1] = -val[1][1]
|
3529
3525
|
result = val[1]
|
3526
|
+
elsif val[1][0] == :float
|
3527
|
+
val[1][1] = -val[1][1].to_f
|
3528
|
+
result = val[1]
|
3530
3529
|
end
|
3531
3530
|
|
3532
3531
|
result
|
@@ -4513,17 +4512,9 @@ end
|
|
4513
4512
|
|
4514
4513
|
# reduce 371 omitted
|
4515
4514
|
|
4516
|
-
|
4517
|
-
result = s(:lit, val[0])
|
4518
|
-
|
4519
|
-
result
|
4520
|
-
end
|
4515
|
+
# reduce 372 omitted
|
4521
4516
|
|
4522
|
-
|
4523
|
-
result = s(:lit, val[0])
|
4524
|
-
|
4525
|
-
result
|
4526
|
-
end
|
4517
|
+
# reduce 373 omitted
|
4527
4518
|
|
4528
4519
|
# reduce 374 omitted
|
4529
4520
|
|
@@ -4707,13 +4698,17 @@ end
|
|
4707
4698
|
# reduce 404 omitted
|
4708
4699
|
|
4709
4700
|
def _reduce_405(val, _values, result)
|
4710
|
-
result = val[1].intern
|
4701
|
+
result = s(:sym, val[1].intern)
|
4711
4702
|
@lex_state = :expr_end
|
4712
4703
|
|
4713
4704
|
result
|
4714
4705
|
end
|
4715
4706
|
|
4716
|
-
|
4707
|
+
def _reduce_406(val, _values, result)
|
4708
|
+
result = s(:sym, val[0].intern)
|
4709
|
+
|
4710
|
+
result
|
4711
|
+
end
|
4717
4712
|
|
4718
4713
|
# reduce 407 omitted
|
4719
4714
|
|
@@ -4729,9 +4724,17 @@ def _reduce_411(val, _values, result)
|
|
4729
4724
|
result
|
4730
4725
|
end
|
4731
4726
|
|
4732
|
-
|
4727
|
+
def _reduce_412(val, _values, result)
|
4728
|
+
result = s(:int, val[0])
|
4729
|
+
|
4730
|
+
result
|
4731
|
+
end
|
4733
4732
|
|
4734
|
-
|
4733
|
+
def _reduce_413(val, _values, result)
|
4734
|
+
result = s(:float, val[0])
|
4735
|
+
|
4736
|
+
result
|
4737
|
+
end
|
4735
4738
|
|
4736
4739
|
# reduce 414 omitted
|
4737
4740
|
|
@@ -4798,7 +4801,7 @@ def _reduce_425(val, _values, result)
|
|
4798
4801
|
end
|
4799
4802
|
|
4800
4803
|
def _reduce_426(val, _values, result)
|
4801
|
-
result = s(:
|
4804
|
+
result = s(:int, @line)
|
4802
4805
|
|
4803
4806
|
result
|
4804
4807
|
end
|
@@ -5057,7 +5060,7 @@ def _reduce_471(val, _values, result)
|
|
5057
5060
|
end
|
5058
5061
|
|
5059
5062
|
def _reduce_472(val, _values, result)
|
5060
|
-
result = [s(:
|
5063
|
+
result = [s(:sym, val[0].intern), val[1]]
|
5061
5064
|
|
5062
5065
|
result
|
5063
5066
|
end
|
data/lib/opal/grammar.y
CHANGED
@@ -382,12 +382,9 @@ fname:
|
|
382
382
|
fitem:
|
383
383
|
fname
|
384
384
|
{
|
385
|
-
result = s(:
|
385
|
+
result = s(:sym, val[0].intern)
|
386
386
|
}
|
387
387
|
| symbol
|
388
|
-
{
|
389
|
-
result = s(:lit, val[0])
|
390
|
-
}
|
391
388
|
|
392
389
|
undef_list:
|
393
390
|
fitem
|
@@ -480,14 +477,17 @@ arg:
|
|
480
477
|
| '+@' arg
|
481
478
|
{
|
482
479
|
result = new_call val[1], :"+@", s(:arglist)
|
483
|
-
result = val[1] if
|
480
|
+
result = val[1] if [:int, :float].include? val[1][0]
|
484
481
|
}
|
485
482
|
| '-@' arg
|
486
483
|
{
|
487
484
|
result = new_call val[1], :"-@", s(:arglist)
|
488
|
-
if val[1][0] == :
|
485
|
+
if val[1][0] == :int
|
489
486
|
val[1][1] = -val[1][1]
|
490
487
|
result = val[1]
|
488
|
+
elsif val[1][0] == :float
|
489
|
+
val[1][1] = -val[1][1].to_f
|
490
|
+
result = val[1]
|
491
491
|
end
|
492
492
|
}
|
493
493
|
| arg '|' arg
|
@@ -1221,13 +1221,7 @@ opt_ensure:
|
|
1221
1221
|
|
1222
1222
|
literal:
|
1223
1223
|
numeric
|
1224
|
-
{
|
1225
|
-
result = s(:lit, val[0])
|
1226
|
-
}
|
1227
1224
|
| symbol
|
1228
|
-
{
|
1229
|
-
result = s(:lit, val[0])
|
1230
|
-
}
|
1231
1225
|
| dsym
|
1232
1226
|
|
1233
1227
|
strings:
|
@@ -1384,10 +1378,13 @@ string_dvar:
|
|
1384
1378
|
symbol:
|
1385
1379
|
SYMBOL_BEG sym
|
1386
1380
|
{
|
1387
|
-
result = val[1].intern
|
1381
|
+
result = s(:sym, val[1].intern)
|
1388
1382
|
@lex_state = :expr_end
|
1389
1383
|
}
|
1390
1384
|
| SYMBOL
|
1385
|
+
{
|
1386
|
+
result = s(:sym, val[0].intern)
|
1387
|
+
}
|
1391
1388
|
|
1392
1389
|
sym: fname
|
1393
1390
|
| IVAR
|
@@ -1402,7 +1399,13 @@ dsym:
|
|
1402
1399
|
|
1403
1400
|
numeric:
|
1404
1401
|
INTEGER
|
1402
|
+
{
|
1403
|
+
result = s(:int, val[0])
|
1404
|
+
}
|
1405
1405
|
| FLOAT
|
1406
|
+
{
|
1407
|
+
result = s(:float, val[0])
|
1408
|
+
}
|
1406
1409
|
| '-@NUM' INTEGER =LOWEST
|
1407
1410
|
| '-@NUM' FLOAT =LOWEST
|
1408
1411
|
|
@@ -1449,7 +1452,7 @@ variable:
|
|
1449
1452
|
}
|
1450
1453
|
| LINE
|
1451
1454
|
{
|
1452
|
-
result = s(:
|
1455
|
+
result = s(:int, @line)
|
1453
1456
|
}
|
1454
1457
|
|
1455
1458
|
var_ref:
|
@@ -1659,7 +1662,7 @@ assoc:
|
|
1659
1662
|
}
|
1660
1663
|
| LABEL arg_value
|
1661
1664
|
{
|
1662
|
-
result = [s(:
|
1665
|
+
result = [s(:sym, val[0].intern), val[1]]
|
1663
1666
|
}
|
1664
1667
|
|
1665
1668
|
operation:
|