melbourne 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.md +9 -0
- data/LICENSE +0 -0
- data/README.md +43 -0
- data/Rakefile +20 -17
- data/ext/melbourne/bstring-license.txt +0 -0
- data/ext/melbourne/bstrlib.c +0 -0
- data/ext/melbourne/bstrlib.h +0 -0
- data/ext/melbourne/extconf.rb +0 -0
- data/ext/melbourne/grammar.cpp +0 -0
- data/ext/melbourne/grammar.hpp +0 -0
- data/ext/melbourne/grammar.y +0 -0
- data/ext/melbourne/internal.hpp +0 -0
- data/ext/melbourne/lex.c.tab +0 -0
- data/ext/melbourne/local_state.hpp +0 -0
- data/ext/melbourne/melbourne.cpp +0 -0
- data/ext/melbourne/node.hpp +0 -0
- data/ext/melbourne/node_types.cpp +0 -0
- data/ext/melbourne/node_types.hpp +0 -0
- data/ext/melbourne/node_types.rb +0 -0
- data/ext/melbourne/quark.cpp +0 -0
- data/ext/melbourne/quark.hpp +0 -0
- data/ext/melbourne/symbols.cpp +0 -0
- data/ext/melbourne/symbols.hpp +0 -0
- data/ext/melbourne/var_table.cpp +0 -0
- data/ext/melbourne/var_table.hpp +0 -0
- data/ext/melbourne/visitor.cpp +0 -0
- data/ext/melbourne/visitor.hpp +0 -0
- data/lib/melbourne.rb +16 -18
- data/lib/melbourne/ast.rb +14 -16
- data/lib/melbourne/ast/constants.rb +5 -5
- data/lib/melbourne/ast/control_flow.rb +18 -18
- data/lib/melbourne/ast/data.rb +1 -1
- data/lib/melbourne/ast/definitions.rb +37 -37
- data/lib/melbourne/ast/exceptions.rb +9 -9
- data/lib/melbourne/ast/file.rb +0 -0
- data/lib/melbourne/ast/grapher.rb +7 -1
- data/lib/melbourne/ast/literals.rb +14 -14
- data/lib/melbourne/ast/node.rb +1 -1
- data/lib/melbourne/ast/operators.rb +6 -6
- data/lib/melbourne/ast/self.rb +0 -0
- data/lib/melbourne/ast/sends.rb +23 -23
- data/lib/melbourne/ast/values.rb +6 -6
- data/lib/melbourne/ast/variables.rb +15 -15
- data/lib/melbourne/parser.rb +1 -1
- data/lib/melbourne/processor.rb +1 -1
- data/spec/helpers/ast/node.rb +0 -0
- data/spec/helpers/ast/reduced_graph.rb +0 -0
- data/spec/lib/parser/alias_spec.rb +0 -0
- data/spec/lib/parser/and_spec.rb +0 -0
- data/spec/lib/parser/array_spec.rb +0 -0
- data/spec/lib/parser/attrasgn_spec.rb +0 -0
- data/spec/lib/parser/back_ref_spec.rb +0 -0
- data/spec/lib/parser/call_spec.rb +0 -0
- data/spec/lib/parser/case_spec.rb +0 -0
- data/spec/lib/parser/cdecl_spec.rb +0 -0
- data/spec/lib/parser/class_spec.rb +0 -0
- data/spec/lib/parser/colon2_spec.rb +0 -0
- data/spec/lib/parser/colon3_spec.rb +0 -0
- data/spec/lib/parser/const_spec.rb +0 -0
- data/spec/lib/parser/cvar_spec.rb +0 -0
- data/spec/lib/parser/cvasgn_spec.rb +0 -0
- data/spec/lib/parser/cvdecl_spec.rb +0 -0
- data/spec/lib/parser/defined_spec.rb +0 -0
- data/spec/lib/parser/defn_spec.rb +0 -0
- data/spec/lib/parser/defs_spec.rb +0 -0
- data/spec/lib/parser/dot2_spec.rb +0 -0
- data/spec/lib/parser/dot3_spec.rb +0 -0
- data/spec/lib/parser/dregx_spec.rb +0 -0
- data/spec/lib/parser/dstr_spec.rb +0 -0
- data/spec/lib/parser/dsym_spec.rb +0 -0
- data/spec/lib/parser/dxstr_spec.rb +0 -0
- data/spec/lib/parser/ensure_spec.rb +0 -0
- data/spec/lib/parser/false_spec.rb +0 -0
- data/spec/lib/parser/flip2_spec.rb +0 -0
- data/spec/lib/parser/flip3_spec.rb +0 -0
- data/spec/lib/parser/for_spec.rb +0 -0
- data/spec/lib/parser/gasgn_spec.rb +0 -0
- data/spec/lib/parser/gvar_spec.rb +0 -0
- data/spec/lib/parser/hash_spec.rb +0 -0
- data/spec/lib/parser/iasgn_spec.rb +0 -0
- data/spec/lib/parser/if_spec.rb +0 -0
- data/spec/lib/parser/iter_spec.rb +0 -0
- data/spec/lib/parser/lasgn_spec.rb +0 -0
- data/spec/lib/parser/lit_spec.rb +0 -0
- data/spec/lib/parser/masgn_spec.rb +0 -0
- data/spec/lib/parser/match2_spec.rb +0 -0
- data/spec/lib/parser/match3_spec.rb +0 -0
- data/spec/lib/parser/match_spec.rb +0 -0
- data/spec/lib/parser/module_spec.rb +0 -0
- data/spec/lib/parser/nil_spec.rb +0 -0
- data/spec/lib/parser/not_spec.rb +0 -0
- data/spec/lib/parser/nth_ref_spec.rb +0 -0
- data/spec/lib/parser/op_asgn_spec.rb +0 -0
- data/spec/lib/parser/or_spec.rb +0 -0
- data/spec/lib/parser/postexe_spec.rb +0 -0
- data/spec/lib/parser/regex_spec.rb +0 -0
- data/spec/lib/parser/rescue_spec.rb +0 -0
- data/spec/lib/parser/return_spec.rb +0 -0
- data/spec/lib/parser/sclass_spec.rb +0 -0
- data/spec/lib/parser/str_spec.rb +0 -0
- data/spec/lib/parser/super_spec.rb +0 -0
- data/spec/lib/parser/true_spec.rb +0 -0
- data/spec/lib/parser/undef_spec.rb +0 -0
- data/spec/lib/parser/until_spec.rb +0 -0
- data/spec/lib/parser/valias_spec.rb +0 -0
- data/spec/lib/parser/while_spec.rb +0 -0
- data/spec/lib/parser/xstr_spec.rb +0 -0
- data/spec/lib/parser/yield_spec.rb +0 -0
- data/spec/lib/parser/zsuper_spec.rb +0 -0
- data/spec/matchers/parse_as.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- metadata +19 -8
- data/HISTORY +0 -3
- data/README.rdoc +0 -38
- data/VERSION.yml +0 -4
data/HISTORY.md
ADDED
data/LICENSE
CHANGED
File without changes
|
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
Melbourne
|
2
|
+
=========
|
3
|
+
|
4
|
+
Melbourne is [Rubinius](http://rubini.us)' parser component. The +melbourne+ gem extracts
|
5
|
+
this parser component for stand-alone use under MRI and other environments.
|
6
|
+
|
7
|
+
For Melbourne's full RDoc, see [rdoc.info](http://rdoc.info/projects/simplabs/melbourne).
|
8
|
+
|
9
|
+
Usage
|
10
|
+
-----
|
11
|
+
|
12
|
+
Melbourne generates abstract syntax trees (ASTs) from Ruby source code:
|
13
|
+
|
14
|
+
require 'melbourne'
|
15
|
+
|
16
|
+
'class Test; end'.to_ast # => <AST::Class:0x1017800f8
|
17
|
+
@line=1,
|
18
|
+
@body=#<AST::EmptyBody:0x101780058 @line=1>,
|
19
|
+
@name=#<AST::ClassName:0x101780080 @line=1, @superclass=#<AST::Nil:0x1017800a8 @line=1>, @name=:Test>,
|
20
|
+
@superclass=#<AST::Nil:0x1017800a8 @line=1>>
|
21
|
+
|
22
|
+
Abstract Syntax Trees
|
23
|
+
---------------------
|
24
|
+
|
25
|
+
Abstract syntax trees allow for deep introspection of Ruby source code and are far
|
26
|
+
easier to handle than e.g. S-expressions as provided by [ParseTree](http://parsetree.rubyforge.org/)
|
27
|
+
and other gems.
|
28
|
+
|
29
|
+
For more information on abstract syntax trees, see [Wikipedia](http://en.wikipedia.org/wiki/Abstract_syntax_trees).
|
30
|
+
|
31
|
+
Authors
|
32
|
+
-------
|
33
|
+
|
34
|
+
The original code of Melbourne is part of the [Rubinius project](http://rubini.us/) and
|
35
|
+
was written by and is © [Evan Phoenix](http://github.com/evanphx/).
|
36
|
+
|
37
|
+
Melbourne was extracted from Rubinius into this gem by [Marco Otte-Witte](http://simplabs.com).
|
38
|
+
|
39
|
+
Bugs/ Feature Requests
|
40
|
+
----------------------
|
41
|
+
|
42
|
+
the +melbourne+ gem is <b>not</b> maintained by the [Rubinius](http://rubini.us) team! If you encounter
|
43
|
+
bugs or have feature requests, refer to the [Github repository](http://simplabs.github.com/melbourne).
|
data/Rakefile
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
|
4
|
+
Bundler.setup
|
5
|
+
Bundler.require
|
6
|
+
|
3
7
|
require 'spec/rake/spectask'
|
8
|
+
require 'simplabs/excellent/rake'
|
9
|
+
require 'rake/extensiontask'
|
4
10
|
|
5
11
|
desc 'Default: run specs.'
|
6
12
|
task :default => :spec
|
@@ -17,22 +23,19 @@ Spec::Rake::SpecTask.new(:spec) do |t|
|
|
17
23
|
end
|
18
24
|
|
19
25
|
desc 'Generate documentation for the Melbourne gem.'
|
20
|
-
Rake::
|
21
|
-
t.
|
22
|
-
t.
|
23
|
-
t.options << '--line-numbers' << '--inline-source'
|
24
|
-
t.rdoc_files.include('README.rdoc')
|
25
|
-
t.rdoc_files.include('lib/**/*.rb')
|
26
|
+
YARD::Rake::YardocTask.new(:doc) do |t|
|
27
|
+
t.files = ['lib/**/*.rb', '-', 'HISTORY.md']
|
28
|
+
t.options = ['--no-private', '--title', 'Melbourne Documentation']
|
26
29
|
end
|
27
30
|
|
28
|
-
|
29
|
-
|
31
|
+
desc 'compile the C extension'
|
32
|
+
Rake::ExtensionTask.new('melbourne') do |ext|
|
33
|
+
ext.lib_dir = File.join('lib', 'ext')
|
34
|
+
end
|
35
|
+
Rake::Task[:spec].prerequisites << :compile
|
30
36
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
-
rescue LoadError
|
37
|
-
puts "Install the excellent gem for source code analysis."
|
37
|
+
desc 'Analyse the Melbourne source with Excellent.'
|
38
|
+
Simplabs::Excellent::Rake::ExcellentTask.new(:excellent) do |t|
|
39
|
+
t.html = 'doc/excellent.html'
|
40
|
+
t.paths = ['lib']
|
38
41
|
end
|
File without changes
|
data/ext/melbourne/bstrlib.c
CHANGED
File without changes
|
data/ext/melbourne/bstrlib.h
CHANGED
File without changes
|
data/ext/melbourne/extconf.rb
CHANGED
File without changes
|
data/ext/melbourne/grammar.cpp
CHANGED
File without changes
|
data/ext/melbourne/grammar.hpp
CHANGED
File without changes
|
data/ext/melbourne/grammar.y
CHANGED
File without changes
|
data/ext/melbourne/internal.hpp
CHANGED
File without changes
|
data/ext/melbourne/lex.c.tab
CHANGED
File without changes
|
File without changes
|
data/ext/melbourne/melbourne.cpp
CHANGED
File without changes
|
data/ext/melbourne/node.hpp
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/ext/melbourne/node_types.rb
CHANGED
File without changes
|
data/ext/melbourne/quark.cpp
CHANGED
File without changes
|
data/ext/melbourne/quark.hpp
CHANGED
File without changes
|
data/ext/melbourne/symbols.cpp
CHANGED
File without changes
|
data/ext/melbourne/symbols.hpp
CHANGED
File without changes
|
data/ext/melbourne/var_table.cpp
CHANGED
File without changes
|
data/ext/melbourne/var_table.hpp
CHANGED
File without changes
|
data/ext/melbourne/visitor.cpp
CHANGED
File without changes
|
data/ext/melbourne/visitor.hpp
CHANGED
File without changes
|
data/lib/melbourne.rb
CHANGED
@@ -1,24 +1,22 @@
|
|
1
|
-
|
1
|
+
require 'ext/melbourne'
|
2
|
+
require 'melbourne/parser'
|
3
|
+
require 'melbourne/processor'
|
2
4
|
|
3
|
-
|
4
|
-
require File.join(base, 'melbourne/parser')
|
5
|
-
require File.join(base, 'melbourne/processor')
|
6
|
-
|
7
|
-
module Melbourne #:nodoc:
|
5
|
+
module Melbourne
|
8
6
|
end
|
9
7
|
|
10
8
|
class String
|
11
9
|
|
12
10
|
# Creates an AST for a +String+ containing Ruby source code.
|
13
11
|
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
12
|
+
# @param [String] name+
|
13
|
+
# the name of the source (this is usuall the name of the file the code was read from); defaults to +(eval)+
|
14
|
+
# @param [Fixnum] line
|
15
|
+
# the starting line (if it's not 1 for some reason); defaults to +1+
|
17
16
|
#
|
18
|
-
#
|
17
|
+
# @example Converting Ruby code in a string to an AST
|
19
18
|
#
|
20
|
-
#
|
21
|
-
# * +line+: the starting line (if it's not 1 for some reason); defaults to <tt>1</tt>
|
19
|
+
# 'class Test; end'.to_ast # => <AST::Class:0x1017800f8...
|
22
20
|
#
|
23
21
|
def to_ast(name = '(eval)', line = 1)
|
24
22
|
Melbourne::Parser.parse_string(self, name, line)
|
@@ -30,14 +28,14 @@ class File
|
|
30
28
|
|
31
29
|
# Creates an AST for Ruby source code read from a file.
|
32
30
|
#
|
33
|
-
#
|
31
|
+
# @param [String] name
|
32
|
+
# the name of the file to read the source code from.
|
33
|
+
# @param [Fixnum] line
|
34
|
+
# the starting line (if it's not 1 for some reason); defaults to +1+
|
34
35
|
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
# === Arguments
|
36
|
+
# @example Converting Ruby code from a file to an AST
|
38
37
|
#
|
39
|
-
#
|
40
|
-
# * +line+: the starting line (if it's not 1 for some reason); defaults to <tt>1</tt>
|
38
|
+
# File.to_ast('user.rb') # => <AST::Class:0x1017800f8...
|
41
39
|
#
|
42
40
|
def self.to_ast(name, line = 1)
|
43
41
|
Melbourne::Parser.parse_file(name, line)
|
data/lib/melbourne/ast.rb
CHANGED
@@ -1,22 +1,20 @@
|
|
1
|
-
base = File.dirname(__FILE__)
|
2
|
-
|
3
1
|
module Melbourne
|
4
2
|
|
5
|
-
module AST
|
3
|
+
module AST
|
6
4
|
end
|
7
5
|
|
8
6
|
end
|
9
7
|
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
8
|
+
require 'melbourne/ast/node'
|
9
|
+
require 'melbourne/ast/self'
|
10
|
+
require 'melbourne/ast/constants'
|
11
|
+
require 'melbourne/ast/control_flow'
|
12
|
+
require 'melbourne/ast/definitions'
|
13
|
+
require 'melbourne/ast/exceptions'
|
14
|
+
require 'melbourne/ast/file'
|
15
|
+
require 'melbourne/ast/grapher'
|
16
|
+
require 'melbourne/ast/literals'
|
17
|
+
require 'melbourne/ast/operators'
|
18
|
+
require 'melbourne/ast/sends'
|
19
|
+
require 'melbourne/ast/values'
|
20
|
+
require 'melbourne/ast/variables'
|
@@ -16,7 +16,7 @@ module Melbourne
|
|
16
16
|
#
|
17
17
|
attr_accessor :name
|
18
18
|
|
19
|
-
def initialize(line, parent, name)
|
19
|
+
def initialize(line, parent, name)
|
20
20
|
@line = line
|
21
21
|
@parent = parent
|
22
22
|
@name = name
|
@@ -38,7 +38,7 @@ module Melbourne
|
|
38
38
|
#
|
39
39
|
attr_accessor :name
|
40
40
|
|
41
|
-
def initialize(line, name)
|
41
|
+
def initialize(line, name)
|
42
42
|
@line = line
|
43
43
|
@name = name
|
44
44
|
@parent = TopLevel.new line
|
@@ -66,7 +66,7 @@ module Melbourne
|
|
66
66
|
#
|
67
67
|
attr_accessor :name
|
68
68
|
|
69
|
-
def initialize(line, name)
|
69
|
+
def initialize(line, name)
|
70
70
|
@line = line
|
71
71
|
@name = name
|
72
72
|
end
|
@@ -91,7 +91,7 @@ module Melbourne
|
|
91
91
|
#
|
92
92
|
attr_accessor :name
|
93
93
|
|
94
|
-
def initialize(line, name, value)
|
94
|
+
def initialize(line, name, value)
|
95
95
|
@line = line
|
96
96
|
@value = value
|
97
97
|
@parent = nil
|
@@ -116,7 +116,7 @@ module Melbourne
|
|
116
116
|
#
|
117
117
|
attr_accessor :name
|
118
118
|
|
119
|
-
def initialize(line, name)
|
119
|
+
def initialize(line, name)
|
120
120
|
@line = line
|
121
121
|
@name = name
|
122
122
|
end
|
@@ -21,7 +21,7 @@ module Melbourne
|
|
21
21
|
#
|
22
22
|
attr_accessor :else
|
23
23
|
|
24
|
-
def initialize(line, whens, else_body)
|
24
|
+
def initialize(line, whens, else_body)
|
25
25
|
@line = line
|
26
26
|
@whens = whens
|
27
27
|
@else = else_body || Nil.new(line)
|
@@ -44,7 +44,7 @@ module Melbourne
|
|
44
44
|
#
|
45
45
|
attr_accessor :receiver
|
46
46
|
|
47
|
-
def initialize(line, receiver, whens, else_body)
|
47
|
+
def initialize(line, receiver, whens, else_body)
|
48
48
|
@line = line
|
49
49
|
@receiver = receiver
|
50
50
|
@whens = whens
|
@@ -76,11 +76,11 @@ module Melbourne
|
|
76
76
|
#
|
77
77
|
attr_accessor :single
|
78
78
|
|
79
|
-
# Any splat (
|
79
|
+
# Any splat (+*something+) that is specified as a condition for the +when+ statement or +nil+ of no splat is specified
|
80
80
|
#
|
81
81
|
attr_accessor :splat
|
82
82
|
|
83
|
-
def initialize(line, conditions, body)
|
83
|
+
def initialize(line, conditions, body)
|
84
84
|
@line = line
|
85
85
|
@body = body || Nil.new(line)
|
86
86
|
@splat = nil
|
@@ -110,7 +110,7 @@ module Melbourne
|
|
110
110
|
|
111
111
|
end
|
112
112
|
|
113
|
-
# A splat (
|
113
|
+
# A splat (+*something+) inside a condition of a +when+ statement as in:
|
114
114
|
#
|
115
115
|
# case a
|
116
116
|
# when *c then
|
@@ -123,7 +123,7 @@ module Melbourne
|
|
123
123
|
#
|
124
124
|
attr_accessor :condition
|
125
125
|
|
126
|
-
def initialize(line, condition)
|
126
|
+
def initialize(line, condition)
|
127
127
|
@line = line
|
128
128
|
@condition = condition
|
129
129
|
end
|
@@ -136,7 +136,7 @@ module Melbourne
|
|
136
136
|
#
|
137
137
|
class Flip2 < Node
|
138
138
|
|
139
|
-
def initialize(line, start, finish)
|
139
|
+
def initialize(line, start, finish)
|
140
140
|
@line = line
|
141
141
|
@start = start
|
142
142
|
@finish = finish
|
@@ -150,7 +150,7 @@ module Melbourne
|
|
150
150
|
#
|
151
151
|
class Flip3 < Node
|
152
152
|
|
153
|
-
def initialize(line, start, finish)
|
153
|
+
def initialize(line, start, finish)
|
154
154
|
@line = line
|
155
155
|
@start = start
|
156
156
|
@finish = finish
|
@@ -176,7 +176,7 @@ module Melbourne
|
|
176
176
|
#
|
177
177
|
attr_accessor :else
|
178
178
|
|
179
|
-
def initialize(line, condition, body, else_body)
|
179
|
+
def initialize(line, condition, body, else_body)
|
180
180
|
@line = line
|
181
181
|
@condition = condition
|
182
182
|
@body = body || Nil.new(line)
|
@@ -203,7 +203,7 @@ module Melbourne
|
|
203
203
|
#
|
204
204
|
attr_accessor :check_first
|
205
205
|
|
206
|
-
def initialize(line, condition, body, check_first)
|
206
|
+
def initialize(line, condition, body, check_first)
|
207
207
|
@line = line
|
208
208
|
@condition = condition
|
209
209
|
@body = body || Nil.new(line)
|
@@ -230,7 +230,7 @@ module Melbourne
|
|
230
230
|
#
|
231
231
|
attr_accessor :pattern
|
232
232
|
|
233
|
-
def initialize(line, pattern, flags)
|
233
|
+
def initialize(line, pattern, flags)
|
234
234
|
@line = line
|
235
235
|
@pattern = RegexLiteral.new line, pattern, flags
|
236
236
|
end
|
@@ -251,7 +251,7 @@ module Melbourne
|
|
251
251
|
#
|
252
252
|
attr_accessor :value
|
253
253
|
|
254
|
-
def initialize(line, pattern, value)
|
254
|
+
def initialize(line, pattern, value)
|
255
255
|
@line = line
|
256
256
|
@pattern = pattern
|
257
257
|
@value = value
|
@@ -273,7 +273,7 @@ module Melbourne
|
|
273
273
|
#
|
274
274
|
attr_accessor :value
|
275
275
|
|
276
|
-
def initialize(line, pattern, value)
|
276
|
+
def initialize(line, pattern, value)
|
277
277
|
@line = line
|
278
278
|
@pattern = pattern
|
279
279
|
@value = value
|
@@ -297,7 +297,7 @@ module Melbourne
|
|
297
297
|
#
|
298
298
|
attr_accessor :value
|
299
299
|
|
300
|
-
def initialize(line, expr)
|
300
|
+
def initialize(line, expr)
|
301
301
|
@line = line
|
302
302
|
@value = expr || Nil.new(line)
|
303
303
|
end
|
@@ -313,7 +313,7 @@ module Melbourne
|
|
313
313
|
#
|
314
314
|
class Next < Break
|
315
315
|
|
316
|
-
def initialize(line, value)
|
316
|
+
def initialize(line, value)
|
317
317
|
@line = line
|
318
318
|
@value = value
|
319
319
|
end
|
@@ -332,7 +332,7 @@ module Melbourne
|
|
332
332
|
#
|
333
333
|
class Redo < Break
|
334
334
|
|
335
|
-
def initialize(line)
|
335
|
+
def initialize(line)
|
336
336
|
@line = line
|
337
337
|
end
|
338
338
|
|
@@ -351,7 +351,7 @@ module Melbourne
|
|
351
351
|
#
|
352
352
|
class Retry < Break
|
353
353
|
|
354
|
-
def initialize(line)
|
354
|
+
def initialize(line)
|
355
355
|
@line = line
|
356
356
|
end
|
357
357
|
|
@@ -369,7 +369,7 @@ module Melbourne
|
|
369
369
|
#
|
370
370
|
attr_accessor :value
|
371
371
|
|
372
|
-
def initialize(line, expr)
|
372
|
+
def initialize(line, expr)
|
373
373
|
@line = line
|
374
374
|
@value = expr
|
375
375
|
@splat = nil
|