ruby_parser 3.3.0 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -2
- data/.autotest +21 -14
- data/History.txt +50 -0
- data/Manifest.txt +3 -1
- data/Rakefile +20 -14
- data/bin/ruby_parse_extract_error +8 -2
- data/lib/.document +1 -0
- data/lib/ruby18_parser.rb +12 -7
- data/lib/ruby18_parser.y +12 -7
- data/lib/ruby19_parser.rb +5 -3
- data/lib/ruby19_parser.y +5 -3
- data/lib/ruby20_parser.rb +17 -5
- data/lib/ruby20_parser.y +17 -5
- data/lib/ruby_lexer.rb +502 -664
- data/lib/ruby_lexer.rex +189 -0
- data/lib/ruby_lexer.rex.rb +263 -0
- data/lib/ruby_parser_extras.rb +45 -58
- data/test/test_ruby_lexer.rb +22 -13
- data/test/test_ruby_parser.rb +85 -25
- metadata +21 -5
- metadata.gz.sig +0 -0
- data/lib/gauntlet_rubyparser.rb +0 -117
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c54a714696b5a3055f3f423bb81b3a6f4ecc2584
|
4
|
+
data.tar.gz: 5215e8bb9dccbd5f4dd6b515844fc1525ad56334
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed81b97bf7ec8fc1800ab0c247cbb22850cb5e0559f9372eb19061f2d361237bc2c88cd2512ccfe7896c1515da4ded3bcadd8357b22028c9fd186ef4cbb55ed4
|
7
|
+
data.tar.gz: adc086eee5342a953f578aae3daf22685b1462f7e5444476f83babb09ff2b1940b40de5dc7a83cf249b56915057f594612849c9b2155074156cb80568e6c5d19
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
���ְ�A%��s�g���<���1��6ǭ9��X��樀tlѽJ������<������_h�<2)`k�|.�-�J���e�g����l^ ��»I������t+xHS>�e|~�@؍�
|
2
|
+
���a��5���SN $-b*I�J�65�
|
data/.autotest
CHANGED
@@ -7,20 +7,17 @@ require 'autotest/rcov' if ENV['RCOV']
|
|
7
7
|
Autotest.add_hook :initialize do |at|
|
8
8
|
at.extra_files << "../../sexp_processor/dev/lib/pt_testcase.rb"
|
9
9
|
at.libs << ":../../sexp_processor/dev/lib"
|
10
|
-
at.add_exception
|
11
|
-
at.add_exception
|
12
|
-
at.add_exception
|
13
|
-
at.add_exception
|
14
|
-
at.add_exception
|
15
|
-
at.add_exception 'rubycorpus'
|
10
|
+
at.add_exception "unit"
|
11
|
+
at.add_exception "coverage"
|
12
|
+
at.add_exception "coverage.info"
|
13
|
+
at.add_exception ".diff"
|
14
|
+
at.add_exception ".output"
|
16
15
|
at.add_exception "lib/ruby18_parser.rb"
|
17
16
|
at.add_exception "lib/ruby19_parser.rb"
|
18
17
|
at.add_exception "lib/ruby20_parser.rb"
|
19
|
-
at.add_exception "lib/
|
18
|
+
at.add_exception "lib/ruby_lexer.rex.rb"
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
dirs.each do |f|
|
20
|
+
Dir["gauntlet*"].each do |f|
|
24
21
|
at.add_exception f
|
25
22
|
end
|
26
23
|
|
@@ -28,7 +25,17 @@ Autotest.add_hook :initialize do |at|
|
|
28
25
|
at.testlib = "minitest/autorun"
|
29
26
|
|
30
27
|
at.add_mapping(/^lib\/.*\.y$/) do |f, _|
|
31
|
-
|
28
|
+
g = File.basename(f, ".y").gsub("_", "_?").gsub(/1[89]|20/, '')
|
29
|
+
at.files_matching %r%^test/.*#{g}.rb$%
|
30
|
+
end
|
31
|
+
|
32
|
+
at.add_mapping(/^lib\/ruby_lexer\.rex\.rb$/) do |f, _|
|
33
|
+
at.files_matching %r%^test/.*ruby_lexer\.rb$%
|
34
|
+
end
|
35
|
+
|
36
|
+
at.add_mapping(/^lib\/.*\.rex$/) do |f, _|
|
37
|
+
g = File.basename(f, ".rex").gsub("_", "_?")
|
38
|
+
at.files_matching %r%^test/.*#{g}.rb$%
|
32
39
|
end
|
33
40
|
|
34
41
|
at.add_mapping(/pt_testcase.rb/) do |f, _|
|
@@ -45,17 +52,17 @@ Autotest.add_hook :initialize do |at|
|
|
45
52
|
end
|
46
53
|
|
47
54
|
Autotest.add_hook :run_command do |at, _|
|
48
|
-
system "rake parser DEBUG=1"
|
55
|
+
system "rake parser lexer DEBUG=1"
|
49
56
|
end
|
50
57
|
|
51
58
|
class Autotest
|
52
59
|
def ruby
|
53
60
|
File.expand_path "~/.multiruby/install/1.9.3-p194/bin/ruby"
|
54
61
|
end
|
55
|
-
end if ENV[
|
62
|
+
end if ENV["R19"]
|
56
63
|
|
57
64
|
class Autotest
|
58
65
|
def ruby
|
59
66
|
File.expand_path "~/.multiruby/install/2.0.0-p195/bin/ruby"
|
60
67
|
end
|
61
|
-
end if ENV[
|
68
|
+
end if ENV["R20"]
|
data/History.txt
CHANGED
@@ -1,3 +1,53 @@
|
|
1
|
+
=== 3.4.0 / 2014-02-04
|
2
|
+
|
3
|
+
* 1 major enhancement:
|
4
|
+
|
5
|
+
* Replaced hand-written/optimized f'd-up lexer with an oedipus_lex
|
6
|
+
generated lexer. This makes it roughly 40-50% faster.
|
7
|
+
|
8
|
+
* 30 minor enhancements:
|
9
|
+
|
10
|
+
* 2.0: Added support for a.b c() do d end.e do |f| g end
|
11
|
+
* 2.0: Added support for a.b c() do d end.e f do |g| h end
|
12
|
+
* Added -s flag to ruby_parse_extract_error to output timings.
|
13
|
+
* Added RubyLexer #command_state and #last_state to deal with oedipus_lex differences.
|
14
|
+
* Added String#lineno and #lineno= because I'm a bad bad person.
|
15
|
+
* Added a bunch of RubyLexer scanning methods: beginning_of_line?, check, scan, etc.
|
16
|
+
* Added a bunch of process_* methods extracted from old yylex. process_amper, etc.
|
17
|
+
* Added lib/.document to save my laptop's battery from pain and suffering
|
18
|
+
* Adjust lineno when we lex a bunch of blank lines.
|
19
|
+
* Attach lineno to tIDENTIFIER values (strings, ugh)
|
20
|
+
* Cleaned up and re-ordered node_assign to be faster (ordered by actual occurrance).
|
21
|
+
* Extend RubyParserStuff#gettable to set the lineno if it comes in with the id.
|
22
|
+
* Extended RubyParserStuff#new_case to take line number.
|
23
|
+
* Finally dropped RPStringScanner's BS #current_line.
|
24
|
+
* Finally dropped RPStringScanner's BS line number calculation (lineno).
|
25
|
+
* Implemented Sexp#add_all since we now have a test case for it.
|
26
|
+
* Removed :call case of node_assign. I don't think it is possible.
|
27
|
+
* Removed RubyLexer #extra_lines_added. No longer used. Complex heredoc lineno's possible screwed up.
|
28
|
+
* Removed RubyLexer#parse_number. Handled by oedipus_lex.
|
29
|
+
* Removed RubyLexer#yacc_value now that next_token returns pairs.
|
30
|
+
* Removed RubyLexer's @src. Now taken care of by oedipus_lex.
|
31
|
+
* Removed RubyParser#advance. RubyParser#next_token takes care of everything now.
|
32
|
+
* Removed RubyParserExtras#arg_add. (presidentbeef! YAY!)
|
33
|
+
* Removed lib/gauntlet_rubyparser.rb. I just don't use it anymore. Too slow.
|
34
|
+
* RubyLexer#is_label_possible? doesn't need an arg
|
35
|
+
* RubyLexer#process_token is now a normal oedipal lexer method.
|
36
|
+
* RubyParser#next_token now expects RubyLexer#next_token to return a pair (type, val).
|
37
|
+
* TRYING a new scheme to figure out encodings... but I'm about to throw in the towel. I hate this stuff so much.
|
38
|
+
* Turned off oedipus_lex's automatic line counting. (pushing to oedipus_lex soon).
|
39
|
+
* Updated to oedipus_lex 2.1+.
|
40
|
+
|
41
|
+
* 7 bug fixes:
|
42
|
+
|
43
|
+
* 1.8: Properly parse `a (:b, :c, :d => :e)`. (presidentbeef)
|
44
|
+
* Fixed lexing symbol!= vs symbol!. Please use your spacebar. Think of the children.
|
45
|
+
* Fixed line for dstr spanning multiple lines via backslash. (presidentbeef)
|
46
|
+
* Fixed line numbers for odd cases with trailing whitespace. (presidentbeef)
|
47
|
+
* Fixed line numbers on ambiguous calls w/ gvar/ivar args. (presidentbeef)
|
48
|
+
* Max out unicode hex values to 2-4 or 2-6 chars or pack will overflow and puke.
|
49
|
+
* Removed ESC_RE from RubyLexer. Must have slipped through.
|
50
|
+
|
1
51
|
=== 3.3.0 / 2014-01-14
|
2
52
|
|
3
53
|
* Notes:
|
data/Manifest.txt
CHANGED
@@ -5,7 +5,7 @@ README.txt
|
|
5
5
|
Rakefile
|
6
6
|
bin/ruby_parse
|
7
7
|
bin/ruby_parse_extract_error
|
8
|
-
lib
|
8
|
+
lib/.document
|
9
9
|
lib/ruby18_parser.rb
|
10
10
|
lib/ruby18_parser.y
|
11
11
|
lib/ruby19_parser.rb
|
@@ -13,6 +13,8 @@ lib/ruby19_parser.y
|
|
13
13
|
lib/ruby20_parser.rb
|
14
14
|
lib/ruby20_parser.y
|
15
15
|
lib/ruby_lexer.rb
|
16
|
+
lib/ruby_lexer.rex
|
17
|
+
lib/ruby_lexer.rex.rb
|
16
18
|
lib/ruby_parser.rb
|
17
19
|
lib/ruby_parser_extras.rb
|
18
20
|
test/test_ruby_lexer.rb
|
data/Rakefile
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
$:.unshift "../../hoe/dev/lib"
|
4
|
+
|
5
|
+
require "rubygems"
|
6
|
+
require "hoe"
|
5
7
|
|
6
8
|
Hoe.plugin :seattlerb
|
7
9
|
Hoe.plugin :racc
|
@@ -10,18 +12,20 @@ Hoe.plugin :isolate
|
|
10
12
|
Hoe.add_include_dirs "../../sexp_processor/dev/lib"
|
11
13
|
Hoe.add_include_dirs "../../minitest/dev/lib"
|
12
14
|
|
13
|
-
Hoe.spec
|
14
|
-
developer
|
15
|
+
Hoe.spec "ruby_parser" do
|
16
|
+
developer "Ryan Davis", "ryand-ruby@zenspider.com"
|
15
17
|
|
16
18
|
license "MIT"
|
17
19
|
|
18
|
-
dependency
|
19
|
-
dependency
|
20
|
+
dependency "sexp_processor", "~> 4.1"
|
21
|
+
dependency "rake", "< 11", :developer
|
22
|
+
dependency "oedipus_lex", "~> 2.1", :developer
|
20
23
|
|
21
24
|
if plugin? :perforce then
|
22
25
|
self.perforce_ignore << "lib/ruby18_parser.rb"
|
23
26
|
self.perforce_ignore << "lib/ruby19_parser.rb"
|
24
27
|
self.perforce_ignore << "lib/ruby20_parser.rb"
|
28
|
+
self.perforce_ignore << "lib/ruby_lexer.rex.rb"
|
25
29
|
end
|
26
30
|
|
27
31
|
self.racc_flags << " -t" if plugin?(:racc) && ENV["DEBUG"]
|
@@ -30,10 +34,11 @@ end
|
|
30
34
|
file "lib/ruby18_parser.rb" => "lib/ruby18_parser.y"
|
31
35
|
file "lib/ruby19_parser.rb" => "lib/ruby19_parser.y"
|
32
36
|
file "lib/ruby20_parser.rb" => "lib/ruby20_parser.y"
|
37
|
+
file "lib/ruby_lexer.rex.rb" => "lib/ruby_lexer.rex"
|
33
38
|
|
34
39
|
task :clean do
|
35
40
|
rm_rf(Dir["**/*~"] +
|
36
|
-
Dir["
|
41
|
+
Dir["diff.diff"] + # not all diffs. bit me too many times
|
37
42
|
Dir["coverage.info"] +
|
38
43
|
Dir["coverage"] +
|
39
44
|
Dir["lib/*.output"])
|
@@ -51,12 +56,12 @@ task :compare do
|
|
51
56
|
puts file
|
52
57
|
system "./cmp.rb -q #{file} && rm #{file}"
|
53
58
|
end
|
54
|
-
system
|
59
|
+
system "find -d unit -type d -empty -exec rmdir {} \;"
|
55
60
|
end
|
56
61
|
|
57
62
|
task :sort do
|
58
|
-
sh
|
59
|
-
sh
|
63
|
+
sh "grepsort '^ +def' lib/ruby_lexer.rb"
|
64
|
+
sh "grepsort '^ +def (test|util)' test/test_ruby_lexer.rb"
|
60
65
|
end
|
61
66
|
|
62
67
|
task :loc do
|
@@ -78,7 +83,7 @@ task :validate do
|
|
78
83
|
end
|
79
84
|
|
80
85
|
def run_and_log cmd, prefix
|
81
|
-
files = ENV[
|
86
|
+
files = ENV["FILES"] || "unit/*.rb"
|
82
87
|
p, x = prefix, "txt"
|
83
88
|
n = Dir["#{p}.*.#{x}"].map { |s| s[/\d+/].to_i }.max + 1 rescue 1
|
84
89
|
f = "#{p}.#{n}.#{x}"
|
@@ -140,10 +145,11 @@ end
|
|
140
145
|
task :debug => :isolate do
|
141
146
|
ENV["V"] ||= "20"
|
142
147
|
Rake.application[:parser].invoke # this way we can have DEBUG set
|
148
|
+
Rake.application[:lexer].invoke # this way we can have DEBUG set
|
143
149
|
|
144
150
|
$: << "lib"
|
145
|
-
require
|
146
|
-
require
|
151
|
+
require "ruby_parser"
|
152
|
+
require "pp"
|
147
153
|
|
148
154
|
parser = case ENV["V"]
|
149
155
|
when "18" then
|
@@ -169,7 +175,7 @@ task :debug => :isolate do
|
|
169
175
|
pp parser.process(ruby, file, time)
|
170
176
|
rescue Racc::ParseError => e
|
171
177
|
p e
|
172
|
-
ss = parser.lexer.
|
178
|
+
ss = parser.lexer.ss
|
173
179
|
src = ss.string
|
174
180
|
lines = src[0..ss.pos].split(/\n/)
|
175
181
|
abort "on #{file}:#{lines.size}"
|
@@ -9,6 +9,7 @@ $m ||= ENV["MOVE_TIMEOUT"]
|
|
9
9
|
$q ||= false
|
10
10
|
$q ||= ENV["QUIET"]
|
11
11
|
$v ||= ENV["V"] || "20"
|
12
|
+
$s ||= ENV["SPEED"] || false
|
12
13
|
|
13
14
|
require 'rubygems'
|
14
15
|
require 'ruby_parser'
|
@@ -37,7 +38,7 @@ ARGV.push "-" if ARGV.empty?
|
|
37
38
|
|
38
39
|
class Racc::Parser
|
39
40
|
def extract_defs
|
40
|
-
ss = lexer.
|
41
|
+
ss = lexer.ss
|
41
42
|
|
42
43
|
raise "can't access source. possible encoding issue" unless ss
|
43
44
|
|
@@ -113,8 +114,13 @@ def process file
|
|
113
114
|
|
114
115
|
$stderr.print "# Validating #{file}: "
|
115
116
|
parser = $parser_class.new
|
117
|
+
t0 = Time.now if $s
|
116
118
|
parser.process(ruby, file, time)
|
117
|
-
|
119
|
+
if $s then
|
120
|
+
warn "good: #{Time.now - t0}"
|
121
|
+
else
|
122
|
+
warn "good"
|
123
|
+
end
|
118
124
|
File.unlink file if $d
|
119
125
|
rescue Timeout::Error
|
120
126
|
$exit = 1
|
data/lib/.document
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.rb
|
data/lib/ruby18_parser.rb
CHANGED
@@ -4253,14 +4253,16 @@ def _reduce_246(val, _values, result)
|
|
4253
4253
|
end
|
4254
4254
|
|
4255
4255
|
def _reduce_247(val, _values, result)
|
4256
|
-
|
4257
|
-
result =
|
4256
|
+
arg_value, _, args, _, assocs, opt_block = val
|
4257
|
+
result = s(:array, arg_value).add_all(args)
|
4258
|
+
result.add(s(:hash, *assocs.sexp_body))
|
4259
|
+
result = arg_blk_pass result, opt_block
|
4258
4260
|
|
4259
4261
|
result
|
4260
4262
|
end
|
4261
4263
|
|
4262
4264
|
def _reduce_248(val, _values, result)
|
4263
|
-
result = arg_concat s(:array, val[0]).add(s(:hash, *val[2].
|
4265
|
+
result = arg_concat s(:array, val[0]).add(s(:hash, *val[2].sexp_body)), val[5]
|
4264
4266
|
result = arg_blk_pass result, val[6]
|
4265
4267
|
|
4266
4268
|
result
|
@@ -4558,19 +4560,22 @@ def _reduce_301(val, _values, result)
|
|
4558
4560
|
end
|
4559
4561
|
|
4560
4562
|
def _reduce_302(val, _values, result)
|
4561
|
-
|
4563
|
+
(_, line), expr, _, body, _ = val
|
4564
|
+
result = new_case expr, body, line
|
4562
4565
|
|
4563
4566
|
result
|
4564
4567
|
end
|
4565
4568
|
|
4566
4569
|
def _reduce_303(val, _values, result)
|
4567
|
-
|
4570
|
+
(_, line), _, body, _ = val
|
4571
|
+
result = new_case nil, body, line
|
4568
4572
|
|
4569
4573
|
result
|
4570
4574
|
end
|
4571
4575
|
|
4572
4576
|
def _reduce_304(val, _values, result)
|
4573
|
-
|
4577
|
+
(_, line), _, _, elsebody, _ = val
|
4578
|
+
result = new_case nil, elsebody, line
|
4574
4579
|
|
4575
4580
|
result
|
4576
4581
|
end
|
@@ -5413,7 +5418,7 @@ def _reduce_447(val, _values, result)
|
|
5413
5418
|
end
|
5414
5419
|
|
5415
5420
|
def _reduce_448(val, _values, result)
|
5416
|
-
result = s(:lit, lexer.
|
5421
|
+
result = s(:lit, lexer.lineno)
|
5417
5422
|
result
|
5418
5423
|
end
|
5419
5424
|
|
data/lib/ruby18_parser.y
CHANGED
@@ -829,12 +829,14 @@ rule
|
|
829
829
|
}
|
830
830
|
| arg_value tCOMMA args tCOMMA assocs opt_block_arg
|
831
831
|
{
|
832
|
-
|
833
|
-
result =
|
832
|
+
arg_value, _, args, _, assocs, opt_block = val
|
833
|
+
result = s(:array, arg_value).add_all(args)
|
834
|
+
result.add(s(:hash, *assocs.sexp_body))
|
835
|
+
result = arg_blk_pass result, opt_block
|
834
836
|
}
|
835
837
|
| arg_value tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg
|
836
838
|
{
|
837
|
-
result = arg_concat s(:array, val[0]).add(s(:hash, *val[2].
|
839
|
+
result = arg_concat s(:array, val[0]).add(s(:hash, *val[2].sexp_body)), val[5]
|
838
840
|
result = arg_blk_pass result, val[6]
|
839
841
|
}
|
840
842
|
| arg_value tCOMMA args tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg
|
@@ -1042,15 +1044,18 @@ rule
|
|
1042
1044
|
}
|
1043
1045
|
| kCASE expr_value opt_terms case_body kEND
|
1044
1046
|
{
|
1045
|
-
|
1047
|
+
(_, line), expr, _, body, _ = val
|
1048
|
+
result = new_case expr, body, line
|
1046
1049
|
}
|
1047
1050
|
| kCASE opt_terms case_body kEND
|
1048
1051
|
{
|
1049
|
-
|
1052
|
+
(_, line), _, body, _ = val
|
1053
|
+
result = new_case nil, body, line
|
1050
1054
|
}
|
1051
1055
|
| kCASE opt_terms kELSE compstmt kEND # TODO: need a test
|
1052
1056
|
{
|
1053
|
-
|
1057
|
+
(_, line), _, _, elsebody, _ = val
|
1058
|
+
result = new_case nil, elsebody, line
|
1054
1059
|
}
|
1055
1060
|
| kFOR for_var kIN
|
1056
1061
|
{
|
@@ -1653,7 +1658,7 @@ xstring_contents: none
|
|
1653
1658
|
| kTRUE { result = s(:true) }
|
1654
1659
|
| kFALSE { result = s(:false) }
|
1655
1660
|
| k__FILE__ { result = s(:str, self.file) }
|
1656
|
-
| k__LINE__ { result = s(:lit, lexer.
|
1661
|
+
| k__LINE__ { result = s(:lit, lexer.lineno) }
|
1657
1662
|
|
1658
1663
|
var_ref: variable
|
1659
1664
|
{
|
data/lib/ruby19_parser.rb
CHANGED
@@ -4650,13 +4650,15 @@ def _reduce_306(val, _values, result)
|
|
4650
4650
|
end
|
4651
4651
|
|
4652
4652
|
def _reduce_307(val, _values, result)
|
4653
|
-
|
4653
|
+
(_, line), expr, _, body, _ = val
|
4654
|
+
result = new_case expr, body, line
|
4654
4655
|
|
4655
4656
|
result
|
4656
4657
|
end
|
4657
4658
|
|
4658
4659
|
def _reduce_308(val, _values, result)
|
4659
|
-
|
4660
|
+
(_, line), _, body, _ = val
|
4661
|
+
result = new_case nil, body, line
|
4660
4662
|
|
4661
4663
|
result
|
4662
4664
|
end
|
@@ -5708,7 +5710,7 @@ def _reduce_489(val, _values, result)
|
|
5708
5710
|
end
|
5709
5711
|
|
5710
5712
|
def _reduce_490(val, _values, result)
|
5711
|
-
result = s(:lit, lexer.
|
5713
|
+
result = s(:lit, lexer.lineno)
|
5712
5714
|
result
|
5713
5715
|
end
|
5714
5716
|
|
data/lib/ruby19_parser.y
CHANGED
@@ -1025,11 +1025,13 @@ rule
|
|
1025
1025
|
}
|
1026
1026
|
| kCASE expr_value opt_terms case_body kEND
|
1027
1027
|
{
|
1028
|
-
|
1028
|
+
(_, line), expr, _, body, _ = val
|
1029
|
+
result = new_case expr, body, line
|
1029
1030
|
}
|
1030
1031
|
| kCASE opt_terms case_body kEND
|
1031
1032
|
{
|
1032
|
-
|
1033
|
+
(_, line), _, body, _ = val
|
1034
|
+
result = new_case nil, body, line
|
1033
1035
|
}
|
1034
1036
|
| kFOR for_var kIN
|
1035
1037
|
{
|
@@ -1787,7 +1789,7 @@ keyword_variable: kNIL { result = s(:nil) }
|
|
1787
1789
|
| kTRUE { result = s(:true) }
|
1788
1790
|
| kFALSE { result = s(:false) }
|
1789
1791
|
| k__FILE__ { result = s(:str, self.file) }
|
1790
|
-
| k__LINE__ { result = s(:lit, lexer.
|
1792
|
+
| k__LINE__ { result = s(:lit, lexer.lineno) }
|
1791
1793
|
| k__ENCODING__
|
1792
1794
|
{
|
1793
1795
|
result =
|