rdl 1.0.0.rc1
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 +7 -0
- data/lib/rails_types.rb +1 -0
- data/lib/rdl.rb +56 -0
- data/lib/rdl/config.rb +121 -0
- data/lib/rdl/contracts/and.rb +29 -0
- data/lib/rdl/contracts/contract.rb +7 -0
- data/lib/rdl/contracts/flat.rb +31 -0
- data/lib/rdl/contracts/or.rb +25 -0
- data/lib/rdl/contracts/proc.rb +24 -0
- data/lib/rdl/switch.rb +20 -0
- data/lib/rdl/types/annotated_arg.rb +41 -0
- data/lib/rdl/types/finitehash.rb +81 -0
- data/lib/rdl/types/generic.rb +100 -0
- data/lib/rdl/types/intersection.rb +66 -0
- data/lib/rdl/types/lexer.rex +39 -0
- data/lib/rdl/types/lexer.rex.rb +148 -0
- data/lib/rdl/types/method.rb +219 -0
- data/lib/rdl/types/nil.rb +50 -0
- data/lib/rdl/types/nominal.rb +80 -0
- data/lib/rdl/types/optional.rb +54 -0
- data/lib/rdl/types/parser.racc +150 -0
- data/lib/rdl/types/parser.tab.rb +654 -0
- data/lib/rdl/types/singleton.rb +62 -0
- data/lib/rdl/types/structural.rb +72 -0
- data/lib/rdl/types/top.rb +50 -0
- data/lib/rdl/types/tuple.rb +61 -0
- data/lib/rdl/types/type.rb +24 -0
- data/lib/rdl/types/type_inferencer.rb +73 -0
- data/lib/rdl/types/union.rb +74 -0
- data/lib/rdl/types/var.rb +51 -0
- data/lib/rdl/types/vararg.rb +54 -0
- data/lib/rdl/types/wild.rb +26 -0
- data/lib/rdl/util.rb +56 -0
- data/lib/rdl/wrap.rb +505 -0
- data/lib/rdl_types.rb +2 -0
- data/types/other/chronic.rb +5 -0
- data/types/other/paperclip_attachment.rb +7 -0
- data/types/other/securerandom.rb +4 -0
- data/types/rails-4.2.1/fixnum.rb +3 -0
- data/types/rails-4.2.1/string.rb +3 -0
- data/types/rails-tmp/action_dispatch.rb +406 -0
- data/types/rails-tmp/active_record.rb +406 -0
- data/types/rails-tmp/devise_contracts.rb +216 -0
- data/types/ruby-2.2.0/_aliases.rb +4 -0
- data/types/ruby-2.2.0/abbrev.rb +5 -0
- data/types/ruby-2.2.0/array.rb +137 -0
- data/types/ruby-2.2.0/base64.rb +10 -0
- data/types/ruby-2.2.0/basic_object.rb +13 -0
- data/types/ruby-2.2.0/benchmark.rb +11 -0
- data/types/ruby-2.2.0/bigdecimal.rb +15 -0
- data/types/ruby-2.2.0/bigmath.rb +12 -0
- data/types/ruby-2.2.0/class.rb +17 -0
- data/types/ruby-2.2.0/complex.rb +42 -0
- data/types/ruby-2.2.0/coverage.rb +6 -0
- data/types/ruby-2.2.0/csv.rb +5 -0
- data/types/ruby-2.2.0/date.rb +6 -0
- data/types/ruby-2.2.0/dir.rb +38 -0
- data/types/ruby-2.2.0/encoding.rb +23 -0
- data/types/ruby-2.2.0/enumerable.rb +98 -0
- data/types/ruby-2.2.0/enumerator.rb +26 -0
- data/types/ruby-2.2.0/exception.rb +15 -0
- data/types/ruby-2.2.0/file.rb +124 -0
- data/types/ruby-2.2.0/fileutils.rb +6 -0
- data/types/ruby-2.2.0/fixnum.rb +45 -0
- data/types/ruby-2.2.0/float.rb +54 -0
- data/types/ruby-2.2.0/gem.rb +245 -0
- data/types/ruby-2.2.0/hash.rb +72 -0
- data/types/ruby-2.2.0/integer.rb +31 -0
- data/types/ruby-2.2.0/io.rb +103 -0
- data/types/ruby-2.2.0/kernel.rb +89 -0
- data/types/ruby-2.2.0/marshal.rb +5 -0
- data/types/ruby-2.2.0/matchdata.rb +26 -0
- data/types/ruby-2.2.0/math.rb +53 -0
- data/types/ruby-2.2.0/numeric.rb +46 -0
- data/types/ruby-2.2.0/object.rb +73 -0
- data/types/ruby-2.2.0/pathname.rb +106 -0
- data/types/ruby-2.2.0/process.rb +127 -0
- data/types/ruby-2.2.0/random.rb +15 -0
- data/types/ruby-2.2.0/range.rb +38 -0
- data/types/ruby-2.2.0/rational.rb +31 -0
- data/types/ruby-2.2.0/regexp.rb +30 -0
- data/types/ruby-2.2.0/set.rb +58 -0
- data/types/ruby-2.2.0/string.rb +145 -0
- data/types/ruby-2.2.0/strscan.rb +7 -0
- data/types/ruby-2.2.0/symbol.rb +29 -0
- data/types/ruby-2.2.0/time.rb +68 -0
- data/types/ruby-2.2.0/uri.rb +18 -0
- data/types/ruby-2.2.0/yaml.rb +5 -0
- metadata +131 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require_relative 'type'
|
|
2
|
+
|
|
3
|
+
module RDL::Type
|
|
4
|
+
class NilType < Type
|
|
5
|
+
@@cache = nil
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
alias :__new__ :new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.new
|
|
12
|
+
@@cache = NilType.__new__ unless @@cache
|
|
13
|
+
return @@cache
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def initialize
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_s
|
|
21
|
+
"nil"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def eql?(other)
|
|
25
|
+
self == other
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def ==(other)
|
|
29
|
+
other.instance_of? NilType
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def <=(other)
|
|
33
|
+
true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def member?(obj, *args)
|
|
37
|
+
t = RDL::Util.rdl_type obj
|
|
38
|
+
return t <= self if t
|
|
39
|
+
obj.nil?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def instantiate(inst)
|
|
43
|
+
return self
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def hash
|
|
47
|
+
13
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require_relative 'type'
|
|
2
|
+
|
|
3
|
+
module RDL::Type
|
|
4
|
+
class NominalType < Type
|
|
5
|
+
attr_reader :name # string
|
|
6
|
+
|
|
7
|
+
@@cache = {}
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
alias :__new__ :new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.new(name)
|
|
14
|
+
name = name.to_s
|
|
15
|
+
return NilType.new if name == "NilClass"
|
|
16
|
+
t = @@cache[name]
|
|
17
|
+
return t if t
|
|
18
|
+
t = self.__new__ name
|
|
19
|
+
return (@@cache[name] = t) # assignment evaluates to t
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize(name)
|
|
23
|
+
@name = name
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def eql?(other)
|
|
27
|
+
self == other
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def ==(other)
|
|
31
|
+
return (other.instance_of? self.class) && (other.name == @name)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def hash # :nodoc:
|
|
35
|
+
return @name.hash
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def to_s
|
|
39
|
+
return @name
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def klass
|
|
43
|
+
@klass = RDL::Util.to_class(name) unless @klass
|
|
44
|
+
return @klass
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def <=(other)
|
|
48
|
+
k = klass
|
|
49
|
+
return true if other.instance_of? TopType
|
|
50
|
+
return k.ancestors.member?(other.klass) if other.instance_of? NominalType
|
|
51
|
+
# return self <= other.base if other.instance_of? GenericType # raw subtyping not allowed
|
|
52
|
+
if other.instance_of? StructuralType
|
|
53
|
+
# similar logic in GenericType
|
|
54
|
+
other.methods.each_pair { |m, t|
|
|
55
|
+
return false unless k.method_defined? m
|
|
56
|
+
if RDL::Wrap.has_contracts?(k, m, :type)
|
|
57
|
+
types = RDL::Wrap.get_contracts(k, m, :type)
|
|
58
|
+
return false unless types.all? { |t_self| t_self <= t }
|
|
59
|
+
end
|
|
60
|
+
}
|
|
61
|
+
return true
|
|
62
|
+
end
|
|
63
|
+
if other.instance_of? UnionType
|
|
64
|
+
other.types.each {|ot| return true if self <= ot}
|
|
65
|
+
end
|
|
66
|
+
return false
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def member?(obj, *args)
|
|
70
|
+
t = RDL::Util.rdl_type obj
|
|
71
|
+
return t <= self if t
|
|
72
|
+
return true if obj.nil?
|
|
73
|
+
return obj.is_a? klass
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def instantiate(inst)
|
|
77
|
+
return self
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require_relative 'type'
|
|
2
|
+
|
|
3
|
+
module RDL::Type
|
|
4
|
+
class OptionalType < Type
|
|
5
|
+
attr_reader :type
|
|
6
|
+
|
|
7
|
+
@@cache = {}
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
alias :__new__ :new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.new(type)
|
|
14
|
+
t = @@cache[type]
|
|
15
|
+
return t if t
|
|
16
|
+
raise RuntimeError, "Attempt to create vararg type with non-type" unless type.is_a? Type
|
|
17
|
+
t = OptionalType.__new__ type
|
|
18
|
+
return (@@cache[type] = t) # assignment evaluates to t
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def initialize(type)
|
|
22
|
+
raise "Can't have optional optional type" if type.class == OptionalType
|
|
23
|
+
raise "Can't have optional vararg type" if type.class == VarargType
|
|
24
|
+
@type = type
|
|
25
|
+
super()
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def to_s
|
|
29
|
+
if @type.instance_of? UnionType
|
|
30
|
+
"?(#{@type.to_s})"
|
|
31
|
+
else
|
|
32
|
+
"?#{@type.to_s}"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def eql?(other)
|
|
37
|
+
self == other
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def ==(other) # :nodoc:
|
|
41
|
+
return (other.instance_of? OptionalType) && (other.type == @type)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Note: no member?, because these can only appear in MethodType, where they're handled specially
|
|
45
|
+
|
|
46
|
+
def instantiate(inst)
|
|
47
|
+
return OptionalType.new(@type.instantiate(inst))
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def hash # :nodoc:
|
|
51
|
+
return 57 + @type.hash
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
class Parser
|
|
2
|
+
prechigh
|
|
3
|
+
left COMMA
|
|
4
|
+
right RARROW
|
|
5
|
+
left OR
|
|
6
|
+
preclow
|
|
7
|
+
|
|
8
|
+
start entry
|
|
9
|
+
|
|
10
|
+
token DOUBLE_HASH CONST_BEGIN RASSOC
|
|
11
|
+
token OR FIXNUM FLOAT COLON RARROW ID SYMBOL SPECIAL_ID STRING
|
|
12
|
+
token LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET
|
|
13
|
+
token COMMA QUERY STAR LESS GREATER
|
|
14
|
+
token EOF
|
|
15
|
+
|
|
16
|
+
rule
|
|
17
|
+
|
|
18
|
+
entry:
|
|
19
|
+
method_type { result = val[0] }
|
|
20
|
+
| bare_type { result = val[0] }
|
|
21
|
+
|
|
22
|
+
bare_type:
|
|
23
|
+
DOUBLE_HASH type_expr {
|
|
24
|
+
result = val[1]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
method_type:
|
|
28
|
+
LPAREN arg_list RPAREN block RARROW type_expr {
|
|
29
|
+
result = RDL::Type::MethodType.new val[1], val[3], val[5]
|
|
30
|
+
}
|
|
31
|
+
| LPAREN arg_list RPAREN block RARROW type_expr ID {
|
|
32
|
+
result = RDL::Type::MethodType.new val[1], val[3], RDL::Type::AnnotatedArgType.new(val[6], val[5])
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
method_sig_list:
|
|
36
|
+
ID COLON method_type { result = [val[0].to_sym, val[2]] }
|
|
37
|
+
| ID COLON method_type COMMA method_sig_list { result = [val[0].to_sym, val[2]] + val[4] }
|
|
38
|
+
|
|
39
|
+
arg_list:
|
|
40
|
+
{ result = [] }
|
|
41
|
+
| nonempty_arg_list { result = val[0] }
|
|
42
|
+
| named_arg_list {
|
|
43
|
+
result = [RDL::Type::FiniteHashType.new(Hash[*val[0]])]
|
|
44
|
+
}
|
|
45
|
+
nonempty_arg_list:
|
|
46
|
+
arg { result = [val[0]] }
|
|
47
|
+
| arg COMMA nonempty_arg_list { result = val[2].unshift val[0] }
|
|
48
|
+
| arg COMMA named_arg_list { # named arg list must come last
|
|
49
|
+
result = [val[0], RDL::Type::FiniteHashType.new(Hash[*val[2]])]
|
|
50
|
+
}
|
|
51
|
+
arg:
|
|
52
|
+
base_arg { result = val[0] }
|
|
53
|
+
| base_arg ID { result = RDL::Type::AnnotatedArgType.new(val[1], val[0]) }
|
|
54
|
+
named_arg_list:
|
|
55
|
+
named_arg { result = val[0] }
|
|
56
|
+
| named_arg COMMA named_arg_list { result = val[0] + val[2] }
|
|
57
|
+
named_arg:
|
|
58
|
+
ID COLON base_arg_query_only { result = [val[0].to_sym, val[2]] }
|
|
59
|
+
|
|
60
|
+
base_arg:
|
|
61
|
+
QUERY type_expr { result = RDL::Type::OptionalType.new val[1] }
|
|
62
|
+
| STAR type_expr { result = RDL::Type::VarargType.new val[1] }
|
|
63
|
+
| type_expr { result = val[0] }
|
|
64
|
+
base_arg_query_only:
|
|
65
|
+
QUERY type_expr { result = RDL::Type::OptionalType.new val[1] }
|
|
66
|
+
| type_expr { result = val[0] }
|
|
67
|
+
|
|
68
|
+
block:
|
|
69
|
+
{ result = nil }
|
|
70
|
+
| LBRACE method_type RBRACE { result = val[1] }
|
|
71
|
+
|
|
72
|
+
type_expr:
|
|
73
|
+
union_type { result = val[0] }
|
|
74
|
+
| LPAREN type_expr RPAREN { result = val[1] }
|
|
75
|
+
|
|
76
|
+
type_expr_comma_list:
|
|
77
|
+
type_expr { result = [val[0]] }
|
|
78
|
+
| type_expr COMMA type_expr_comma_list { result = [val[0]] + val[2] }
|
|
79
|
+
|
|
80
|
+
hash_expr:
|
|
81
|
+
| named_arg { result = val[0] }
|
|
82
|
+
| FIXNUM RASSOC union_type { result = [val[0].to_i, val[2]] }
|
|
83
|
+
| FLOAT RASSOC union_type { result = [val[0].to_f, val[2]] }
|
|
84
|
+
| CONST_BEGIN ID RBRACE RASSOC union_type {
|
|
85
|
+
result = [Kernel.const_get(val[0]), val[2]]
|
|
86
|
+
}
|
|
87
|
+
| STRING RASSOC union_type { result = [val[0], val[2]] } # strings are allowed as finite hash keys
|
|
88
|
+
|
|
89
|
+
hash_expr_comma_list:
|
|
90
|
+
hash_expr { result = val[0] }
|
|
91
|
+
| hash_expr COMMA hash_expr_comma_list { result = val[0] + val[2] }
|
|
92
|
+
|
|
93
|
+
union_type:
|
|
94
|
+
single_type { result = val[0] }
|
|
95
|
+
| single_type OR union_type { result = RDL::Type::UnionType.new val[0], val[2] }
|
|
96
|
+
|
|
97
|
+
single_type:
|
|
98
|
+
SYMBOL { result = RDL::Type::SingletonType.new(val[0].to_sym) }
|
|
99
|
+
| ID {
|
|
100
|
+
if val[0] == 'nil' then
|
|
101
|
+
result = RDL::Type::NilType.new
|
|
102
|
+
elsif val[0] =~ /^[a-z_]+\w*\'?/ then
|
|
103
|
+
result = RDL::Type::VarType.new(val[0].to_sym)
|
|
104
|
+
else
|
|
105
|
+
result = RDL::Type::NominalType.new val[0]
|
|
106
|
+
end
|
|
107
|
+
}
|
|
108
|
+
| SPECIAL_ID {
|
|
109
|
+
if $__rdl_special_types.has_key? val[0] then
|
|
110
|
+
result = $__rdl_special_types[val[0]]
|
|
111
|
+
else
|
|
112
|
+
fail "Unexpected special type identifier #{val[0]}"
|
|
113
|
+
end
|
|
114
|
+
}
|
|
115
|
+
| ID LESS type_expr_comma_list GREATER {
|
|
116
|
+
n = RDL::Type::NominalType.new(val[0])
|
|
117
|
+
result = RDL::Type::GenericType.new(n, *val[2])
|
|
118
|
+
}
|
|
119
|
+
| LBRACKET type_expr_comma_list RBRACKET {
|
|
120
|
+
result = RDL::Type::TupleType.new(*val[1])
|
|
121
|
+
}
|
|
122
|
+
| LBRACKET method_sig_list RBRACKET {
|
|
123
|
+
result = RDL::Type::StructuralType.new(Hash[*val[1]])
|
|
124
|
+
}
|
|
125
|
+
| LBRACE hash_expr_comma_list RBRACE {
|
|
126
|
+
result = RDL::Type::FiniteHashType.new(Hash[*val[1]])
|
|
127
|
+
}
|
|
128
|
+
| FIXNUM { result = RDL::Type::SingletonType.new(val[0].to_i) }
|
|
129
|
+
| FLOAT { result = RDL::Type::SingletonType.new(val[0].to_f) }
|
|
130
|
+
| CONST_BEGIN ID RBRACE {
|
|
131
|
+
result = RDL::Type::SingletonType.new(Kernel.const_get(val[1]))
|
|
132
|
+
}
|
|
133
|
+
# The following can't be used in SingletonTypes because those compare using .equal?
|
|
134
|
+
# | STRING { result = RDL::Type::SingletonType.new(val[0]) }
|
|
135
|
+
|
|
136
|
+
---- header ----
|
|
137
|
+
|
|
138
|
+
require_relative 'lexer.rex'
|
|
139
|
+
|
|
140
|
+
module RDL::Type
|
|
141
|
+
|
|
142
|
+
---- inner ----
|
|
143
|
+
|
|
144
|
+
def initialize()
|
|
145
|
+
@yydebug = true
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
---- footer ----
|
|
149
|
+
|
|
150
|
+
end
|
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
#
|
|
2
|
+
# DO NOT MODIFY!!!!
|
|
3
|
+
# This file is automatically generated by Racc 1.4.12
|
|
4
|
+
# from Racc grammer file "".
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
require 'racc/parser.rb'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'lexer.rex'
|
|
11
|
+
|
|
12
|
+
module RDL::Type
|
|
13
|
+
|
|
14
|
+
class Parser < Racc::Parser
|
|
15
|
+
|
|
16
|
+
module_eval(<<'...end parser.racc/module_eval...', 'parser.racc', 143)
|
|
17
|
+
|
|
18
|
+
def initialize()
|
|
19
|
+
@yydebug = true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
...end parser.racc/module_eval...
|
|
23
|
+
##### State transition tables begin ###
|
|
24
|
+
|
|
25
|
+
racc_action_table = [
|
|
26
|
+
18, 56, 16, 17, 62, 25, 11, 13, 50, 9,
|
|
27
|
+
58, 15, 59, 14, 32, 26, 27, 18, 50, 16,
|
|
28
|
+
17, 32, 25, 11, 13, 4, 9, 60, 15, 61,
|
|
29
|
+
14, 57, 26, 27, 18, 5, 16, 17, 63, 12,
|
|
30
|
+
11, 13, 64, 9, 65, 15, 66, 14, 18, 73,
|
|
31
|
+
16, 17, 68, 12, 11, 13, 53, 37, 49, 15,
|
|
32
|
+
18, 14, 16, 17, 75, 12, 11, 13, 5, 9,
|
|
33
|
+
48, 15, 18, 14, 16, 17, 47, 12, 11, 13,
|
|
34
|
+
46, 9, 80, 15, 18, 14, 16, 17, 45, 12,
|
|
35
|
+
11, 13, 32, 9, 83, 15, 18, 14, 16, 17,
|
|
36
|
+
5, 12, 11, 13, 31, 9, 86, 15, 18, 14,
|
|
37
|
+
16, 17, 87, 33, 11, 13, 29, 9, 89, 15,
|
|
38
|
+
18, 14, 16, 17, 90, 12, 11, 13, 6, 93,
|
|
39
|
+
56, 15, 18, 14, 16, 17, nil, 12, 11, 13,
|
|
40
|
+
nil, 9, nil, 15, 18, 14, 16, 17, nil, 12,
|
|
41
|
+
11, 13, nil, nil, nil, 15, 18, 14, 16, 17,
|
|
42
|
+
nil, 12, 11, 13, nil, 9, nil, 15, 18, 14,
|
|
43
|
+
16, 17, nil, 12, 11, 13, nil, nil, nil, 15,
|
|
44
|
+
18, 14, 16, 17, nil, 12, 11, 13, nil, 9,
|
|
45
|
+
nil, 15, 18, 14, 16, 17, nil, 12, 11, 13,
|
|
46
|
+
nil, 9, nil, 15, 18, 14, 16, 17, nil, 12,
|
|
47
|
+
11, 13, nil, nil, nil, 15, 41, 14, 39, 40,
|
|
48
|
+
41, 37, 39, 40, 42, 37, nil, nil, 42 ]
|
|
49
|
+
|
|
50
|
+
racc_action_check = [
|
|
51
|
+
5, 33, 5, 5, 41, 5, 5, 5, 25, 5,
|
|
52
|
+
35, 5, 36, 5, 33, 5, 5, 47, 37, 47,
|
|
53
|
+
47, 25, 47, 47, 47, 0, 47, 39, 47, 40,
|
|
54
|
+
47, 34, 47, 47, 50, 0, 50, 50, 42, 50,
|
|
55
|
+
50, 50, 43, 50, 44, 50, 45, 50, 31, 50,
|
|
56
|
+
31, 31, 46, 31, 31, 31, 30, 49, 24, 31,
|
|
57
|
+
83, 31, 83, 83, 55, 83, 83, 83, 56, 83,
|
|
58
|
+
23, 83, 9, 83, 9, 9, 22, 9, 9, 9,
|
|
59
|
+
19, 9, 62, 9, 73, 9, 73, 73, 18, 73,
|
|
60
|
+
73, 73, 12, 73, 67, 73, 32, 73, 32, 32,
|
|
61
|
+
68, 32, 32, 32, 10, 32, 76, 32, 14, 32,
|
|
62
|
+
14, 14, 80, 14, 14, 14, 6, 14, 84, 14,
|
|
63
|
+
63, 14, 63, 63, 86, 63, 63, 63, 1, 88,
|
|
64
|
+
90, 63, 4, 63, 4, 4, nil, 4, 4, 4,
|
|
65
|
+
nil, 4, nil, 4, 60, 4, 60, 60, nil, 60,
|
|
66
|
+
60, 60, nil, nil, nil, 60, 57, 60, 57, 57,
|
|
67
|
+
nil, 57, 57, 57, nil, 57, nil, 57, 87, 57,
|
|
68
|
+
87, 87, nil, 87, 87, 87, nil, nil, nil, 87,
|
|
69
|
+
26, 87, 26, 26, nil, 26, 26, 26, nil, 26,
|
|
70
|
+
nil, 26, 27, 26, 27, 27, nil, 27, 27, 27,
|
|
71
|
+
nil, 27, nil, 27, 61, 27, 61, 61, nil, 61,
|
|
72
|
+
61, 61, nil, nil, nil, 61, 64, 61, 64, 64,
|
|
73
|
+
15, 64, 15, 15, 64, 15, nil, nil, 15 ]
|
|
74
|
+
|
|
75
|
+
racc_action_pointer = [
|
|
76
|
+
20, 128, nil, nil, 126, -6, 116, nil, nil, 66,
|
|
77
|
+
100, nil, 69, nil, 102, 214, nil, nil, 77, 64,
|
|
78
|
+
nil, nil, 74, 59, 56, -2, 174, 186, nil, nil,
|
|
79
|
+
40, 42, 90, -9, 29, -10, -8, 8, nil, 20,
|
|
80
|
+
22, -7, 31, 40, 26, 28, 35, 11, nil, 46,
|
|
81
|
+
28, nil, nil, nil, nil, 40, 53, 150, nil, nil,
|
|
82
|
+
138, 198, 64, 114, 210, nil, nil, 91, 85, nil,
|
|
83
|
+
nil, nil, nil, 78, nil, nil, 104, nil, nil, nil,
|
|
84
|
+
105, nil, nil, 54, 100, nil, 113, 162, 118, nil,
|
|
85
|
+
120, nil, nil, nil ]
|
|
86
|
+
|
|
87
|
+
racc_action_default = [
|
|
88
|
+
-50, -50, -1, -2, -50, -8, -50, -3, -26, -50,
|
|
89
|
+
-38, -40, -41, -42, -50, -30, -47, -48, -50, -50,
|
|
90
|
+
-9, -10, -11, -14, -16, -41, -50, -50, -21, 94,
|
|
91
|
+
-50, -50, -50, -41, -28, -50, -50, -50, -31, -50,
|
|
92
|
+
-50, -50, -50, -36, -50, -50, -24, -50, -15, -50,
|
|
93
|
+
-50, -19, -20, -27, -39, -50, -50, -50, -44, -45,
|
|
94
|
+
-50, -50, -50, -50, -30, -46, -49, -50, -50, -12,
|
|
95
|
+
-13, -17, -18, -50, -23, -43, -6, -29, -32, -33,
|
|
96
|
+
-50, -35, -37, -50, -50, -22, -50, -50, -4, -25,
|
|
97
|
+
-50, -7, -34, -5 ]
|
|
98
|
+
|
|
99
|
+
racc_goto_table = [
|
|
100
|
+
7, 28, 36, 2, 54, 30, 44, 38, 21, 20,
|
|
101
|
+
35, 67, 72, 19, 3, 1, nil, nil, nil, nil,
|
|
102
|
+
nil, nil, 51, 52, nil, nil, nil, nil, 55, nil,
|
|
103
|
+
nil, nil, nil, 78, 79, nil, 81, nil, nil, nil,
|
|
104
|
+
nil, nil, nil, 28, nil, nil, 74, nil, nil, nil,
|
|
105
|
+
70, 69, 71, 77, nil, 82, 38, nil, nil, 76,
|
|
106
|
+
92, nil, nil, nil, nil, nil, nil, nil, nil, 85,
|
|
107
|
+
nil, 84, nil, nil, 91, nil, nil, nil, nil, 88 ]
|
|
108
|
+
|
|
109
|
+
racc_goto_check = [
|
|
110
|
+
4, 4, 7, 2, 14, 4, 17, 12, 9, 8,
|
|
111
|
+
15, 6, 13, 5, 3, 1, nil, nil, nil, nil,
|
|
112
|
+
nil, nil, 4, 4, nil, nil, nil, nil, 15, nil,
|
|
113
|
+
nil, nil, nil, 14, 14, nil, 14, nil, nil, nil,
|
|
114
|
+
nil, nil, nil, 4, nil, nil, 4, nil, nil, nil,
|
|
115
|
+
9, 8, 9, 15, nil, 17, 12, nil, nil, 2,
|
|
116
|
+
14, nil, nil, nil, nil, nil, nil, nil, nil, 4,
|
|
117
|
+
nil, 2, nil, nil, 7, nil, nil, nil, nil, 4 ]
|
|
118
|
+
|
|
119
|
+
racc_goto_pointer = [
|
|
120
|
+
nil, 15, 3, 14, -4, 8, -35, -12, 4, 3,
|
|
121
|
+
nil, nil, -8, -38, -27, -4, nil, -9, nil ]
|
|
122
|
+
|
|
123
|
+
racc_goto_default = [
|
|
124
|
+
nil, nil, nil, nil, 34, nil, nil, nil, nil, nil,
|
|
125
|
+
22, 23, 24, nil, 8, nil, 43, nil, 10 ]
|
|
126
|
+
|
|
127
|
+
racc_reduce_table = [
|
|
128
|
+
0, 0, :racc_error,
|
|
129
|
+
1, 27, :_reduce_1,
|
|
130
|
+
1, 27, :_reduce_2,
|
|
131
|
+
2, 29, :_reduce_3,
|
|
132
|
+
6, 28, :_reduce_4,
|
|
133
|
+
7, 28, :_reduce_5,
|
|
134
|
+
3, 33, :_reduce_6,
|
|
135
|
+
5, 33, :_reduce_7,
|
|
136
|
+
0, 31, :_reduce_8,
|
|
137
|
+
1, 31, :_reduce_9,
|
|
138
|
+
1, 31, :_reduce_10,
|
|
139
|
+
1, 34, :_reduce_11,
|
|
140
|
+
3, 34, :_reduce_12,
|
|
141
|
+
3, 34, :_reduce_13,
|
|
142
|
+
1, 36, :_reduce_14,
|
|
143
|
+
2, 36, :_reduce_15,
|
|
144
|
+
1, 35, :_reduce_16,
|
|
145
|
+
3, 35, :_reduce_17,
|
|
146
|
+
3, 38, :_reduce_18,
|
|
147
|
+
2, 37, :_reduce_19,
|
|
148
|
+
2, 37, :_reduce_20,
|
|
149
|
+
1, 37, :_reduce_21,
|
|
150
|
+
2, 39, :_reduce_22,
|
|
151
|
+
1, 39, :_reduce_23,
|
|
152
|
+
0, 32, :_reduce_24,
|
|
153
|
+
3, 32, :_reduce_25,
|
|
154
|
+
1, 30, :_reduce_26,
|
|
155
|
+
3, 30, :_reduce_27,
|
|
156
|
+
1, 41, :_reduce_28,
|
|
157
|
+
3, 41, :_reduce_29,
|
|
158
|
+
0, 42, :_reduce_none,
|
|
159
|
+
1, 42, :_reduce_31,
|
|
160
|
+
3, 42, :_reduce_32,
|
|
161
|
+
3, 42, :_reduce_33,
|
|
162
|
+
5, 42, :_reduce_34,
|
|
163
|
+
3, 42, :_reduce_35,
|
|
164
|
+
1, 43, :_reduce_36,
|
|
165
|
+
3, 43, :_reduce_37,
|
|
166
|
+
1, 40, :_reduce_38,
|
|
167
|
+
3, 40, :_reduce_39,
|
|
168
|
+
1, 44, :_reduce_40,
|
|
169
|
+
1, 44, :_reduce_41,
|
|
170
|
+
1, 44, :_reduce_42,
|
|
171
|
+
4, 44, :_reduce_43,
|
|
172
|
+
3, 44, :_reduce_44,
|
|
173
|
+
3, 44, :_reduce_45,
|
|
174
|
+
3, 44, :_reduce_46,
|
|
175
|
+
1, 44, :_reduce_47,
|
|
176
|
+
1, 44, :_reduce_48,
|
|
177
|
+
3, 44, :_reduce_49 ]
|
|
178
|
+
|
|
179
|
+
racc_reduce_n = 50
|
|
180
|
+
|
|
181
|
+
racc_shift_n = 94
|
|
182
|
+
|
|
183
|
+
racc_token_table = {
|
|
184
|
+
false => 0,
|
|
185
|
+
:error => 1,
|
|
186
|
+
:COMMA => 2,
|
|
187
|
+
:RARROW => 3,
|
|
188
|
+
:OR => 4,
|
|
189
|
+
:DOUBLE_HASH => 5,
|
|
190
|
+
:CONST_BEGIN => 6,
|
|
191
|
+
:RASSOC => 7,
|
|
192
|
+
:FIXNUM => 8,
|
|
193
|
+
:FLOAT => 9,
|
|
194
|
+
:COLON => 10,
|
|
195
|
+
:ID => 11,
|
|
196
|
+
:SYMBOL => 12,
|
|
197
|
+
:SPECIAL_ID => 13,
|
|
198
|
+
:STRING => 14,
|
|
199
|
+
:LPAREN => 15,
|
|
200
|
+
:RPAREN => 16,
|
|
201
|
+
:LBRACE => 17,
|
|
202
|
+
:RBRACE => 18,
|
|
203
|
+
:LBRACKET => 19,
|
|
204
|
+
:RBRACKET => 20,
|
|
205
|
+
:QUERY => 21,
|
|
206
|
+
:STAR => 22,
|
|
207
|
+
:LESS => 23,
|
|
208
|
+
:GREATER => 24,
|
|
209
|
+
:EOF => 25 }
|
|
210
|
+
|
|
211
|
+
racc_nt_base = 26
|
|
212
|
+
|
|
213
|
+
racc_use_result_var = true
|
|
214
|
+
|
|
215
|
+
Racc_arg = [
|
|
216
|
+
racc_action_table,
|
|
217
|
+
racc_action_check,
|
|
218
|
+
racc_action_default,
|
|
219
|
+
racc_action_pointer,
|
|
220
|
+
racc_goto_table,
|
|
221
|
+
racc_goto_check,
|
|
222
|
+
racc_goto_default,
|
|
223
|
+
racc_goto_pointer,
|
|
224
|
+
racc_nt_base,
|
|
225
|
+
racc_reduce_table,
|
|
226
|
+
racc_token_table,
|
|
227
|
+
racc_shift_n,
|
|
228
|
+
racc_reduce_n,
|
|
229
|
+
racc_use_result_var ]
|
|
230
|
+
|
|
231
|
+
Racc_token_to_s_table = [
|
|
232
|
+
"$end",
|
|
233
|
+
"error",
|
|
234
|
+
"COMMA",
|
|
235
|
+
"RARROW",
|
|
236
|
+
"OR",
|
|
237
|
+
"DOUBLE_HASH",
|
|
238
|
+
"CONST_BEGIN",
|
|
239
|
+
"RASSOC",
|
|
240
|
+
"FIXNUM",
|
|
241
|
+
"FLOAT",
|
|
242
|
+
"COLON",
|
|
243
|
+
"ID",
|
|
244
|
+
"SYMBOL",
|
|
245
|
+
"SPECIAL_ID",
|
|
246
|
+
"STRING",
|
|
247
|
+
"LPAREN",
|
|
248
|
+
"RPAREN",
|
|
249
|
+
"LBRACE",
|
|
250
|
+
"RBRACE",
|
|
251
|
+
"LBRACKET",
|
|
252
|
+
"RBRACKET",
|
|
253
|
+
"QUERY",
|
|
254
|
+
"STAR",
|
|
255
|
+
"LESS",
|
|
256
|
+
"GREATER",
|
|
257
|
+
"EOF",
|
|
258
|
+
"$start",
|
|
259
|
+
"entry",
|
|
260
|
+
"method_type",
|
|
261
|
+
"bare_type",
|
|
262
|
+
"type_expr",
|
|
263
|
+
"arg_list",
|
|
264
|
+
"block",
|
|
265
|
+
"method_sig_list",
|
|
266
|
+
"nonempty_arg_list",
|
|
267
|
+
"named_arg_list",
|
|
268
|
+
"arg",
|
|
269
|
+
"base_arg",
|
|
270
|
+
"named_arg",
|
|
271
|
+
"base_arg_query_only",
|
|
272
|
+
"union_type",
|
|
273
|
+
"type_expr_comma_list",
|
|
274
|
+
"hash_expr",
|
|
275
|
+
"hash_expr_comma_list",
|
|
276
|
+
"single_type" ]
|
|
277
|
+
|
|
278
|
+
Racc_debug_parser = false
|
|
279
|
+
|
|
280
|
+
##### State transition tables end #####
|
|
281
|
+
|
|
282
|
+
# reduce 0 omitted
|
|
283
|
+
|
|
284
|
+
module_eval(<<'.,.,', 'parser.racc', 18)
|
|
285
|
+
def _reduce_1(val, _values, result)
|
|
286
|
+
result = val[0]
|
|
287
|
+
result
|
|
288
|
+
end
|
|
289
|
+
.,.,
|
|
290
|
+
|
|
291
|
+
module_eval(<<'.,.,', 'parser.racc', 19)
|
|
292
|
+
def _reduce_2(val, _values, result)
|
|
293
|
+
result = val[0]
|
|
294
|
+
result
|
|
295
|
+
end
|
|
296
|
+
.,.,
|
|
297
|
+
|
|
298
|
+
module_eval(<<'.,.,', 'parser.racc', 23)
|
|
299
|
+
def _reduce_3(val, _values, result)
|
|
300
|
+
result = val[1]
|
|
301
|
+
|
|
302
|
+
result
|
|
303
|
+
end
|
|
304
|
+
.,.,
|
|
305
|
+
|
|
306
|
+
module_eval(<<'.,.,', 'parser.racc', 28)
|
|
307
|
+
def _reduce_4(val, _values, result)
|
|
308
|
+
result = RDL::Type::MethodType.new val[1], val[3], val[5]
|
|
309
|
+
|
|
310
|
+
result
|
|
311
|
+
end
|
|
312
|
+
.,.,
|
|
313
|
+
|
|
314
|
+
module_eval(<<'.,.,', 'parser.racc', 31)
|
|
315
|
+
def _reduce_5(val, _values, result)
|
|
316
|
+
result = RDL::Type::MethodType.new val[1], val[3], RDL::Type::AnnotatedArgType.new(val[6], val[5])
|
|
317
|
+
|
|
318
|
+
result
|
|
319
|
+
end
|
|
320
|
+
.,.,
|
|
321
|
+
|
|
322
|
+
module_eval(<<'.,.,', 'parser.racc', 35)
|
|
323
|
+
def _reduce_6(val, _values, result)
|
|
324
|
+
result = [val[0].to_sym, val[2]]
|
|
325
|
+
result
|
|
326
|
+
end
|
|
327
|
+
.,.,
|
|
328
|
+
|
|
329
|
+
module_eval(<<'.,.,', 'parser.racc', 36)
|
|
330
|
+
def _reduce_7(val, _values, result)
|
|
331
|
+
result = [val[0].to_sym, val[2]] + val[4]
|
|
332
|
+
result
|
|
333
|
+
end
|
|
334
|
+
.,.,
|
|
335
|
+
|
|
336
|
+
module_eval(<<'.,.,', 'parser.racc', 39)
|
|
337
|
+
def _reduce_8(val, _values, result)
|
|
338
|
+
result = []
|
|
339
|
+
result
|
|
340
|
+
end
|
|
341
|
+
.,.,
|
|
342
|
+
|
|
343
|
+
module_eval(<<'.,.,', 'parser.racc', 40)
|
|
344
|
+
def _reduce_9(val, _values, result)
|
|
345
|
+
result = val[0]
|
|
346
|
+
result
|
|
347
|
+
end
|
|
348
|
+
.,.,
|
|
349
|
+
|
|
350
|
+
module_eval(<<'.,.,', 'parser.racc', 42)
|
|
351
|
+
def _reduce_10(val, _values, result)
|
|
352
|
+
result = [RDL::Type::FiniteHashType.new(Hash[*val[0]])]
|
|
353
|
+
|
|
354
|
+
result
|
|
355
|
+
end
|
|
356
|
+
.,.,
|
|
357
|
+
|
|
358
|
+
module_eval(<<'.,.,', 'parser.racc', 45)
|
|
359
|
+
def _reduce_11(val, _values, result)
|
|
360
|
+
result = [val[0]]
|
|
361
|
+
result
|
|
362
|
+
end
|
|
363
|
+
.,.,
|
|
364
|
+
|
|
365
|
+
module_eval(<<'.,.,', 'parser.racc', 46)
|
|
366
|
+
def _reduce_12(val, _values, result)
|
|
367
|
+
result = val[2].unshift val[0]
|
|
368
|
+
result
|
|
369
|
+
end
|
|
370
|
+
.,.,
|
|
371
|
+
|
|
372
|
+
module_eval(<<'.,.,', 'parser.racc', 47)
|
|
373
|
+
def _reduce_13(val, _values, result)
|
|
374
|
+
# named arg list must come last
|
|
375
|
+
result = [val[0], RDL::Type::FiniteHashType.new(Hash[*val[2]])]
|
|
376
|
+
|
|
377
|
+
result
|
|
378
|
+
end
|
|
379
|
+
.,.,
|
|
380
|
+
|
|
381
|
+
module_eval(<<'.,.,', 'parser.racc', 51)
|
|
382
|
+
def _reduce_14(val, _values, result)
|
|
383
|
+
result = val[0]
|
|
384
|
+
result
|
|
385
|
+
end
|
|
386
|
+
.,.,
|
|
387
|
+
|
|
388
|
+
module_eval(<<'.,.,', 'parser.racc', 52)
|
|
389
|
+
def _reduce_15(val, _values, result)
|
|
390
|
+
result = RDL::Type::AnnotatedArgType.new(val[1], val[0])
|
|
391
|
+
result
|
|
392
|
+
end
|
|
393
|
+
.,.,
|
|
394
|
+
|
|
395
|
+
module_eval(<<'.,.,', 'parser.racc', 54)
|
|
396
|
+
def _reduce_16(val, _values, result)
|
|
397
|
+
result = val[0]
|
|
398
|
+
result
|
|
399
|
+
end
|
|
400
|
+
.,.,
|
|
401
|
+
|
|
402
|
+
module_eval(<<'.,.,', 'parser.racc', 55)
|
|
403
|
+
def _reduce_17(val, _values, result)
|
|
404
|
+
result = val[0] + val[2]
|
|
405
|
+
result
|
|
406
|
+
end
|
|
407
|
+
.,.,
|
|
408
|
+
|
|
409
|
+
module_eval(<<'.,.,', 'parser.racc', 57)
|
|
410
|
+
def _reduce_18(val, _values, result)
|
|
411
|
+
result = [val[0].to_sym, val[2]]
|
|
412
|
+
result
|
|
413
|
+
end
|
|
414
|
+
.,.,
|
|
415
|
+
|
|
416
|
+
module_eval(<<'.,.,', 'parser.racc', 60)
|
|
417
|
+
def _reduce_19(val, _values, result)
|
|
418
|
+
result = RDL::Type::OptionalType.new val[1]
|
|
419
|
+
result
|
|
420
|
+
end
|
|
421
|
+
.,.,
|
|
422
|
+
|
|
423
|
+
module_eval(<<'.,.,', 'parser.racc', 61)
|
|
424
|
+
def _reduce_20(val, _values, result)
|
|
425
|
+
result = RDL::Type::VarargType.new val[1]
|
|
426
|
+
result
|
|
427
|
+
end
|
|
428
|
+
.,.,
|
|
429
|
+
|
|
430
|
+
module_eval(<<'.,.,', 'parser.racc', 62)
|
|
431
|
+
def _reduce_21(val, _values, result)
|
|
432
|
+
result = val[0]
|
|
433
|
+
result
|
|
434
|
+
end
|
|
435
|
+
.,.,
|
|
436
|
+
|
|
437
|
+
module_eval(<<'.,.,', 'parser.racc', 64)
|
|
438
|
+
def _reduce_22(val, _values, result)
|
|
439
|
+
result = RDL::Type::OptionalType.new val[1]
|
|
440
|
+
result
|
|
441
|
+
end
|
|
442
|
+
.,.,
|
|
443
|
+
|
|
444
|
+
module_eval(<<'.,.,', 'parser.racc', 65)
|
|
445
|
+
def _reduce_23(val, _values, result)
|
|
446
|
+
result = val[0]
|
|
447
|
+
result
|
|
448
|
+
end
|
|
449
|
+
.,.,
|
|
450
|
+
|
|
451
|
+
module_eval(<<'.,.,', 'parser.racc', 68)
|
|
452
|
+
def _reduce_24(val, _values, result)
|
|
453
|
+
result = nil
|
|
454
|
+
result
|
|
455
|
+
end
|
|
456
|
+
.,.,
|
|
457
|
+
|
|
458
|
+
module_eval(<<'.,.,', 'parser.racc', 69)
|
|
459
|
+
def _reduce_25(val, _values, result)
|
|
460
|
+
result = val[1]
|
|
461
|
+
result
|
|
462
|
+
end
|
|
463
|
+
.,.,
|
|
464
|
+
|
|
465
|
+
module_eval(<<'.,.,', 'parser.racc', 72)
|
|
466
|
+
def _reduce_26(val, _values, result)
|
|
467
|
+
result = val[0]
|
|
468
|
+
result
|
|
469
|
+
end
|
|
470
|
+
.,.,
|
|
471
|
+
|
|
472
|
+
module_eval(<<'.,.,', 'parser.racc', 73)
|
|
473
|
+
def _reduce_27(val, _values, result)
|
|
474
|
+
result = val[1]
|
|
475
|
+
result
|
|
476
|
+
end
|
|
477
|
+
.,.,
|
|
478
|
+
|
|
479
|
+
module_eval(<<'.,.,', 'parser.racc', 76)
|
|
480
|
+
def _reduce_28(val, _values, result)
|
|
481
|
+
result = [val[0]]
|
|
482
|
+
result
|
|
483
|
+
end
|
|
484
|
+
.,.,
|
|
485
|
+
|
|
486
|
+
module_eval(<<'.,.,', 'parser.racc', 77)
|
|
487
|
+
def _reduce_29(val, _values, result)
|
|
488
|
+
result = [val[0]] + val[2]
|
|
489
|
+
result
|
|
490
|
+
end
|
|
491
|
+
.,.,
|
|
492
|
+
|
|
493
|
+
# reduce 30 omitted
|
|
494
|
+
|
|
495
|
+
module_eval(<<'.,.,', 'parser.racc', 80)
|
|
496
|
+
def _reduce_31(val, _values, result)
|
|
497
|
+
result = val[0]
|
|
498
|
+
result
|
|
499
|
+
end
|
|
500
|
+
.,.,
|
|
501
|
+
|
|
502
|
+
module_eval(<<'.,.,', 'parser.racc', 81)
|
|
503
|
+
def _reduce_32(val, _values, result)
|
|
504
|
+
result = [val[0].to_i, val[2]]
|
|
505
|
+
result
|
|
506
|
+
end
|
|
507
|
+
.,.,
|
|
508
|
+
|
|
509
|
+
module_eval(<<'.,.,', 'parser.racc', 82)
|
|
510
|
+
def _reduce_33(val, _values, result)
|
|
511
|
+
result = [val[0].to_f, val[2]]
|
|
512
|
+
result
|
|
513
|
+
end
|
|
514
|
+
.,.,
|
|
515
|
+
|
|
516
|
+
module_eval(<<'.,.,', 'parser.racc', 84)
|
|
517
|
+
def _reduce_34(val, _values, result)
|
|
518
|
+
result = [Kernel.const_get(val[0]), val[2]]
|
|
519
|
+
|
|
520
|
+
result
|
|
521
|
+
end
|
|
522
|
+
.,.,
|
|
523
|
+
|
|
524
|
+
module_eval(<<'.,.,', 'parser.racc', 86)
|
|
525
|
+
def _reduce_35(val, _values, result)
|
|
526
|
+
result = [val[0], val[2]]
|
|
527
|
+
result
|
|
528
|
+
end
|
|
529
|
+
.,.,
|
|
530
|
+
|
|
531
|
+
module_eval(<<'.,.,', 'parser.racc', 89)
|
|
532
|
+
def _reduce_36(val, _values, result)
|
|
533
|
+
result = val[0]
|
|
534
|
+
result
|
|
535
|
+
end
|
|
536
|
+
.,.,
|
|
537
|
+
|
|
538
|
+
module_eval(<<'.,.,', 'parser.racc', 90)
|
|
539
|
+
def _reduce_37(val, _values, result)
|
|
540
|
+
result = val[0] + val[2]
|
|
541
|
+
result
|
|
542
|
+
end
|
|
543
|
+
.,.,
|
|
544
|
+
|
|
545
|
+
module_eval(<<'.,.,', 'parser.racc', 93)
|
|
546
|
+
def _reduce_38(val, _values, result)
|
|
547
|
+
result = val[0]
|
|
548
|
+
result
|
|
549
|
+
end
|
|
550
|
+
.,.,
|
|
551
|
+
|
|
552
|
+
module_eval(<<'.,.,', 'parser.racc', 94)
|
|
553
|
+
def _reduce_39(val, _values, result)
|
|
554
|
+
result = RDL::Type::UnionType.new val[0], val[2]
|
|
555
|
+
result
|
|
556
|
+
end
|
|
557
|
+
.,.,
|
|
558
|
+
|
|
559
|
+
module_eval(<<'.,.,', 'parser.racc', 97)
|
|
560
|
+
def _reduce_40(val, _values, result)
|
|
561
|
+
result = RDL::Type::SingletonType.new(val[0].to_sym)
|
|
562
|
+
result
|
|
563
|
+
end
|
|
564
|
+
.,.,
|
|
565
|
+
|
|
566
|
+
module_eval(<<'.,.,', 'parser.racc', 99)
|
|
567
|
+
def _reduce_41(val, _values, result)
|
|
568
|
+
if val[0] == 'nil' then
|
|
569
|
+
result = RDL::Type::NilType.new
|
|
570
|
+
elsif val[0] =~ /^[a-z_]+\w*\'?/ then
|
|
571
|
+
result = RDL::Type::VarType.new(val[0].to_sym)
|
|
572
|
+
else
|
|
573
|
+
result = RDL::Type::NominalType.new val[0]
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
result
|
|
577
|
+
end
|
|
578
|
+
.,.,
|
|
579
|
+
|
|
580
|
+
module_eval(<<'.,.,', 'parser.racc', 108)
|
|
581
|
+
def _reduce_42(val, _values, result)
|
|
582
|
+
if $__rdl_special_types.has_key? val[0] then
|
|
583
|
+
result = $__rdl_special_types[val[0]]
|
|
584
|
+
else
|
|
585
|
+
fail "Unexpected special type identifier #{val[0]}"
|
|
586
|
+
end
|
|
587
|
+
|
|
588
|
+
result
|
|
589
|
+
end
|
|
590
|
+
.,.,
|
|
591
|
+
|
|
592
|
+
module_eval(<<'.,.,', 'parser.racc', 115)
|
|
593
|
+
def _reduce_43(val, _values, result)
|
|
594
|
+
n = RDL::Type::NominalType.new(val[0])
|
|
595
|
+
result = RDL::Type::GenericType.new(n, *val[2])
|
|
596
|
+
|
|
597
|
+
result
|
|
598
|
+
end
|
|
599
|
+
.,.,
|
|
600
|
+
|
|
601
|
+
module_eval(<<'.,.,', 'parser.racc', 119)
|
|
602
|
+
def _reduce_44(val, _values, result)
|
|
603
|
+
result = RDL::Type::TupleType.new(*val[1])
|
|
604
|
+
|
|
605
|
+
result
|
|
606
|
+
end
|
|
607
|
+
.,.,
|
|
608
|
+
|
|
609
|
+
module_eval(<<'.,.,', 'parser.racc', 122)
|
|
610
|
+
def _reduce_45(val, _values, result)
|
|
611
|
+
result = RDL::Type::StructuralType.new(Hash[*val[1]])
|
|
612
|
+
|
|
613
|
+
result
|
|
614
|
+
end
|
|
615
|
+
.,.,
|
|
616
|
+
|
|
617
|
+
module_eval(<<'.,.,', 'parser.racc', 125)
|
|
618
|
+
def _reduce_46(val, _values, result)
|
|
619
|
+
result = RDL::Type::FiniteHashType.new(Hash[*val[1]])
|
|
620
|
+
|
|
621
|
+
result
|
|
622
|
+
end
|
|
623
|
+
.,.,
|
|
624
|
+
|
|
625
|
+
module_eval(<<'.,.,', 'parser.racc', 127)
|
|
626
|
+
def _reduce_47(val, _values, result)
|
|
627
|
+
result = RDL::Type::SingletonType.new(val[0].to_i)
|
|
628
|
+
result
|
|
629
|
+
end
|
|
630
|
+
.,.,
|
|
631
|
+
|
|
632
|
+
module_eval(<<'.,.,', 'parser.racc', 128)
|
|
633
|
+
def _reduce_48(val, _values, result)
|
|
634
|
+
result = RDL::Type::SingletonType.new(val[0].to_f)
|
|
635
|
+
result
|
|
636
|
+
end
|
|
637
|
+
.,.,
|
|
638
|
+
|
|
639
|
+
module_eval(<<'.,.,', 'parser.racc', 130)
|
|
640
|
+
def _reduce_49(val, _values, result)
|
|
641
|
+
result = RDL::Type::SingletonType.new(Kernel.const_get(val[1]))
|
|
642
|
+
|
|
643
|
+
result
|
|
644
|
+
end
|
|
645
|
+
.,.,
|
|
646
|
+
|
|
647
|
+
def _reduce_none(val, _values, result)
|
|
648
|
+
val[0]
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
end # class Parser
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
end
|