melbourne 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|