maroon 0.6.5 → 0.7.0
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.
- checksums.yaml +4 -4
- data/README.md +5 -3
- data/Rakefile +2 -1
- data/Test/Context_test.rb +129 -0
- data/Test/ImmutableQueue_test.rb +5 -5
- data/Test/MethodInfo_test.rb +58 -37
- data/Test/alltests.rb +1 -1
- data/Test/assertions.rb +12 -4
- data/Test/production_test.rb +42 -0
- data/Test/stack_test.rb +5 -6
- data/Test/test_helper.rb +2 -2
- data/base/AstRewritter.rb +63 -0
- data/base/ImmutableStack.rb +7 -5
- data/base/Production.rb +145 -0
- data/base/immutable_queue.rb +6 -5
- data/base/maroon_base.rb +196 -154
- data/base/method_info.rb +48 -67
- data/generated/Tokens.rb +24 -0
- data/generated/build.rb +6 -5
- data/lib/AstRewritter.rb +55 -0
- data/lib/Context.rb +190 -172
- data/lib/ImmutableQueue.rb +33 -39
- data/lib/ImmutableStack.rb +25 -29
- data/lib/MethodInfo.rb +57 -69
- data/lib/Production.rb +135 -0
- data/lib/Tokens.rb +24 -0
- data/lib/build.rb +10 -10
- data/lib/interpretation_context.rb +0 -1
- data/lib/maroon/kernel.rb +1 -1
- data/lib/maroon/version.rb +1 -1
- metadata +10 -15
- data/Test/Generate/method_info_test.rb +0 -12
- data/Test/bind_test.rb +0 -13
- data/Test/expression_test.rb +0 -105
- data/Test/method_call_test.rb +0 -83
- data/Test/self_test.rb +0 -46
- data/base/MethodDefinition.rb +0 -124
- data/base/bind_rewriter.rb +0 -58
- data/base/method_call.rb +0 -78
- data/base/self.rb +0 -60
- data/lib/Bind.rb +0 -65
- data/lib/MethodCall.rb +0 -91
- data/lib/MethodDefinition.rb +0 -114
- data/lib/Self.rb +0 -71
data/lib/Self.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
class Self
|
2
|
-
|
3
|
-
def initialize(abstract_syntax_tree,interpretationcontext)
|
4
|
-
raise("Interpretation context missing") unless interpretationcontext
|
5
|
-
unless interpretationcontext.defining_role then
|
6
|
-
raise("Must have a defining role")
|
7
|
-
end
|
8
|
-
@abstract_syntax_tree = abstract_syntax_tree
|
9
|
-
@interpretation_context = interpretationcontext
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def execute()
|
14
|
-
if abstract_syntax_tree then
|
15
|
-
if (abstract_syntax_tree[0] == :self) then
|
16
|
-
abstract_syntax_tree[0] = :call
|
17
|
-
abstract_syntax_tree[1] = nil
|
18
|
-
abstract_syntax_tree[2] = interpretation_context.defining_role
|
19
|
-
else
|
20
|
-
if (abstract_syntax_tree[0] == :call) and (abstract_syntax_tree[1] == nil) then
|
21
|
-
method_name = abstract_syntax_tree[2]
|
22
|
-
if ((method_name == :[]) or (method_name == :[]=)) then
|
23
|
-
get_role = Sexp.new
|
24
|
-
get_role[0] = :call
|
25
|
-
get_role[1] = nil
|
26
|
-
get_role[2] = interpretation_context.defining_role
|
27
|
-
abstract_syntax_tree[1] = get_role
|
28
|
-
end
|
29
|
-
else
|
30
|
-
if abstract_syntax_tree.instance_of?(Sexp) then
|
31
|
-
if self_abstract_syntax_tree_is_indexer_call_on_self then
|
32
|
-
getter = new(Sexp.new)
|
33
|
-
getter[0] = :call
|
34
|
-
getter[1] = nil
|
35
|
-
getter[2] = interpretation_context.defining_role
|
36
|
-
arglist = Sexp.new
|
37
|
-
getter[3] = arglist
|
38
|
-
arglist[0] = :arglist
|
39
|
-
abstract_syntax_tree[1] = getter
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.call(*args)
|
48
|
-
arity = Self.method(:new).arity
|
49
|
-
newArgs = args[0..arity-1]
|
50
|
-
obj = Self.new *newArgs
|
51
|
-
if arity < args.length
|
52
|
-
methodArgs = args[arity..-1]
|
53
|
-
obj.execute *methodArgs
|
54
|
-
else
|
55
|
-
obj.execute
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def call(*args);execute *args; end
|
60
|
-
|
61
|
-
private
|
62
|
-
attr_reader :abstract_syntax_tree
|
63
|
-
attr_reader :interpretation_context
|
64
|
-
|
65
|
-
|
66
|
-
def self_abstract_syntax_tree_is_indexer_call_on_self()
|
67
|
-
(abstract_syntax_tree.length == 4) and ((abstract_syntax_tree[0] == :call) and ((abstract_syntax_tree[1] == nil) and ((abstract_syntax_tree[2] == :[]) and (abstract_syntax_tree[3][0] == :argslist))))
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
end
|