maroon 0.6.5 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|