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/lib/melbourne/ast/node.rb
CHANGED
@@ -16,7 +16,7 @@ module Melbourne
|
|
16
16
|
#
|
17
17
|
attr_accessor :right
|
18
18
|
|
19
|
-
def initialize(line, left, right)
|
19
|
+
def initialize(line, left, right)
|
20
20
|
@line = line
|
21
21
|
@left = left
|
22
22
|
@right = right
|
@@ -42,7 +42,7 @@ module Melbourne
|
|
42
42
|
#
|
43
43
|
attr_accessor :value
|
44
44
|
|
45
|
-
def initialize(line, value)
|
45
|
+
def initialize(line, value)
|
46
46
|
@line = line
|
47
47
|
@value = value
|
48
48
|
end
|
@@ -50,7 +50,7 @@ module Melbourne
|
|
50
50
|
end
|
51
51
|
|
52
52
|
# TODO: document!
|
53
|
-
class OpAssign1 < Node
|
53
|
+
class OpAssign1 < Node
|
54
54
|
|
55
55
|
attr_accessor :receiver
|
56
56
|
|
@@ -71,7 +71,7 @@ module Melbourne
|
|
71
71
|
end
|
72
72
|
|
73
73
|
# TODO: document!
|
74
|
-
class OpAssign2 < Node
|
74
|
+
class OpAssign2 < Node
|
75
75
|
|
76
76
|
attr_accessor :receiver
|
77
77
|
|
@@ -95,7 +95,7 @@ module Melbourne
|
|
95
95
|
end
|
96
96
|
|
97
97
|
# TODO: document!
|
98
|
-
class OpAssignAnd < Node
|
98
|
+
class OpAssignAnd < Node
|
99
99
|
|
100
100
|
attr_accessor :left, :right
|
101
101
|
|
@@ -108,7 +108,7 @@ module Melbourne
|
|
108
108
|
end
|
109
109
|
|
110
110
|
# TODO: document!
|
111
|
-
class OpAssignOr < OpAssignAnd
|
111
|
+
class OpAssignOr < OpAssignAnd
|
112
112
|
|
113
113
|
end
|
114
114
|
|
data/lib/melbourne/ast/self.rb
CHANGED
File without changes
|
data/lib/melbourne/ast/sends.rb
CHANGED
@@ -16,17 +16,17 @@ module Melbourne
|
|
16
16
|
#
|
17
17
|
attr_accessor :name
|
18
18
|
|
19
|
-
attr_accessor :privately
|
19
|
+
attr_accessor :privately
|
20
20
|
|
21
21
|
# The block that is passed to the invocation if one is passed
|
22
22
|
#
|
23
23
|
attr_accessor :block
|
24
24
|
|
25
|
-
attr_accessor :variable
|
25
|
+
attr_accessor :variable
|
26
26
|
|
27
|
-
attr_accessor :check_for_local
|
27
|
+
attr_accessor :check_for_local
|
28
28
|
|
29
|
-
def initialize(line, receiver, name, privately=false)
|
29
|
+
def initialize(line, receiver, name, privately=false)
|
30
30
|
@line = line
|
31
31
|
@receiver = receiver
|
32
32
|
@name = name
|
@@ -47,7 +47,7 @@ module Melbourne
|
|
47
47
|
#
|
48
48
|
attr_accessor :arguments
|
49
49
|
|
50
|
-
def initialize(line, receiver, name, arguments, privately=false)
|
50
|
+
def initialize(line, receiver, name, arguments, privately=false)
|
51
51
|
super line, receiver, name, privately
|
52
52
|
@block = nil
|
53
53
|
@arguments = ActualArguments.new line, arguments
|
@@ -61,7 +61,7 @@ module Melbourne
|
|
61
61
|
#
|
62
62
|
class AttributeAssignment < SendWithArguments
|
63
63
|
|
64
|
-
def initialize(line, receiver, name, arguments)
|
64
|
+
def initialize(line, receiver, name, arguments)
|
65
65
|
@line = line
|
66
66
|
|
67
67
|
@receiver = receiver
|
@@ -80,7 +80,7 @@ module Melbourne
|
|
80
80
|
#
|
81
81
|
class ElementAssignment < SendWithArguments
|
82
82
|
|
83
|
-
def initialize(line, receiver, arguments)
|
83
|
+
def initialize(line, receiver, arguments)
|
84
84
|
@line = line
|
85
85
|
|
86
86
|
@receiver = receiver
|
@@ -112,7 +112,7 @@ module Melbourne
|
|
112
112
|
#
|
113
113
|
attr_accessor :arguments
|
114
114
|
|
115
|
-
def initialize(line, arguments, value)
|
115
|
+
def initialize(line, arguments, value)
|
116
116
|
@line = line
|
117
117
|
@arguments = arguments
|
118
118
|
@value = value
|
@@ -128,7 +128,7 @@ module Melbourne
|
|
128
128
|
splat? ? 1 : @arguments.size + 1
|
129
129
|
end
|
130
130
|
|
131
|
-
# Gets whether the push arguments are a splat (
|
131
|
+
# Gets whether the push arguments are a splat (+*some+)
|
132
132
|
#
|
133
133
|
# === Example:
|
134
134
|
#
|
@@ -150,7 +150,7 @@ module Melbourne
|
|
150
150
|
#
|
151
151
|
attr_accessor :body
|
152
152
|
|
153
|
-
def initialize(line, body)
|
153
|
+
def initialize(line, body)
|
154
154
|
@line = line
|
155
155
|
@body = body
|
156
156
|
end
|
@@ -167,11 +167,11 @@ module Melbourne
|
|
167
167
|
#
|
168
168
|
attr_accessor :array
|
169
169
|
|
170
|
-
# A splat (
|
170
|
+
# A splat (+*some+) if the actual arguments contain one
|
171
171
|
#
|
172
172
|
attr_accessor :splat
|
173
173
|
|
174
|
-
def initialize(line, arguments=nil)
|
174
|
+
def initialize(line, arguments=nil)
|
175
175
|
@line = line
|
176
176
|
@splat = nil
|
177
177
|
|
@@ -231,7 +231,7 @@ module Melbourne
|
|
231
231
|
#
|
232
232
|
attr_accessor :body
|
233
233
|
|
234
|
-
def initialize(line, arguments, body)
|
234
|
+
def initialize(line, arguments, body)
|
235
235
|
@line = line
|
236
236
|
@arguments = IterArguments.new line, arguments
|
237
237
|
@body = body || Nil.new(line)
|
@@ -246,7 +246,7 @@ module Melbourne
|
|
246
246
|
class IterArguments < Node
|
247
247
|
|
248
248
|
# TODO: document!
|
249
|
-
attr_accessor :prelude
|
249
|
+
attr_accessor :prelude
|
250
250
|
|
251
251
|
# The number of arguments
|
252
252
|
#
|
@@ -261,13 +261,13 @@ module Melbourne
|
|
261
261
|
attr_accessor :arguments
|
262
262
|
|
263
263
|
# TODO: document!
|
264
|
-
attr_accessor :splat_index
|
264
|
+
attr_accessor :splat_index
|
265
265
|
|
266
266
|
# The required arguments
|
267
267
|
#
|
268
268
|
attr_accessor :required_args
|
269
269
|
|
270
|
-
def initialize(line, arguments)
|
270
|
+
def initialize(line, arguments)
|
271
271
|
@line = line
|
272
272
|
@optional = 0
|
273
273
|
|
@@ -328,7 +328,7 @@ module Melbourne
|
|
328
328
|
alias_method :total_args, :required_args
|
329
329
|
|
330
330
|
# TODO: document!
|
331
|
-
def names
|
331
|
+
def names
|
332
332
|
case @arguments
|
333
333
|
when MAsgn
|
334
334
|
if arguments = @arguments.left.body
|
@@ -371,7 +371,7 @@ module Melbourne
|
|
371
371
|
#
|
372
372
|
attr_accessor :value
|
373
373
|
|
374
|
-
def initialize(line, value)
|
374
|
+
def initialize(line, value)
|
375
375
|
@line = line
|
376
376
|
@value = value
|
377
377
|
end
|
@@ -390,11 +390,11 @@ module Melbourne
|
|
390
390
|
#
|
391
391
|
attr_accessor :name
|
392
392
|
|
393
|
-
# A block that is passed to
|
393
|
+
# A block that is passed to +super()+ if one is passed
|
394
394
|
#
|
395
395
|
attr_accessor :block
|
396
396
|
|
397
|
-
def initialize(line, arguments)
|
397
|
+
def initialize(line, arguments)
|
398
398
|
@line = line
|
399
399
|
@block = nil
|
400
400
|
@arguments = ActualArguments.new line, arguments
|
@@ -411,9 +411,9 @@ module Melbourne
|
|
411
411
|
class Yield < SendWithArguments
|
412
412
|
|
413
413
|
# TODO: document!
|
414
|
-
attr_accessor :flags
|
414
|
+
attr_accessor :flags
|
415
415
|
|
416
|
-
def initialize(line, arguments, unwrap)
|
416
|
+
def initialize(line, arguments, unwrap)
|
417
417
|
@line = line
|
418
418
|
|
419
419
|
if arguments.kind_of? ArrayLiteral and not unwrap
|
@@ -437,7 +437,7 @@ module Melbourne
|
|
437
437
|
end
|
438
438
|
|
439
439
|
# TODO: document!
|
440
|
-
class ZSuper < Super
|
440
|
+
class ZSuper < Super
|
441
441
|
|
442
442
|
def initialize(line)
|
443
443
|
@line = line
|
data/lib/melbourne/ast/values.rb
CHANGED
@@ -2,7 +2,7 @@ module Melbourne
|
|
2
2
|
|
3
3
|
module AST
|
4
4
|
|
5
|
-
# A value of a splat (
|
5
|
+
# A value of a splat (+*some+) as in:
|
6
6
|
#
|
7
7
|
# *1 # the value of the splat is 1
|
8
8
|
#
|
@@ -12,7 +12,7 @@ module Melbourne
|
|
12
12
|
#
|
13
13
|
attr_accessor :value
|
14
14
|
|
15
|
-
def initialize(line, value)
|
15
|
+
def initialize(line, value)
|
16
16
|
@line = line
|
17
17
|
@value = value
|
18
18
|
end
|
@@ -20,7 +20,7 @@ module Melbourne
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# TODO: document!
|
23
|
-
class ConcatArgs < Node
|
23
|
+
class ConcatArgs < Node
|
24
24
|
|
25
25
|
attr_accessor :array, :rest, :size
|
26
26
|
|
@@ -34,7 +34,7 @@ module Melbourne
|
|
34
34
|
end
|
35
35
|
|
36
36
|
# TODO: document!
|
37
|
-
class SValue < Node
|
37
|
+
class SValue < Node
|
38
38
|
|
39
39
|
attr_accessor :value
|
40
40
|
|
@@ -46,7 +46,7 @@ module Melbourne
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# TODO: document!
|
49
|
-
class ToArray < Node
|
49
|
+
class ToArray < Node
|
50
50
|
|
51
51
|
attr_accessor :value
|
52
52
|
|
@@ -58,7 +58,7 @@ module Melbourne
|
|
58
58
|
end
|
59
59
|
|
60
60
|
# TODO: document!
|
61
|
-
class ToString < Node
|
61
|
+
class ToString < Node
|
62
62
|
|
63
63
|
attr_accessor :value
|
64
64
|
|
@@ -16,7 +16,7 @@ module Melbourne
|
|
16
16
|
#
|
17
17
|
attr_accessor :kind
|
18
18
|
|
19
|
-
def initialize(line, ref)
|
19
|
+
def initialize(line, ref)
|
20
20
|
@line = line
|
21
21
|
@kind = ref
|
22
22
|
end
|
@@ -33,14 +33,14 @@ module Melbourne
|
|
33
33
|
#
|
34
34
|
attr_accessor :which
|
35
35
|
|
36
|
-
def initialize(line, ref)
|
36
|
+
def initialize(line, ref)
|
37
37
|
@line = line
|
38
38
|
@which = ref
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
42
42
|
|
43
|
-
class VariableAccess < Node
|
43
|
+
class VariableAccess < Node
|
44
44
|
|
45
45
|
attr_accessor :name
|
46
46
|
|
@@ -51,7 +51,7 @@ module Melbourne
|
|
51
51
|
|
52
52
|
end
|
53
53
|
|
54
|
-
class VariableAssignment < Node
|
54
|
+
class VariableAssignment < Node
|
55
55
|
|
56
56
|
attr_accessor :name, :value
|
57
57
|
|
@@ -79,7 +79,7 @@ module Melbourne
|
|
79
79
|
|
80
80
|
end
|
81
81
|
|
82
|
-
class CVarDeclare < ClassVariableAssignment
|
82
|
+
class CVarDeclare < ClassVariableAssignment
|
83
83
|
|
84
84
|
end
|
85
85
|
|
@@ -99,7 +99,7 @@ module Melbourne
|
|
99
99
|
|
100
100
|
end
|
101
101
|
|
102
|
-
# Assignment to a splat (
|
102
|
+
# Assignment to a splat (+*some+) as in:
|
103
103
|
#
|
104
104
|
# *c = *[1, 2]
|
105
105
|
#
|
@@ -109,14 +109,14 @@ module Melbourne
|
|
109
109
|
#
|
110
110
|
attr_accessor :value
|
111
111
|
|
112
|
-
def initialize(line, value)
|
112
|
+
def initialize(line, value)
|
113
113
|
@line = line
|
114
114
|
@value = value
|
115
115
|
end
|
116
116
|
|
117
117
|
end
|
118
118
|
|
119
|
-
class SplatArray < SplatAssignment
|
119
|
+
class SplatArray < SplatAssignment
|
120
120
|
|
121
121
|
def initialize(line, value, size)
|
122
122
|
@line = line
|
@@ -126,7 +126,7 @@ module Melbourne
|
|
126
126
|
|
127
127
|
end
|
128
128
|
|
129
|
-
class SplatWrapped < SplatAssignment
|
129
|
+
class SplatWrapped < SplatAssignment
|
130
130
|
|
131
131
|
end
|
132
132
|
|
@@ -136,7 +136,7 @@ module Melbourne
|
|
136
136
|
#
|
137
137
|
class EmptySplat < Node
|
138
138
|
|
139
|
-
def initialize(line, size)
|
139
|
+
def initialize(line, size)
|
140
140
|
@line = line
|
141
141
|
@size = size
|
142
142
|
end
|
@@ -167,7 +167,7 @@ module Melbourne
|
|
167
167
|
|
168
168
|
include LocalVariable
|
169
169
|
|
170
|
-
def initialize(line, name)
|
170
|
+
def initialize(line, name)
|
171
171
|
@line = line
|
172
172
|
@name = name
|
173
173
|
@variable = nil
|
@@ -183,7 +183,7 @@ module Melbourne
|
|
183
183
|
|
184
184
|
include LocalVariable
|
185
185
|
|
186
|
-
def initialize(line, name, value)
|
186
|
+
def initialize(line, name, value)
|
187
187
|
@line = line
|
188
188
|
@name = name
|
189
189
|
@value = value
|
@@ -207,12 +207,12 @@ module Melbourne
|
|
207
207
|
attr_accessor :right
|
208
208
|
|
209
209
|
# TODO: document!
|
210
|
-
attr_accessor :splat
|
210
|
+
attr_accessor :splat
|
211
211
|
|
212
212
|
# TODO: document!
|
213
|
-
attr_accessor :block
|
213
|
+
attr_accessor :block
|
214
214
|
|
215
|
-
def initialize(line, left, right, splat)
|
215
|
+
def initialize(line, left, right, splat)
|
216
216
|
@line = line
|
217
217
|
@left = left
|
218
218
|
@right = right
|
data/lib/melbourne/parser.rb
CHANGED
data/lib/melbourne/processor.rb
CHANGED
data/spec/helpers/ast/node.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/spec/lib/parser/and_spec.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|