steep 0.1.0.pre2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +1 -1
  3. data/README.md +146 -33
  4. data/bin/smoke_runner.rb +43 -10
  5. data/lib/steep/ast/annotation/collection.rb +93 -0
  6. data/lib/steep/ast/annotation.rb +131 -0
  7. data/lib/steep/ast/buffer.rb +47 -0
  8. data/lib/steep/ast/location.rb +82 -0
  9. data/lib/steep/ast/method_type.rb +116 -0
  10. data/lib/steep/ast/signature/class.rb +33 -0
  11. data/lib/steep/ast/signature/const.rb +17 -0
  12. data/lib/steep/ast/signature/env.rb +123 -0
  13. data/lib/steep/ast/signature/extension.rb +21 -0
  14. data/lib/steep/ast/signature/gvar.rb +17 -0
  15. data/lib/steep/ast/signature/interface.rb +31 -0
  16. data/lib/steep/ast/signature/members.rb +71 -0
  17. data/lib/steep/ast/signature/module.rb +21 -0
  18. data/lib/steep/ast/type_params.rb +13 -0
  19. data/lib/steep/ast/types/any.rb +39 -0
  20. data/lib/steep/ast/types/bot.rb +39 -0
  21. data/lib/steep/ast/types/class.rb +35 -0
  22. data/lib/steep/ast/types/helper.rb +21 -0
  23. data/lib/steep/ast/types/instance.rb +39 -0
  24. data/lib/steep/ast/types/intersection.rb +74 -0
  25. data/lib/steep/ast/types/name.rb +124 -0
  26. data/lib/steep/ast/types/self.rb +39 -0
  27. data/lib/steep/ast/types/top.rb +39 -0
  28. data/lib/steep/ast/types/union.rb +74 -0
  29. data/lib/steep/ast/types/var.rb +57 -0
  30. data/lib/steep/ast/types/void.rb +35 -0
  31. data/lib/steep/cli.rb +28 -1
  32. data/lib/steep/drivers/annotations.rb +32 -0
  33. data/lib/steep/drivers/check.rb +53 -77
  34. data/lib/steep/drivers/scaffold.rb +303 -0
  35. data/lib/steep/drivers/utils/each_signature.rb +66 -0
  36. data/lib/steep/drivers/utils/validator.rb +115 -0
  37. data/lib/steep/drivers/validate.rb +39 -0
  38. data/lib/steep/errors.rb +291 -19
  39. data/lib/steep/interface/abstract.rb +44 -0
  40. data/lib/steep/interface/builder.rb +470 -0
  41. data/lib/steep/interface/instantiated.rb +126 -0
  42. data/lib/steep/interface/ivar_chain.rb +26 -0
  43. data/lib/steep/interface/method.rb +60 -0
  44. data/lib/steep/{interface.rb → interface/method_type.rb} +111 -100
  45. data/lib/steep/interface/substitution.rb +65 -0
  46. data/lib/steep/module_name.rb +116 -0
  47. data/lib/steep/parser.rb +1314 -814
  48. data/lib/steep/parser.y +536 -175
  49. data/lib/steep/source.rb +220 -25
  50. data/lib/steep/subtyping/check.rb +673 -0
  51. data/lib/steep/subtyping/constraints.rb +275 -0
  52. data/lib/steep/subtyping/relation.rb +41 -0
  53. data/lib/steep/subtyping/result.rb +126 -0
  54. data/lib/steep/subtyping/trace.rb +48 -0
  55. data/lib/steep/subtyping/variable_occurrence.rb +49 -0
  56. data/lib/steep/subtyping/variable_variance.rb +69 -0
  57. data/lib/steep/type_construction.rb +1630 -524
  58. data/lib/steep/type_inference/block_params.rb +100 -0
  59. data/lib/steep/type_inference/constant_env.rb +55 -0
  60. data/lib/steep/type_inference/send_args.rb +222 -0
  61. data/lib/steep/type_inference/type_env.rb +226 -0
  62. data/lib/steep/type_name.rb +27 -7
  63. data/lib/steep/typing.rb +4 -0
  64. data/lib/steep/version.rb +1 -1
  65. data/lib/steep.rb +71 -16
  66. data/smoke/and/a.rb +4 -2
  67. data/smoke/array/a.rb +4 -5
  68. data/smoke/array/b.rb +4 -4
  69. data/smoke/block/a.rb +2 -2
  70. data/smoke/block/a.rbi +2 -0
  71. data/smoke/block/b.rb +15 -0
  72. data/smoke/case/a.rb +3 -3
  73. data/smoke/class/a.rb +3 -3
  74. data/smoke/class/b.rb +0 -2
  75. data/smoke/class/d.rb +2 -2
  76. data/smoke/class/e.rb +1 -1
  77. data/smoke/class/f.rb +2 -2
  78. data/smoke/class/g.rb +8 -0
  79. data/smoke/const/a.rb +3 -3
  80. data/smoke/dstr/a.rb +1 -1
  81. data/smoke/ensure/a.rb +22 -0
  82. data/smoke/enumerator/a.rb +6 -6
  83. data/smoke/enumerator/b.rb +22 -0
  84. data/smoke/extension/a.rb +2 -2
  85. data/smoke/extension/b.rb +3 -3
  86. data/smoke/extension/c.rb +1 -1
  87. data/smoke/hello/hello.rb +2 -2
  88. data/smoke/if/a.rb +4 -2
  89. data/smoke/kwbegin/a.rb +8 -0
  90. data/smoke/literal/a.rb +5 -5
  91. data/smoke/method/a.rb +5 -5
  92. data/smoke/method/a.rbi +4 -0
  93. data/smoke/method/b.rb +29 -0
  94. data/smoke/module/a.rb +3 -3
  95. data/smoke/module/a.rbi +9 -0
  96. data/smoke/module/b.rb +2 -2
  97. data/smoke/module/c.rb +1 -1
  98. data/smoke/module/d.rb +5 -0
  99. data/smoke/module/e.rb +13 -0
  100. data/smoke/module/f.rb +13 -0
  101. data/smoke/rescue/a.rb +62 -0
  102. data/smoke/super/a.rb +2 -2
  103. data/smoke/type_case/a.rb +35 -0
  104. data/smoke/yield/a.rb +2 -2
  105. data/stdlib/builtin.rbi +463 -24
  106. data/steep.gemspec +3 -2
  107. metadata +91 -29
  108. data/lib/steep/annotation.rb +0 -223
  109. data/lib/steep/signature/class.rb +0 -450
  110. data/lib/steep/signature/extension.rb +0 -51
  111. data/lib/steep/signature/interface.rb +0 -49
  112. data/lib/steep/types/any.rb +0 -31
  113. data/lib/steep/types/class.rb +0 -27
  114. data/lib/steep/types/instance.rb +0 -27
  115. data/lib/steep/types/merge.rb +0 -32
  116. data/lib/steep/types/name.rb +0 -57
  117. data/lib/steep/types/union.rb +0 -42
  118. data/lib/steep/types/var.rb +0 -38
  119. data/lib/steep/types.rb +0 -4
data/lib/steep/parser.rb CHANGED
@@ -8,32 +8,58 @@ require 'racc/parser.rb'
8
8
  module Steep
9
9
  class Parser < Racc::Parser
10
10
 
11
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 189)
11
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 502)
12
12
 
13
13
  require "strscan"
14
14
 
15
15
  attr_reader :input
16
+ attr_reader :buffer
17
+ attr_reader :offset
16
18
 
17
- def initialize(type, input)
19
+ def initialize(type, buffer:, offset:, input: nil)
18
20
  super()
19
21
  @type = type
20
- @input = StringScanner.new(input)
22
+ @buffer = buffer
23
+ @input = StringScanner.new(input || buffer.content)
24
+ @offset = offset
21
25
  end
22
26
 
23
- def self.parse_method(input)
24
- new(:METHOD, input).do_parse
27
+ def self.parse_method(input, name: nil)
28
+ new(:METHOD, buffer: AST::Buffer.new(name: name, content: input), offset: 0).do_parse
25
29
  end
26
30
 
27
- def self.parse_signature(input)
28
- new(:SIGNATURE, input).do_parse
31
+ def self.parse_signature(input, name: nil)
32
+ new(:SIGNATURE, buffer: AST::Buffer.new(name: name, content: input), offset: 0).do_parse
29
33
  end
30
34
 
31
- def self.parse_annotation_opt(input)
32
- new(:ANNOTATION, input).do_parse
33
- rescue
35
+ def self.parse_annotation_opt(input, buffer:, offset: 0)
36
+ new(:ANNOTATION, input: input, buffer: buffer, offset: offset).do_parse
37
+ rescue => exn
38
+ Steep.logger.debug "Parsing comment failed: #{exn.inspect}"
34
39
  nil
35
40
  end
36
41
 
42
+ class LocatedValue
43
+ attr_reader :location
44
+ attr_reader :value
45
+
46
+ def initialize(location:, value:)
47
+ @location = location
48
+ @value = value
49
+ end
50
+ end
51
+
52
+ def new_token(type, value = nil)
53
+ start_index = offset + input.pos - input.matched.bytesize
54
+ end_index = offset + input.pos
55
+
56
+ location = AST::Location.new(buffer: buffer,
57
+ start_pos: start_index,
58
+ end_pos: end_index)
59
+
60
+ [type, LocatedValue.new(location: location, value: value)]
61
+ end
62
+
37
63
  def next_token
38
64
  if @type
39
65
  type = @type
@@ -49,500 +75,675 @@ def next_token
49
75
  when input.eos?
50
76
  [false, false]
51
77
  when input.scan(/->/)
52
- [:ARROW, nil]
78
+ new_token(:ARROW)
53
79
  when input.scan(/\?/)
54
- [:QUESTION, nil]
80
+ new_token(:QUESTION)
55
81
  when input.scan(/\(/)
56
- [:LPAREN, nil]
82
+ new_token(:LPAREN, nil)
57
83
  when input.scan(/\)/)
58
- [:RPAREN, nil]
84
+ new_token(:RPAREN, nil)
59
85
  when input.scan(/{/)
60
- [:LBRACE, nil]
86
+ new_token(:LBRACE, nil)
61
87
  when input.scan(/}/)
62
- [:RBRACE, nil]
88
+ new_token(:RBRACE, nil)
63
89
  when input.scan(/,/)
64
- [:COMMA, nil]
65
- when input.scan(/[A-Z]\w*(::[A-Z]\w*)+/)
66
- [:CONST_PATH, input.matched.to_sym]
67
- when input.scan(/::[A-Z]\w*(::[A-Z]\w*)*/)
68
- [:CONST_PATH, input.matched.to_sym]
90
+ new_token(:COMMA, nil)
91
+ when input.scan(/::/)
92
+ new_token(:COLON2)
69
93
  when input.scan(/:/)
70
- [:COLON, nil]
94
+ new_token(:COLON)
71
95
  when input.scan(/\*\*/)
72
- [:STAR2, nil]
96
+ new_token(:STAR2, :**)
73
97
  when input.scan(/\*/)
74
- [:STAR, nil]
98
+ new_token(:STAR, :*)
75
99
  when input.scan(/\+/)
76
- [:PLUS, nil]
100
+ new_token(:PLUS, :+)
77
101
  when input.scan(/\./)
78
- [:DOT, nil]
102
+ new_token(:DOT)
79
103
  when input.scan(/<:/)
80
- [:LTCOLON, nil]
104
+ new_token(:LTCOLON)
81
105
  when input.scan(/(\[\]=)|(\[\])|===|==|\^|!=|<</)
82
- [:OPERATOR, input.matched.to_sym]
106
+ new_token(:OPERATOR, input.matched.to_sym)
107
+ when input.scan(/<=/)
108
+ new_token(:OPERATOR, :<=)
109
+ when input.scan(/>=/)
110
+ new_token(:OPERATOR, :>=)
83
111
  when input.scan(/</)
84
- [:LT, nil]
112
+ new_token(:LT, :<)
85
113
  when input.scan(/>/)
86
- [:GT, nil]
114
+ new_token(:GT, :>)
115
+ when input.scan(/nil\b/)
116
+ new_token(:NIL, :nil)
87
117
  when input.scan(/any\b/)
88
- [:ANY, nil]
118
+ new_token(:ANY, :any)
119
+ when input.scan(/void\b/)
120
+ new_token(:VOID, :void)
89
121
  when input.scan(/interface\b/)
90
- [:INTERFACE, nil]
122
+ new_token(:INTERFACE, :interface)
91
123
  when input.scan(/end\b/)
92
- [:END, nil]
124
+ new_token(:END, :end)
93
125
  when input.scan(/\|/)
94
- [:BAR, nil]
126
+ new_token(:BAR, :bar)
95
127
  when input.scan(/def\b/)
96
- [:DEF, nil]
128
+ new_token(:DEF)
97
129
  when input.scan(/@type\b/)
98
- [:AT_TYPE, nil]
130
+ new_token(:AT_TYPE)
99
131
  when input.scan(/@implements\b/)
100
- [:AT_IMPLEMENTS, nil]
132
+ new_token(:AT_IMPLEMENTS)
101
133
  when input.scan(/@dynamic\b/)
102
- [:AT_DYNAMIC, nil]
134
+ new_token(:AT_DYNAMIC)
103
135
  when input.scan(/const\b/)
104
- [:CONST, nil]
136
+ new_token(:CONST, :const)
105
137
  when input.scan(/var\b/)
106
- [:VAR, nil]
138
+ new_token(:VAR, :var)
107
139
  when input.scan(/return\b/)
108
- [:RETURN, nil]
140
+ new_token(:RETURN)
109
141
  when input.scan(/block\b/)
110
- [:BLOCK, nil]
142
+ new_token(:BLOCK, :block)
143
+ when input.scan(/break\b/)
144
+ new_token(:BREAK, :break)
111
145
  when input.scan(/method\b/)
112
- [:METHOD, nil]
146
+ new_token(:METHOD, :method)
113
147
  when input.scan(/self\?/)
114
- [:SELFQ, nil]
148
+ new_token(:SELFQ)
115
149
  when input.scan(/self\b/)
116
- [:SELF, nil]
150
+ new_token(:SELF, :self)
117
151
  when input.scan(/'\w+/)
118
- [:TVAR, input.matched.gsub(/\A'/, '').to_sym]
152
+ new_token(:TVAR, input.matched.gsub(/\A'/, '').to_sym)
119
153
  when input.scan(/instance\b/)
120
- [:INSTANCE, nil]
154
+ new_token(:INSTANCE, :instance)
121
155
  when input.scan(/class\b/)
122
- [:CLASS, nil]
156
+ new_token(:CLASS, :class)
123
157
  when input.scan(/module\b/)
124
- [:MODULE, nil]
158
+ new_token(:MODULE, :module)
159
+ when input.scan(/include\?/)
160
+ new_token(:METHOD_NAME, :include?)
125
161
  when input.scan(/include\b/)
126
- [:INCLUDE, nil]
162
+ new_token(:INCLUDE, :include)
127
163
  when input.scan(/extend\b/)
128
- [:EXTEND, nil]
164
+ new_token(:EXTEND, :extend)
129
165
  when input.scan(/instance\b/)
130
- [:INSTANCE, nil]
166
+ new_token(:INSTANCE, :instance)
131
167
  when input.scan(/ivar\b/)
132
- [:IVAR, nil]
168
+ new_token(:IVAR, :ivar)
169
+ when input.scan(/%/)
170
+ new_token(:PERCENT, :%)
171
+ when input.scan(/-/)
172
+ new_token(:MINUS, :-)
173
+ when input.scan(/&/)
174
+ new_token(:OPERATOR, :&)
175
+ when input.scan(/~/)
176
+ new_token(:OPERATOR, :~)
177
+ when input.scan(/\//)
178
+ new_token(:OPERATOR, :/)
179
+ when input.scan(/!/)
180
+ new_token(:OPERATOR, :!)
133
181
  when input.scan(/extension\b/)
134
- [:EXTENSION, nil]
182
+ new_token(:EXTENSION, :extension)
135
183
  when input.scan(/constructor\b/)
136
- [:CONSTRUCTOR, true]
184
+ new_token(:CONSTRUCTOR, true)
137
185
  when input.scan(/noconstructor\b/)
138
- [:NOCONSTRUCTOR, false]
139
- when input.scan(/[A-Z]\w*\.(class|module)\b/)
140
- [:CLASS_IDENT, input.matched.gsub(/\.(class|module)$/, '').to_sym]
141
- when input.scan(/\w+(\!|\?)/)
142
- [:METHOD_NAME, input.matched.to_sym]
186
+ new_token(:NOCONSTRUCTOR, false)
187
+ when input.scan(/\w+(\!|\?|=)/)
188
+ new_token(:METHOD_NAME, input.matched.to_sym)
189
+ when input.scan(/\$\w+\b/)
190
+ new_token(:GVAR, input.matched.to_sym)
143
191
  when input.scan(/[A-Z]\w*/)
144
- [:MODULE_NAME, input.matched.to_sym]
192
+ new_token(:UIDENT, input.matched.to_sym)
145
193
  when input.scan(/_\w+/)
146
- [:INTERFACE_NAME, input.matched.to_sym]
147
- when input.scan(/@[\w_]+/)
148
- [:IVAR_NAME, input.matched.to_sym]
194
+ new_token(:INTERFACE_NAME, input.matched.to_sym)
195
+ when input.scan(/@\w+/)
196
+ new_token(:IVAR_NAME, input.matched.to_sym)
149
197
  when input.scan(/\w+/)
150
- [:IDENT, input.matched.to_sym]
198
+ new_token(:IDENT, input.matched.to_sym)
151
199
  end
152
200
  end
153
201
  ...end parser.y/module_eval...
154
202
  ##### State transition tables begin ###
155
203
 
156
204
  racc_action_table = [
157
- 121, 60, 209, 74, 59, 8, 61, 218, 65, 66,
158
- 67, 72, 73, 19, 58, 70, 71, 62, 63, -64,
159
- 219, 20, 21, 103, 15, 16, 64, 68, 69, 60,
160
- 120, 74, 59, 14, 61, 17, 65, 66, 67, 72,
161
- 73, 129, 58, 70, 71, 62, 63, -65, 220, 127,
162
- 223, 102, 15, 16, 64, 68, 69, 60, 224, 74,
163
- 59, 14, 61, 17, 65, 66, 67, 72, 73, 227,
164
- 58, 70, 71, 62, 63, 169, 91, 239, 230, 240,
165
- 15, 16, 64, 68, 69, 60, 232, 74, 59, 14,
166
- 61, 17, 65, 66, 67, 72, 73, 107, 58, 70,
167
- 71, 62, 63, 2, 3, 4, 105, 106, 15, 16,
168
- 64, 68, 69, 60, 233, 74, 59, 14, 61, 17,
169
- 65, 66, 67, 72, 73, 8, 58, 70, 71, 62,
170
- 63, 55, 54, 24, 241, 242, 243, 51, 64, 68,
171
- 69, 244, 26, 52, 245, 27, 28, 29, 30, 31,
172
- 32, 33, 48, 49, 50, 53, 246, 56, 88, 90,
173
- 91, 247, 8, 8, 93, 252, 253, 94, 28, 95,
174
- 30, 96, 97, 98, 88, 185, 8, 99, 100, 101,
175
- 179, 8, 5, 178, 8, 180, 22, 181, 182, 183,
176
- 88, 185, 37, 99, 100, 101, 179, 43, 45, 178,
177
- 45, 180, 45, 181, 182, 183, 88, 90, 91, 99,
178
- 100, 101, 179, 57, 77, 178, 102, 180, 103, 181,
179
- 182, 183, 88, 185, 107, 99, 100, 101, 179, 108,
180
- 109, 178, 8, 180, 8, 181, 182, 183, 88, 90,
181
- 91, 99, 100, 101, 93, 8, 113, 94, 28, 95,
182
- 30, 96, 97, 98, 167, 115, 204, 99, 100, 101,
183
- 203, 115, 117, 26, 205, 118, 27, 28, 29, 30,
184
- 31, 32, 33, 179, 15, 16, 178, 119, 180, 122,
185
- 181, 182, 183, 14, 123, 17, 99, 100, 101, 93,
186
- 124, 125, 94, 28, 95, 30, 96, 97, 98, 126,
187
- 169, 91, 99, 100, 101, 26, 130, 131, 27, 28,
188
- 29, 30, 31, 32, 33, 169, 91, 132, 133, 134,
189
- 26, 135, 140, 27, 28, 29, 30, 31, 32, 33,
190
- 26, -66, -67, 27, 28, 29, 30, 31, 32, 33,
191
- 26, -68, -69, 27, 28, 29, 30, 31, 32, 33,
192
- 26, 37, 149, 27, 28, 29, 30, 31, 32, 33,
193
- 26, 151, 153, 27, 28, 29, 30, 31, 32, 33,
194
- 26, 45, 155, 27, 28, 29, 30, 31, 32, 33,
195
- 26, 156, 160, 27, 28, 29, 30, 31, 32, 33,
196
- 26, 161, 164, 27, 28, 29, 30, 31, 32, 33,
197
- 26, 168, 188, 27, 28, 29, 30, 31, 32, 33,
198
- 26, 190, 191, 27, 28, 29, 30, 31, 32, 33,
199
- 26, 192, 107, 27, 28, 29, 30, 31, 32, 33,
200
- 26, 193, 149, 27, 28, 29, 30, 31, 32, 33,
201
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
202
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
203
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
204
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
205
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
206
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
207
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
208
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
209
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
210
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
211
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
212
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
213
- 26, nil, nil, 27, 28, 29, 30, 31, 32, 33,
214
- 204, 204, 204, nil, 203, 203, 203, nil, 205, 205,
215
- 205 ]
205
+ 94, 166, 93, 2, 3, 4, 97, 98, 78, 164,
206
+ 83, 84, 85, 270, 79, 272, 77, 275, 101, 102,
207
+ 100, 75, 76, 90, 87, 248, 80, 81, 276, 91,
208
+ 24, 23, 246, 247, 86, 249, 82, 88, 89, 92,
209
+ 95, 96, 99, 94, 277, 93, 24, 23, 278, 97,
210
+ 98, 78, 136, 83, 84, 85, 106, 79, 279, 77,
211
+ 8, 101, 102, 100, 75, 76, 90, 87, 26, 80,
212
+ 81, 288, 91, 27, 28, 289, 107, 86, 290, 82,
213
+ 88, 89, 92, 95, 96, 99, 94, 293, 93, 24,
214
+ 23, 294, 97, 98, 78, 295, 83, 84, 85, 296,
215
+ 79, 297, 77, 300, 101, 102, 100, 75, 76, 90,
216
+ 87, 248, 80, 81, 301, 91, 233, 234, 246, 247,
217
+ 86, 249, 82, 88, 89, 92, 95, 96, 99, 94,
218
+ 8, 93, 24, 23, 8, 97, 98, 78, 306, 83,
219
+ 84, 85, 106, 79, 307, 77, 308, 101, 102, 100,
220
+ 75, 76, 90, 87, 309, 80, 81, 8, 91, 24,
221
+ 23, 8, 107, 86, 5, 82, 88, 89, 92, 95,
222
+ 96, 99, 94, 8, 93, 180, 181, 29, 97, 98,
223
+ 78, 48, 83, 84, 85, 286, 79, 55, 77, 56,
224
+ 101, 102, 100, 75, 76, 90, 87, 58, 80, 81,
225
+ 24, 91, 24, 23, 63, 287, 86, 109, 82, 88,
226
+ 89, 92, 95, 96, 99, 94, 134, 93, 24, 23,
227
+ 135, 97, 98, 78, 136, 83, 84, 85, 137, 79,
228
+ 138, 77, 8, 101, 102, 100, 75, 76, 90, 87,
229
+ 248, 80, 81, 8, 91, 210, 123, 246, 247, 86,
230
+ 249, 82, 88, 89, 92, 95, 96, 99, 94, 8,
231
+ 93, 24, 23, 8, 97, 98, 78, 24, 83, 84,
232
+ 85, 147, 79, 147, 77, 149, 101, 102, 100, 75,
233
+ 76, 90, 87, 248, 80, 81, 150, 91, 151, 153,
234
+ 246, 247, 86, 249, 82, 88, 89, 92, 95, 96,
235
+ 99, 94, 154, 93, 155, 156, 8, 97, 98, 78,
236
+ 158, 83, 84, 85, 159, 79, 160, 77, 161, 101,
237
+ 102, 100, 75, 76, 90, 87, 162, 80, 81, 163,
238
+ 91, 167, 71, 70, 68, 86, 168, 82, 88, 89,
239
+ 92, 95, 96, 99, 67, 169, 170, 171, 172, 177,
240
+ -71, -72, -73, -74, -70, 48, 187, 189, 31, 191,
241
+ 73, 192, 193, 65, 194, 64, 66, 69, 72, 35,
242
+ 36, 37, 38, 39, 40, 41, 42, 44, 198, 201,
243
+ 209, 208, 228, 230, 231, 136, 19, 20, 235, 187,
244
+ 24, 23, 35, 36, 37, 38, 39, 40, 41, 42,
245
+ 44, 16, 18, 254, 21, 24, 23, 120, 122, 123,
246
+ 8, 262, 263, 24, 23, 125, 36, 126, 127, 128,
247
+ 40, 41, 42, 129, 264, 267, 268, nil, 130, 131,
248
+ 132, 133, 120, 122, 123, nil, 24, 23, nil, nil,
249
+ 125, 36, 126, 127, 128, 40, 41, 42, 129, nil,
250
+ nil, nil, nil, 130, 131, 132, 133, 210, 123, 19,
251
+ 20, 24, 23, nil, 35, 36, 37, 38, 39, 40,
252
+ 41, 42, 44, nil, 16, 18, nil, 21, 24, 23,
253
+ 210, 123, nil, nil, nil, 24, 23, 35, 36, 37,
254
+ 38, 39, 40, 41, 42, 44, nil, nil, nil, nil,
255
+ nil, nil, 120, 225, nil, nil, nil, nil, 24, 23,
256
+ 220, nil, 221, 222, 223, nil, nil, nil, 219, 120,
257
+ 225, nil, nil, 130, 131, 132, 133, 220, nil, 221,
258
+ 222, 223, nil, nil, nil, 219, 120, 225, nil, nil,
259
+ 130, 131, 132, 133, 220, nil, 221, 222, 223, nil,
260
+ nil, nil, 219, 120, 122, 123, nil, 130, 131, 132,
261
+ 133, 220, nil, 221, 222, 223, nil, nil, nil, 219,
262
+ nil, nil, nil, nil, 130, 131, 132, 133, 35, 36,
263
+ 37, 38, 39, 40, 41, 42, 44, 35, 36, 37,
264
+ 38, 39, 40, 41, 42, 44, nil, nil, nil, 24,
265
+ 23, nil, nil, nil, nil, nil, nil, nil, 24, 23,
266
+ 125, 36, 126, 127, 128, 40, 41, 42, 129, nil,
267
+ nil, nil, nil, 130, 131, 132, 133, nil, nil, nil,
268
+ nil, 24, 23, 35, 36, 37, 38, 39, 40, 41,
269
+ 42, 44, 35, 36, 37, 38, 39, 40, 41, 42,
270
+ 44, nil, nil, nil, 24, 23, nil, nil, nil, nil,
271
+ nil, nil, nil, 24, 23, 35, 36, 37, 38, 39,
272
+ 40, 41, 42, 44, 35, 36, 37, 38, 39, 40,
273
+ 41, 42, 44, nil, nil, nil, 24, 23, nil, nil,
274
+ nil, nil, nil, nil, nil, 24, 23, 35, 36, 37,
275
+ 38, 39, 40, 41, 42, 44, 35, 36, 37, 38,
276
+ 39, 40, 41, 42, 44, nil, nil, nil, 24, 23,
277
+ nil, nil, nil, nil, nil, nil, nil, 24, 23, 35,
278
+ 36, 37, 38, 39, 40, 41, 42, 44, 35, 36,
279
+ 37, 38, 39, 40, 41, 42, 44, nil, nil, nil,
280
+ 24, 23, nil, nil, nil, nil, nil, nil, nil, 24,
281
+ 23, 35, 36, 37, 38, 39, 40, 41, 42, 44,
282
+ 35, 36, 37, 38, 39, 40, 41, 42, 44, nil,
283
+ nil, nil, 24, 23, nil, nil, nil, nil, nil, nil,
284
+ nil, 24, 23, 35, 36, 37, 38, 39, 40, 41,
285
+ 42, 44, 35, 36, 37, 38, 39, 40, 41, 42,
286
+ 44, nil, nil, nil, 24, 23, nil, nil, nil, nil,
287
+ nil, nil, nil, 24, 23, 35, 36, 37, 38, 39,
288
+ 40, 41, 42, 44, 35, 36, 37, 38, 39, 40,
289
+ 41, 42, 44, nil, nil, nil, 24, 23, nil, nil,
290
+ nil, nil, nil, nil, nil, 24, 23, 35, 36, 37,
291
+ 38, 39, 40, 41, 42, 44, 35, 36, 37, 38,
292
+ 39, 40, 41, 42, 44, nil, nil, nil, 24, 23,
293
+ nil, nil, nil, nil, nil, nil, nil, 24, 23, 35,
294
+ 36, 37, 38, 39, 40, 41, 42, 44, 35, 36,
295
+ 37, 38, 39, 40, 41, 42, 44, nil, nil, nil,
296
+ 24, 23, nil, nil, nil, nil, nil, nil, nil, 24,
297
+ 23, 35, 36, 37, 38, 39, 40, 41, 42, 44,
298
+ 35, 36, 37, 38, 39, 40, 41, 42, 44, nil,
299
+ nil, nil, 24, 23, nil, nil, nil, nil, nil, nil,
300
+ nil, 24, 23, 35, 36, 37, 38, 39, 40, 41,
301
+ 42, 44, 35, 36, 37, 38, 39, 40, 41, 42,
302
+ 44, nil, nil, nil, 24, 23, nil, nil, nil, nil,
303
+ nil, nil, nil, 24, 23, 35, 36, 37, 38, 39,
304
+ 40, 41, 42, 44, 35, 36, 37, 38, 39, 40,
305
+ 41, 42, 44, 19, 20, nil, 24, 23, nil, 19,
306
+ 20, nil, nil, nil, nil, 24, 23, nil, 16, 18,
307
+ nil, 21, 24, 23, 16, 18, nil, 21, 24, 23,
308
+ 19, 20, nil, nil, nil, nil, 19, 20, nil, nil,
309
+ nil, nil, 19, 20, nil, 16, 18, nil, 21, 24,
310
+ 23, 16, 18, nil, 21, 24, 23, 16, 18, nil,
311
+ 21, 24, 23, 220, nil, 221, 222, 223, nil, nil,
312
+ nil, 219, nil, nil, nil, nil, 130, 131, 132, 133 ]
216
313
 
217
314
  racc_action_check = [
218
- 53, 21, 154, 21, 21, 156, 21, 170, 21, 21,
219
- 21, 21, 21, 4, 21, 21, 21, 21, 21, 94,
220
- 171, 4, 4, 94, 11, 11, 21, 21, 21, 149,
221
- 53, 149, 149, 11, 149, 11, 149, 149, 149, 149,
222
- 149, 77, 149, 149, 149, 149, 149, 93, 173, 77,
223
- 195, 93, 13, 13, 149, 149, 149, 226, 196, 226,
224
- 226, 13, 226, 13, 226, 226, 226, 226, 226, 203,
225
- 226, 226, 226, 226, 226, 220, 220, 226, 207, 226,
226
- 12, 12, 226, 226, 226, 246, 215, 246, 246, 12,
227
- 246, 12, 246, 246, 246, 246, 246, 216, 246, 246,
228
- 246, 246, 246, 0, 0, 0, 28, 28, 10, 10,
229
- 246, 246, 246, 245, 217, 245, 245, 10, 245, 10,
230
- 245, 245, 245, 245, 245, 223, 245, 245, 245, 245,
231
- 245, 19, 19, 7, 227, 231, 237, 19, 245, 245,
232
- 245, 238, 7, 19, 239, 7, 7, 7, 7, 7,
233
- 7, 7, 19, 19, 19, 19, 240, 19, 131, 131,
234
- 131, 241, 243, 244, 131, 250, 251, 131, 131, 131,
235
- 131, 131, 131, 131, 134, 134, 252, 131, 131, 131,
236
- 134, 253, 1, 134, 2, 134, 5, 134, 134, 134,
237
- 133, 133, 8, 134, 134, 134, 133, 14, 15, 133,
238
- 16, 133, 17, 133, 133, 133, 132, 132, 132, 133,
239
- 133, 133, 132, 20, 23, 132, 26, 132, 27, 132,
240
- 132, 132, 135, 135, 34, 132, 132, 132, 135, 36,
241
- 37, 135, 42, 135, 44, 135, 135, 135, 24, 24,
242
- 24, 135, 135, 135, 24, 46, 47, 24, 24, 24,
243
- 24, 24, 24, 24, 126, 48, 209, 24, 24, 24,
244
- 209, 49, 50, 126, 209, 51, 126, 126, 126, 126,
245
- 126, 126, 126, 185, 3, 3, 185, 52, 185, 54,
246
- 185, 185, 185, 3, 55, 3, 185, 185, 185, 90,
247
- 56, 74, 90, 90, 90, 90, 90, 90, 90, 76,
248
- 129, 129, 90, 90, 90, 129, 78, 79, 129, 129,
249
- 129, 129, 129, 129, 129, 219, 219, 81, 83, 85,
250
- 219, 86, 92, 219, 219, 219, 219, 219, 219, 219,
251
- 160, 95, 96, 160, 160, 160, 160, 160, 160, 160,
252
- 103, 97, 98, 103, 103, 103, 103, 103, 103, 103,
253
- 188, 109, 110, 188, 188, 188, 188, 188, 188, 188,
254
- 191, 111, 112, 191, 191, 191, 191, 191, 191, 191,
255
- 155, 113, 114, 155, 155, 155, 155, 155, 155, 155,
256
- 204, 116, 120, 204, 204, 204, 204, 204, 204, 204,
257
- 205, 121, 124, 205, 205, 205, 205, 205, 205, 205,
258
- 161, 128, 138, 161, 161, 161, 161, 161, 161, 161,
259
- 167, 141, 142, 167, 167, 167, 167, 167, 167, 167,
260
- 168, 143, 144, 168, 168, 168, 168, 168, 168, 168,
261
- 169, 147, 148, 169, 169, 169, 169, 169, 169, 169,
262
- 107, nil, nil, 107, 107, 107, 107, 107, 107, 107,
263
- 102, nil, nil, 102, 102, 102, 102, 102, 102, 102,
264
- 153, nil, nil, 153, 153, 153, 153, 153, 153, 153,
265
- 88, nil, nil, 88, 88, 88, 88, 88, 88, 88,
266
- 122, nil, nil, 122, 122, 122, 122, 122, 122, 122,
267
- 123, nil, nil, 123, 123, 123, 123, 123, 123, 123,
268
- 151, nil, nil, 151, 151, 151, 151, 151, 151, 151,
269
- 91, nil, nil, 91, 91, 91, 91, 91, 91, 91,
270
- 140, nil, nil, 140, 140, 140, 140, 140, 140, 140,
271
- 164, nil, nil, 164, 164, 164, 164, 164, 164, 164,
272
- 117, nil, nil, 117, 117, 117, 117, 117, 117, 117,
273
- 118, nil, nil, 118, 118, 118, 118, 118, 118, 118,
274
- 119, nil, nil, 119, 119, 119, 119, 119, 119, 119,
275
- 197, 152, 150, nil, 197, 152, 150, nil, 197, 152,
276
- 150 ]
315
+ 162, 109, 162, 0, 0, 0, 162, 162, 162, 109,
316
+ 162, 162, 162, 246, 162, 247, 162, 251, 162, 162,
317
+ 162, 162, 162, 162, 162, 188, 162, 162, 252, 162,
318
+ 19, 19, 188, 188, 162, 188, 162, 162, 162, 162,
319
+ 162, 162, 162, 28, 254, 28, 20, 20, 259, 28,
320
+ 28, 28, 260, 28, 28, 28, 28, 28, 261, 28,
321
+ 267, 28, 28, 28, 28, 28, 28, 28, 4, 28,
322
+ 28, 272, 28, 4, 4, 273, 28, 28, 274, 28,
323
+ 28, 28, 28, 28, 28, 28, 161, 283, 161, 189,
324
+ 189, 285, 161, 161, 161, 286, 161, 161, 161, 287,
325
+ 161, 288, 161, 291, 161, 161, 161, 161, 161, 161,
326
+ 161, 190, 161, 161, 292, 161, 180, 180, 190, 190,
327
+ 161, 190, 161, 161, 161, 161, 161, 161, 161, 160,
328
+ 293, 160, 21, 21, 294, 160, 160, 160, 298, 160,
329
+ 160, 160, 160, 160, 299, 160, 304, 160, 160, 160,
330
+ 160, 160, 160, 160, 305, 160, 160, 308, 160, 27,
331
+ 27, 309, 160, 160, 1, 160, 160, 160, 160, 160,
332
+ 160, 160, 271, 2, 271, 135, 135, 5, 271, 271,
333
+ 271, 8, 271, 271, 271, 271, 271, 16, 271, 17,
334
+ 271, 271, 271, 271, 271, 271, 271, 18, 271, 271,
335
+ 23, 271, 248, 248, 24, 271, 271, 30, 271, 271,
336
+ 271, 271, 271, 271, 271, 187, 34, 187, 249, 249,
337
+ 43, 187, 187, 187, 45, 187, 187, 187, 47, 187,
338
+ 48, 187, 57, 187, 187, 187, 187, 187, 187, 187,
339
+ 239, 187, 187, 59, 187, 264, 264, 239, 239, 187,
340
+ 239, 187, 187, 187, 187, 187, 187, 187, 296, 60,
341
+ 296, 69, 69, 61, 296, 296, 296, 63, 296, 296,
342
+ 296, 64, 296, 65, 296, 66, 296, 296, 296, 296,
343
+ 296, 296, 296, 277, 296, 296, 67, 296, 68, 70,
344
+ 277, 277, 296, 277, 296, 296, 296, 296, 296, 296,
345
+ 296, 295, 71, 295, 72, 73, 74, 295, 295, 295,
346
+ 78, 295, 295, 295, 98, 295, 104, 295, 106, 295,
347
+ 295, 295, 295, 295, 295, 295, 107, 295, 295, 108,
348
+ 295, 110, 26, 26, 26, 295, 111, 295, 295, 295,
349
+ 295, 295, 295, 295, 26, 113, 115, 117, 118, 124,
350
+ 125, 126, 127, 128, 129, 138, 141, 142, 7, 143,
351
+ 26, 144, 146, 26, 148, 26, 26, 26, 26, 7,
352
+ 7, 7, 7, 7, 7, 7, 7, 7, 152, 155,
353
+ 165, 163, 175, 178, 179, 182, 10, 10, 185, 186,
354
+ 7, 7, 163, 163, 163, 163, 163, 163, 163, 163,
355
+ 163, 10, 10, 192, 10, 10, 10, 168, 168, 168,
356
+ 194, 211, 212, 163, 163, 168, 168, 168, 168, 168,
357
+ 168, 168, 168, 168, 214, 237, 238, nil, 168, 168,
358
+ 168, 168, 31, 31, 31, nil, 168, 168, nil, nil,
359
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, nil,
360
+ nil, nil, nil, 31, 31, 31, 31, 263, 263, 14,
361
+ 14, 31, 31, nil, 263, 263, 263, 263, 263, 263,
362
+ 263, 263, 263, nil, 14, 14, nil, 14, 14, 14,
363
+ 166, 166, nil, nil, nil, 263, 263, 166, 166, 166,
364
+ 166, 166, 166, 166, 166, 166, nil, nil, nil, nil,
365
+ nil, nil, 170, 170, nil, nil, nil, nil, 166, 166,
366
+ 170, nil, 170, 170, 170, nil, nil, nil, 170, 172,
367
+ 172, nil, nil, 170, 170, 170, 170, 172, nil, 172,
368
+ 172, 172, nil, nil, nil, 172, 171, 171, nil, nil,
369
+ 172, 172, 172, 172, 171, nil, 171, 171, 171, nil,
370
+ nil, nil, 171, 169, 169, 169, nil, 171, 171, 171,
371
+ 171, 169, nil, 169, 169, 169, nil, nil, nil, 169,
372
+ nil, nil, nil, nil, 169, 169, 169, 169, 120, 120,
373
+ 120, 120, 120, 120, 120, 120, 120, 177, 177, 177,
374
+ 177, 177, 177, 177, 177, 177, nil, nil, nil, 120,
375
+ 120, nil, nil, nil, nil, nil, nil, nil, 177, 177,
376
+ 122, 122, 122, 122, 122, 122, 122, 122, 122, nil,
377
+ nil, nil, nil, 122, 122, 122, 122, nil, nil, nil,
378
+ nil, 122, 122, 191, 191, 191, 191, 191, 191, 191,
379
+ 191, 191, 123, 123, 123, 123, 123, 123, 123, 123,
380
+ 123, nil, nil, nil, 191, 191, nil, nil, nil, nil,
381
+ nil, nil, nil, 123, 123, 193, 193, 193, 193, 193,
382
+ 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
383
+ 198, 198, 198, nil, nil, nil, 193, 193, nil, nil,
384
+ nil, nil, nil, nil, nil, 198, 198, 201, 201, 201,
385
+ 201, 201, 201, 201, 201, 201, 208, 208, 208, 208,
386
+ 208, 208, 208, 208, 208, nil, nil, nil, 201, 201,
387
+ nil, nil, nil, nil, nil, nil, nil, 208, 208, 209,
388
+ 209, 209, 209, 209, 209, 209, 209, 209, 210, 210,
389
+ 210, 210, 210, 210, 210, 210, 210, nil, nil, nil,
390
+ 209, 209, nil, nil, nil, nil, nil, nil, nil, 210,
391
+ 210, 228, 228, 228, 228, 228, 228, 228, 228, 228,
392
+ 231, 231, 231, 231, 231, 231, 231, 231, 231, nil,
393
+ nil, nil, 228, 228, nil, nil, nil, nil, nil, nil,
394
+ nil, 231, 231, 134, 134, 134, 134, 134, 134, 134,
395
+ 134, 134, 136, 136, 136, 136, 136, 136, 136, 136,
396
+ 136, nil, nil, nil, 134, 134, nil, nil, nil, nil,
397
+ nil, nil, nil, 136, 136, 55, 55, 55, 55, 55,
398
+ 55, 55, 55, 55, 56, 56, 56, 56, 56, 56,
399
+ 56, 56, 56, nil, nil, nil, 55, 55, nil, nil,
400
+ nil, nil, nil, nil, nil, 56, 56, 270, 270, 270,
401
+ 270, 270, 270, 270, 270, 270, 149, 149, 149, 149,
402
+ 149, 149, 149, 149, 149, nil, nil, nil, 270, 270,
403
+ nil, nil, nil, nil, nil, nil, nil, 149, 149, 150,
404
+ 150, 150, 150, 150, 150, 150, 150, 150, 275, 275,
405
+ 275, 275, 275, 275, 275, 275, 275, nil, nil, nil,
406
+ 150, 150, nil, nil, nil, nil, nil, nil, nil, 275,
407
+ 275, 151, 151, 151, 151, 151, 151, 151, 151, 151,
408
+ 153, 153, 153, 153, 153, 153, 153, 153, 153, nil,
409
+ nil, nil, 151, 151, nil, nil, nil, nil, nil, nil,
410
+ nil, 153, 153, 154, 154, 154, 154, 154, 154, 154,
411
+ 154, 154, 289, 289, 289, 289, 289, 289, 289, 289,
412
+ 289, nil, nil, nil, 154, 154, nil, nil, nil, nil,
413
+ nil, nil, nil, 289, 289, 290, 290, 290, 290, 290,
414
+ 290, 290, 290, 290, 156, 156, 156, 156, 156, 156,
415
+ 156, 156, 156, 11, 11, nil, 290, 290, nil, 3,
416
+ 3, nil, nil, nil, nil, 156, 156, nil, 11, 11,
417
+ nil, 11, 11, 11, 3, 3, nil, 3, 3, 3,
418
+ 15, 15, nil, nil, nil, nil, 12, 12, nil, nil,
419
+ nil, nil, 13, 13, nil, 15, 15, nil, 15, 15,
420
+ 15, 12, 12, nil, 12, 12, 12, 13, 13, nil,
421
+ 13, 13, 13, 225, nil, 225, 225, 225, nil, nil,
422
+ nil, 225, nil, nil, nil, nil, 225, 225, 225, 225 ]
277
423
 
278
424
  racc_action_pointer = [
279
- 101, 182, 168, 252, -30, 186, nil, 127, 171, nil,
280
- 86, 2, 58, 30, 182, 180, 182, 184, nil, 108,
281
- 195, -14, nil, 201, 229, nil, 200, 202, 81, nil,
282
- nil, nil, nil, nil, 197, nil, 212, 222, nil, nil,
283
- nil, nil, 216, nil, 218, nil, 229, 240, 227, 233,
284
- 250, 253, 265, -18, 267, 272, 240, nil, nil, nil,
425
+ 1, 164, 158, 990, 16, 177, nil, 352, 163, nil,
426
+ 367, 984, 1017, 1023, 440, 1011, 175, 177, 172, -8,
427
+ 8, 94, nil, 162, 165, nil, 312, 121, 34, nil,
428
+ 194, 423, nil, nil, 201, nil, nil, nil, nil, nil,
429
+ nil, nil, nil, 194, nil, 195, nil, 212, 222, nil,
430
+ nil, nil, nil, nil, nil, 808, 817, 217, nil, 228,
431
+ 244, 248, nil, 229, 241, 243, 263, 274, 276, 223,
432
+ 277, 290, 264, 293, 291, nil, nil, nil, 300, nil,
285
433
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
286
- nil, nil, nil, nil, 274, nil, 294, 35, 299, 299,
287
- nil, 309, nil, 310, nil, 311, 313, nil, 455, nil,
288
- 274, 495, 310, 35, 7, 319, 320, 329, 330, nil,
289
- nil, nil, 435, 325, nil, nil, nil, 425, nil, 330,
290
- 318, 322, 350, 353, 360, nil, 369, 525, 535, 545,
291
- 370, 379, 465, 475, 380, nil, 248, nil, 396, 290,
292
- nil, 149, 197, 181, 165, 213, nil, nil, 390, nil,
293
- 505, 394, 404, 404, 395, nil, nil, 399, 398, 14,
294
- 542, 485, 541, 445, -5, 355, -11, nil, nil, nil,
295
- 315, 385, nil, nil, 515, nil, nil, 395, 405, 415,
296
- 0, 12, nil, 40, nil, nil, nil, nil, nil, nil,
297
- nil, nil, nil, nil, nil, 258, nil, nil, 335, nil,
298
- nil, 345, nil, nil, nil, 38, 26, 540, nil, nil,
299
- nil, nil, nil, 63, 365, 375, nil, 46, nil, 226,
300
- nil, nil, nil, nil, nil, 79, 70, 100, nil, 305,
301
- 65, nil, nil, 109, nil, nil, 42, 109, nil, nil,
302
- nil, 103, nil, nil, nil, nil, nil, 109, 129, 108,
303
- 120, 154, nil, 146, 147, 98, 70, nil, nil, nil,
304
- 153, 154, 160, 165, nil, nil ]
434
+ nil, nil, nil, nil, nil, nil, nil, nil, 298, nil,
435
+ nil, nil, nil, nil, 308, nil, 292, 300, 324, -5,
436
+ 324, 328, nil, 337, nil, 338, nil, 339, 340, nil,
437
+ 561, nil, 593, 625, 337, 338, 339, 340, 341, 342,
438
+ nil, nil, nil, nil, 776, 156, 785, nil, 337, nil,
439
+ nil, 315, 313, 347, 355, nil, 350, nil, 352, 849,
440
+ 872, 904, 366, 913, 936, 367, 977, nil, nil, nil,
441
+ 120, 77, -9, 375, nil, 375, 470, nil, 398, 544,
442
+ 493, 527, 510, nil, nil, 370, nil, 570, 367, 376,
443
+ 89, nil, 356, nil, nil, 352, 348, 206, -8, 51,
444
+ 78, 616, 365, 648, 395, nil, nil, nil, 657, nil,
445
+ nil, 680, nil, nil, nil, nil, nil, nil, 689, 712,
446
+ 721, 404, 404, nil, 416, nil, nil, nil, nil, nil,
447
+ nil, nil, nil, nil, nil, 1046, nil, nil, 744, nil,
448
+ nil, 753, nil, nil, nil, nil, nil, 413, 390, 207,
449
+ nil, nil, nil, nil, nil, nil, 1, 9, 164, 180,
450
+ nil, 2, -8, nil, 37, nil, nil, nil, nil, 41,
451
+ 23, 44, nil, 447, 235, nil, nil, 45, nil, nil,
452
+ 840, 163, 44, 60, 63, 881, nil, 250, nil, nil,
453
+ nil, nil, nil, 58, nil, 79, 69, 73, 94, 945,
454
+ 968, 87, 78, 115, 119, 292, 249, nil, 122, 128,
455
+ nil, nil, nil, nil, 134, 142, nil, nil, 142, 146,
456
+ nil, nil ]
305
457
 
306
458
  racc_action_default = [
307
- -141, -141, -101, -72, -141, -141, -1, -7, -141, -2,
308
- -72, -72, -72, -72, -141, -141, -141, -141, -3, -137,
309
- -141, -141, 256, -31, -24, -9, -44, -46, -54, -49,
310
- -50, -51, -52, -53, -57, -58, -141, -103, -73, -74,
311
- -75, -76, -101, -83, -101, -84, -101, -141, -141, -141,
312
- -141, -141, -141, -141, -141, -141, -141, -138, -110, -111,
313
- -112, -113, -114, -115, -116, -117, -118, -119, -120, -121,
314
- -122, -123, -124, -125, -141, -139, -141, -35, -141, -10,
315
- -12, -13, -15, -16, -18, -19, -20, -23, -141, -26,
316
- -141, -141, -141, -44, -46, -49, -51, -52, -53, -63,
317
- -70, -71, -141, -141, -48, -55, -56, -141, -102, -141,
318
- -105, -99, -81, -141, -141, -140, -141, -141, -141, -141,
319
- -141, -141, -141, -141, -141, -126, -141, -32, -141, -42,
320
- -8, -24, -24, -24, -24, -24, -25, -27, -141, -28,
321
- -141, -141, -59, -141, -61, -62, -104, -141, -105, -141,
322
- -85, -141, -85, -141, -141, -141, -101, -129, -130, -131,
323
- -141, -141, -134, -135, -141, -4, -5, -141, -141, -141,
324
- -141, -36, -38, -39, -41, -43, -11, -14, -64, -65,
325
- -66, -67, -68, -69, -17, -141, -21, -22, -141, -29,
326
- -45, -141, -47, -77, -106, -141, -141, -85, -87, -88,
327
- -89, -90, -91, -97, -141, -141, -100, -141, -82, -85,
328
- -127, -128, -132, -133, -136, -141, -141, -141, -34, -42,
329
- -42, -30, -60, -101, -78, -86, -141, -141, -95, -96,
330
- -79, -141, -6, -33, -37, -40, -107, -108, -141, -141,
331
- -141, -141, -80, -101, -101, -141, -141, -98, -109, -92,
332
- -141, -141, -101, -101, -93, -94 ]
459
+ -176, -176, -119, -77, -176, -176, -1, -7, -176, -2,
460
+ -77, -77, -77, -77, -77, -77, -176, -176, -176, -176,
461
+ -176, -176, -93, -176, -95, -3, -176, -176, -176, 312,
462
+ -31, -24, -9, -44, -56, -46, -47, -48, -49, -50,
463
+ -51, -52, -53, -54, -55, -62, -63, -176, -121, -78,
464
+ -79, -80, -81, -82, -83, -176, -176, -119, -92, -119,
465
+ -119, -119, -94, -176, -176, -176, -176, -176, -176, -176,
466
+ -176, -176, -176, -176, -119, -128, -129, -130, -131, -132,
467
+ -133, -134, -135, -136, -137, -138, -139, -140, -141, -142,
468
+ -143, -144, -145, -146, -147, -148, -149, -150, -151, -152,
469
+ -153, -154, -155, -168, -171, -172, -176, -176, -176, -34,
470
+ -176, -10, -12, -13, -15, -16, -18, -19, -20, -23,
471
+ -176, -26, -176, -176, -176, -46, -48, -49, -50, -55,
472
+ -68, -69, -75, -76, -176, -176, -176, -120, -176, -84,
473
+ -85, -123, -115, -90, -176, -96, -176, -175, -176, -176,
474
+ -176, -176, -176, -176, -176, -176, -176, -167, -156, -157,
475
+ -176, -176, -176, -176, -32, -176, -42, -8, -24, -24,
476
+ -24, -24, -24, -25, -27, -176, -28, -176, -176, -64,
477
+ -59, -58, -66, -67, -122, -176, -123, -176, -97, -176,
478
+ -97, -176, -176, -176, -119, -160, -161, -162, -176, -164,
479
+ -165, -176, -169, -170, -173, -174, -4, -5, -176, -176,
480
+ -176, -176, -36, -38, -39, -41, -43, -11, -14, -70,
481
+ -71, -72, -73, -74, -17, -176, -21, -22, -176, -29,
482
+ -45, -176, -57, -60, -61, -86, -124, -176, -176, -97,
483
+ -99, -100, -101, -102, -103, -104, -176, -113, -176, -176,
484
+ -116, -117, -176, -91, -176, -158, -159, -163, -166, -176,
485
+ -176, -176, -35, -42, -42, -30, -65, -119, -87, -98,
486
+ -176, -176, -176, -109, -111, -176, -88, -97, -6, -33,
487
+ -37, -40, -125, -126, -105, -176, -176, -176, -176, -176,
488
+ -176, -176, -176, -119, -119, -176, -176, -114, -176, -176,
489
+ -118, -89, -127, -106, -176, -176, -110, -112, -119, -119,
490
+ -107, -108 ]
333
491
 
334
492
  racc_goto_table = [
335
- 75, 25, 6, 78, 36, 44, 46, 47, 175, 138,
336
- 173, 144, 170, 145, 147, 196, 171, 207, 141, 143,
337
- 236, 110, 1, 111, 9, 112, 184, 186, 187, 104,
338
- 166, 38, 39, 40, 41, 114, 116, 42, 128, 177,
339
- 248, 249, 150, 165, 152, 226, 76, 23, 18, 254,
340
- 255, 235, 194, nil, nil, nil, nil, nil, nil, nil,
341
- nil, nil, 225, nil, nil, nil, nil, nil, nil, nil,
342
- nil, 216, nil, 215, 231, nil, nil, nil, nil, nil,
343
- nil, nil, 136, nil, 137, 139, nil, nil, nil, nil,
344
- nil, nil, nil, nil, nil, nil, 142, 142, 175, 175,
345
- 173, 173, 234, 154, 138, 146, 171, 222, nil, nil,
346
- 176, 157, 158, 159, nil, nil, 162, 163, nil, nil,
347
- nil, nil, nil, nil, nil, nil, nil, nil, 195, nil,
348
- nil, nil, nil, nil, 189, nil, nil, nil, nil, nil,
349
- nil, nil, nil, nil, nil, 206, nil, 208, nil, 210,
350
- nil, nil, nil, nil, 212, 213, 211, nil, 214, nil,
351
- nil, nil, 217, 137, nil, nil, nil, nil, nil, nil,
493
+ 32, 17, 110, 6, 103, 47, 175, 178, 17, 17,
494
+ 17, 17, 17, 17, 214, 182, 183, 59, 60, 61,
495
+ 204, 205, 216, 185, 121, 74, 212, 211, 238, 282,
496
+ 252, 165, 62, 141, 25, 142, 143, 144, 224, 226,
497
+ 227, 30, 207, 146, 148, 108, 237, 206, 139, 140,
498
+ 157, 9, 218, 1, 281, 302, 303, 232, 49, 50,
499
+ 51, 52, 53, 54, 57, 188, 190, 152, 236, 271,
500
+ 310, 311, 145, 250, nil, nil, nil, nil, nil, 269,
501
+ nil, nil, nil, nil, nil, nil, nil, 260, 259, nil,
352
502
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
353
- nil, nil, 221, nil, nil, 142, nil, nil, nil, nil,
354
- nil, nil, nil, nil, nil, nil, nil, nil, 228, 229,
355
- nil, nil, nil, nil, nil, 238, nil, nil, nil, nil,
503
+ nil, nil, nil, nil, 266, nil, nil, nil, nil, 175,
504
+ nil, 214, 214, 173, nil, 174, 176, 292, nil, 216,
505
+ 216, nil, nil, 212, 280, nil, nil, nil, nil, nil,
506
+ 285, nil, nil, nil, nil, 184, 203, nil, nil, 217,
507
+ nil, nil, 195, 196, 197, nil, 199, 200, 291, 202,
508
+ nil, nil, nil, nil, 304, 305, nil, nil, nil, 121,
509
+ nil, 121, 298, 299, nil, nil, nil, nil, nil, nil,
510
+ 229, nil, nil, nil, nil, nil, nil, nil, nil, nil,
511
+ nil, nil, nil, nil, 253, nil, 255, 251, nil, nil,
512
+ nil, 257, nil, nil, 258, 256, nil, nil, nil, nil,
513
+ nil, nil, 261, 174, nil, nil, nil, nil, nil, nil,
356
514
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
357
- nil, nil, nil, nil, 250, 251 ]
515
+ nil, 265, nil, nil, nil, nil, nil, nil, nil, nil,
516
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
517
+ nil, nil, nil, nil, nil, nil, 273, 274, nil, nil,
518
+ nil, nil, nil, nil, nil, nil, 121, nil, nil, nil,
519
+ nil, nil, nil, 284 ]
358
520
 
359
521
  racc_goto_check = [
360
- 46, 12, 2, 11, 48, 35, 35, 35, 17, 22,
361
- 15, 9, 24, 10, 34, 37, 13, 37, 27, 27,
362
- 47, 5, 1, 5, 3, 5, 18, 18, 18, 28,
363
- 9, 3, 3, 3, 3, 50, 50, 33, 23, 14,
364
- 47, 47, 36, 8, 38, 45, 7, 6, 4, 47,
365
- 47, 25, 34, nil, nil, nil, nil, nil, nil, nil,
366
- nil, nil, 37, nil, nil, nil, nil, nil, nil, nil,
367
- nil, 9, nil, 10, 37, nil, nil, nil, nil, nil,
368
- nil, nil, 12, nil, 12, 12, nil, nil, nil, nil,
369
- nil, nil, nil, nil, nil, nil, 12, 12, 17, 17,
370
- 15, 15, 24, 35, 22, 48, 13, 27, nil, nil,
371
- 11, 12, 12, 12, nil, nil, 12, 12, nil, nil,
372
- nil, nil, nil, nil, nil, nil, nil, nil, 46, nil,
373
- nil, nil, nil, nil, 12, nil, nil, nil, nil, nil,
374
- nil, nil, nil, nil, nil, 12, nil, 12, nil, 12,
375
- nil, nil, nil, nil, 12, 12, 2, nil, 12, nil,
522
+ 12, 30, 11, 2, 58, 55, 22, 29, 30, 30,
523
+ 30, 30, 30, 30, 15, 9, 10, 30, 30, 30,
524
+ 52, 52, 17, 39, 12, 30, 13, 24, 41, 53,
525
+ 41, 23, 43, 5, 4, 5, 5, 5, 18, 18,
526
+ 18, 6, 9, 57, 57, 7, 52, 8, 12, 12,
527
+ 5, 3, 14, 1, 25, 53, 53, 31, 3, 3,
528
+ 3, 3, 3, 3, 38, 40, 42, 30, 39, 51,
529
+ 53, 53, 43, 54, nil, nil, nil, nil, nil, 41,
530
+ nil, nil, nil, nil, nil, nil, nil, 9, 10, nil,
531
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
532
+ nil, nil, nil, nil, 29, nil, nil, nil, nil, 22,
533
+ nil, 15, 15, 12, nil, 12, 12, 41, nil, 17,
534
+ 17, nil, nil, 13, 24, nil, nil, nil, nil, nil,
535
+ 52, nil, nil, nil, nil, 55, 58, nil, nil, 11,
536
+ nil, nil, 12, 12, 12, nil, 12, 12, 29, 12,
537
+ nil, nil, nil, nil, 52, 52, nil, nil, nil, 12,
538
+ nil, 12, 29, 29, nil, nil, nil, nil, nil, nil,
539
+ 12, nil, nil, nil, nil, nil, nil, nil, nil, nil,
540
+ nil, nil, nil, nil, 12, nil, 12, 30, nil, nil,
541
+ nil, 12, nil, nil, 12, 2, nil, nil, nil, nil,
376
542
  nil, nil, 12, 12, nil, nil, nil, nil, nil, nil,
377
543
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
378
- nil, nil, 12, nil, nil, 12, nil, nil, nil, nil,
379
- nil, nil, nil, nil, nil, nil, nil, nil, 12, 12,
380
- nil, nil, nil, nil, nil, 46, nil, nil, nil, nil,
544
+ nil, 12, nil, nil, nil, nil, nil, nil, nil, nil,
381
545
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
382
- nil, nil, nil, nil, 46, 46 ]
546
+ nil, nil, nil, nil, nil, nil, 30, 30, nil, nil,
547
+ nil, nil, nil, nil, nil, nil, 12, nil, nil, nil,
548
+ nil, nil, nil, 12 ]
383
549
 
384
550
  racc_goto_pointer = [
385
- nil, 22, 0, 21, 44, -21, 40, 23, -83, -96,
386
- -94, -21, -6, -113, -93, -119, nil, -121, -107, nil,
387
- nil, nil, -81, -39, -117, -169, nil, -84, 1, nil,
388
- nil, nil, nil, 23, -96, -10, -69, -135, -68, nil,
389
- nil, nil, nil, nil, nil, -158, -21, -203, -4, nil,
390
- -13 ]
551
+ nil, 53, 1, 48, 30, -24, 34, 15, -116, -121,
552
+ -120, -29, -7, -140, -117, -152, nil, -144, -132, nil,
553
+ nil, nil, -116, -78, -139, -210, nil, nil, nil, -127,
554
+ -2, -123, nil, nil, nil, nil, nil, nil, 46, -118,
555
+ -77, -160, -77, 9, nil, nil, nil, nil, nil, nil,
556
+ nil, -178, -141, -238, -116, -3, nil, -21, -24, nil ]
391
557
 
392
558
  racc_goto_default = [
393
- nil, nil, 237, nil, nil, 7, nil, nil, nil, 34,
394
- 35, nil, 89, 79, 80, 81, 82, 83, 84, 85,
395
- 86, 87, 92, nil, nil, 172, 174, nil, nil, 10,
396
- 11, 12, 13, nil, nil, nil, nil, nil, nil, 197,
397
- 198, 199, 200, 201, 202, nil, nil, nil, nil, 148,
398
- nil ]
559
+ nil, nil, 283, nil, nil, 7, nil, nil, nil, 45,
560
+ 46, nil, 179, 111, 112, 113, 114, 115, 116, 117,
561
+ 118, 119, 124, nil, nil, 213, 215, 33, 34, nil,
562
+ 43, nil, 10, 11, 12, 13, 14, 15, nil, nil,
563
+ nil, nil, nil, 22, 239, 240, 241, 242, 243, 244,
564
+ 245, nil, 105, nil, nil, nil, 186, nil, nil, 104 ]
399
565
 
400
566
  racc_reduce_table = [
401
567
  0, 0, :racc_error,
402
- 2, 54, :_reduce_1,
403
- 2, 54, :_reduce_2,
404
- 2, 54, :_reduce_3,
405
- 5, 55, :_reduce_4,
406
- 1, 61, :_reduce_none,
407
- 3, 61, :_reduce_6,
408
- 0, 59, :_reduce_7,
409
- 3, 59, :_reduce_8,
410
- 1, 59, :_reduce_9,
411
- 1, 64, :_reduce_10,
412
- 3, 64, :_reduce_11,
413
- 1, 64, :_reduce_12,
414
- 1, 67, :_reduce_13,
415
- 3, 67, :_reduce_14,
416
- 1, 67, :_reduce_15,
417
- 1, 69, :_reduce_16,
418
- 3, 69, :_reduce_17,
419
- 1, 69, :_reduce_18,
420
- 1, 71, :_reduce_19,
421
- 1, 71, :_reduce_20,
422
- 3, 71, :_reduce_21,
423
- 3, 71, :_reduce_22,
424
- 1, 71, :_reduce_23,
425
- 0, 74, :_reduce_24,
426
- 2, 74, :_reduce_25,
427
- 1, 66, :_reduce_26,
428
- 2, 68, :_reduce_27,
429
- 2, 70, :_reduce_28,
430
- 3, 72, :_reduce_29,
431
- 4, 73, :_reduce_30,
432
- 0, 60, :_reduce_31,
433
- 2, 60, :_reduce_32,
434
- 5, 60, :_reduce_33,
435
- 3, 76, :_reduce_34,
436
- 0, 76, :_reduce_35,
437
- 1, 77, :_reduce_36,
438
- 3, 77, :_reduce_37,
439
- 1, 77, :_reduce_38,
440
- 1, 78, :_reduce_39,
441
- 3, 78, :_reduce_40,
442
- 1, 78, :_reduce_41,
443
- 0, 79, :_reduce_42,
444
- 1, 79, :_reduce_43,
445
- 1, 62, :_reduce_44,
446
- 4, 62, :_reduce_45,
447
- 1, 62, :_reduce_46,
448
- 4, 62, :_reduce_47,
449
- 2, 62, :_reduce_48,
450
- 1, 62, :_reduce_49,
451
- 1, 62, :_reduce_50,
452
- 1, 62, :_reduce_51,
453
- 1, 62, :_reduce_52,
454
- 1, 62, :_reduce_53,
455
- 0, 81, :_reduce_54,
568
+ 2, 60, :_reduce_1,
569
+ 2, 60, :_reduce_2,
570
+ 2, 60, :_reduce_3,
571
+ 5, 61, :_reduce_4,
572
+ 1, 67, :_reduce_none,
573
+ 3, 67, :_reduce_6,
574
+ 0, 65, :_reduce_7,
575
+ 3, 65, :_reduce_8,
576
+ 1, 65, :_reduce_9,
577
+ 1, 70, :_reduce_10,
578
+ 3, 70, :_reduce_11,
579
+ 1, 70, :_reduce_12,
580
+ 1, 73, :_reduce_13,
581
+ 3, 73, :_reduce_14,
582
+ 1, 73, :_reduce_15,
583
+ 1, 75, :_reduce_16,
584
+ 3, 75, :_reduce_17,
585
+ 1, 75, :_reduce_18,
586
+ 1, 77, :_reduce_19,
587
+ 1, 77, :_reduce_20,
588
+ 3, 77, :_reduce_21,
589
+ 3, 77, :_reduce_22,
590
+ 1, 77, :_reduce_23,
591
+ 0, 80, :_reduce_24,
592
+ 2, 80, :_reduce_25,
593
+ 1, 72, :_reduce_26,
594
+ 2, 74, :_reduce_27,
595
+ 2, 76, :_reduce_28,
596
+ 3, 78, :_reduce_29,
597
+ 4, 79, :_reduce_30,
598
+ 0, 66, :_reduce_31,
599
+ 2, 66, :_reduce_32,
600
+ 5, 66, :_reduce_33,
601
+ 0, 82, :_reduce_34,
602
+ 3, 82, :_reduce_35,
603
+ 1, 83, :_reduce_36,
604
+ 3, 83, :_reduce_37,
605
+ 1, 83, :_reduce_38,
606
+ 1, 84, :_reduce_39,
607
+ 3, 84, :_reduce_40,
608
+ 1, 84, :_reduce_41,
609
+ 0, 85, :_reduce_42,
610
+ 1, 85, :_reduce_43,
611
+ 1, 68, :_reduce_44,
612
+ 4, 68, :_reduce_45,
613
+ 1, 68, :_reduce_46,
614
+ 1, 68, :_reduce_47,
615
+ 1, 68, :_reduce_48,
616
+ 1, 68, :_reduce_49,
617
+ 1, 68, :_reduce_50,
618
+ 1, 68, :_reduce_51,
619
+ 1, 68, :_reduce_52,
620
+ 1, 68, :_reduce_53,
621
+ 1, 87, :_reduce_54,
622
+ 1, 87, :_reduce_55,
623
+ 1, 86, :_reduce_none,
624
+ 4, 86, :_reduce_57,
625
+ 3, 86, :_reduce_58,
626
+ 0, 90, :_reduce_59,
627
+ 1, 90, :_reduce_none,
628
+ 1, 90, :_reduce_none,
629
+ 1, 71, :_reduce_none,
630
+ 1, 71, :_reduce_63,
631
+ 1, 88, :_reduce_64,
632
+ 3, 88, :_reduce_65,
633
+ 3, 69, :_reduce_66,
634
+ 3, 69, :_reduce_67,
456
635
  1, 81, :_reduce_none,
457
636
  1, 81, :_reduce_none,
458
- 1, 65, :_reduce_none,
459
- 1, 65, :_reduce_58,
460
- 1, 80, :_reduce_59,
461
- 3, 80, :_reduce_60,
462
- 3, 63, :_reduce_61,
463
- 3, 63, :_reduce_62,
464
- 1, 75, :_reduce_none,
465
- 1, 75, :_reduce_none,
466
- 1, 75, :_reduce_none,
467
- 1, 75, :_reduce_66,
468
- 1, 75, :_reduce_67,
469
- 1, 75, :_reduce_68,
470
- 1, 75, :_reduce_69,
471
- 1, 75, :_reduce_70,
472
- 1, 75, :_reduce_71,
473
- 0, 56, :_reduce_72,
474
- 2, 56, :_reduce_73,
475
- 2, 56, :_reduce_74,
476
- 2, 56, :_reduce_75,
477
- 2, 56, :_reduce_76,
478
- 5, 82, :_reduce_77,
479
- 6, 83, :_reduce_78,
480
- 6, 84, :_reduce_79,
481
- 7, 85, :_reduce_80,
482
- 0, 91, :_reduce_81,
483
- 2, 91, :_reduce_82,
484
- 1, 86, :_reduce_83,
485
- 1, 88, :_reduce_84,
486
- 0, 90, :_reduce_85,
487
- 2, 90, :_reduce_86,
488
- 1, 92, :_reduce_87,
489
- 1, 92, :_reduce_88,
490
- 1, 92, :_reduce_89,
491
- 1, 92, :_reduce_90,
492
- 1, 92, :_reduce_91,
493
- 5, 93, :_reduce_92,
494
- 7, 94, :_reduce_93,
495
- 7, 95, :_reduce_94,
496
- 2, 96, :_reduce_95,
497
- 2, 97, :_reduce_96,
498
- 0, 98, :_reduce_97,
499
- 3, 98, :_reduce_98,
500
- 0, 89, :_reduce_99,
501
- 2, 89, :_reduce_100,
502
- 0, 58, :_reduce_101,
503
- 3, 58, :_reduce_102,
504
- 1, 101, :_reduce_103,
505
- 3, 101, :_reduce_104,
506
- 0, 87, :_reduce_105,
507
- 2, 87, :_reduce_106,
508
- 4, 102, :_reduce_107,
509
- 1, 100, :_reduce_108,
510
- 3, 100, :_reduce_109,
511
- 1, 99, :_reduce_none,
512
- 1, 99, :_reduce_none,
513
- 1, 99, :_reduce_none,
514
- 1, 99, :_reduce_113,
515
- 1, 99, :_reduce_114,
516
- 1, 99, :_reduce_115,
517
- 1, 99, :_reduce_116,
518
- 1, 99, :_reduce_117,
519
- 1, 99, :_reduce_118,
520
- 1, 99, :_reduce_119,
521
- 1, 99, :_reduce_none,
522
- 1, 99, :_reduce_none,
523
- 1, 99, :_reduce_122,
524
- 1, 99, :_reduce_123,
525
- 1, 99, :_reduce_124,
526
- 1, 99, :_reduce_125,
527
- 2, 99, :_reduce_126,
528
- 5, 57, :_reduce_127,
529
- 5, 57, :_reduce_128,
530
- 4, 57, :_reduce_129,
531
- 4, 57, :_reduce_130,
532
- 4, 57, :_reduce_131,
533
- 5, 57, :_reduce_132,
534
- 5, 57, :_reduce_133,
535
- 4, 57, :_reduce_134,
536
- 4, 57, :_reduce_135,
537
- 5, 57, :_reduce_136,
538
- 1, 57, :_reduce_137,
539
- 2, 57, :_reduce_138,
540
- 2, 57, :_reduce_139,
541
- 1, 103, :_reduce_140 ]
542
-
543
- racc_reduce_n = 141
544
-
545
- racc_shift_n = 256
637
+ 1, 81, :_reduce_none,
638
+ 1, 81, :_reduce_none,
639
+ 1, 81, :_reduce_none,
640
+ 1, 81, :_reduce_none,
641
+ 1, 81, :_reduce_none,
642
+ 1, 81, :_reduce_none,
643
+ 1, 81, :_reduce_none,
644
+ 0, 62, :_reduce_77,
645
+ 2, 62, :_reduce_78,
646
+ 2, 62, :_reduce_79,
647
+ 2, 62, :_reduce_80,
648
+ 2, 62, :_reduce_81,
649
+ 2, 62, :_reduce_82,
650
+ 2, 62, :_reduce_83,
651
+ 3, 96, :_reduce_84,
652
+ 3, 95, :_reduce_85,
653
+ 5, 91, :_reduce_86,
654
+ 6, 92, :_reduce_87,
655
+ 6, 93, :_reduce_88,
656
+ 8, 94, :_reduce_89,
657
+ 0, 101, :_reduce_90,
658
+ 2, 101, :_reduce_91,
659
+ 1, 97, :_reduce_none,
660
+ 1, 89, :_reduce_none,
661
+ 2, 89, :_reduce_94,
662
+ 1, 102, :_reduce_95,
663
+ 3, 102, :_reduce_96,
664
+ 0, 100, :_reduce_97,
665
+ 2, 100, :_reduce_98,
666
+ 1, 103, :_reduce_none,
667
+ 1, 103, :_reduce_none,
668
+ 1, 103, :_reduce_none,
669
+ 1, 103, :_reduce_none,
670
+ 1, 103, :_reduce_none,
671
+ 1, 103, :_reduce_none,
672
+ 3, 109, :_reduce_105,
673
+ 5, 104, :_reduce_106,
674
+ 7, 105, :_reduce_107,
675
+ 7, 106, :_reduce_108,
676
+ 2, 107, :_reduce_109,
677
+ 5, 107, :_reduce_110,
678
+ 2, 108, :_reduce_111,
679
+ 5, 108, :_reduce_112,
680
+ 0, 110, :_reduce_113,
681
+ 3, 110, :_reduce_114,
682
+ 0, 99, :_reduce_115,
683
+ 2, 99, :_reduce_116,
684
+ 1, 113, :_reduce_117,
685
+ 4, 113, :_reduce_118,
686
+ 0, 64, :_reduce_119,
687
+ 3, 64, :_reduce_120,
688
+ 1, 114, :_reduce_121,
689
+ 3, 114, :_reduce_122,
690
+ 0, 98, :_reduce_123,
691
+ 2, 98, :_reduce_124,
692
+ 4, 115, :_reduce_125,
693
+ 1, 112, :_reduce_126,
694
+ 3, 112, :_reduce_127,
695
+ 1, 111, :_reduce_none,
696
+ 1, 111, :_reduce_none,
697
+ 1, 111, :_reduce_none,
698
+ 1, 111, :_reduce_none,
699
+ 1, 111, :_reduce_none,
700
+ 1, 111, :_reduce_none,
701
+ 1, 111, :_reduce_none,
702
+ 1, 111, :_reduce_none,
703
+ 1, 111, :_reduce_none,
704
+ 1, 111, :_reduce_none,
705
+ 1, 111, :_reduce_none,
706
+ 1, 111, :_reduce_none,
707
+ 1, 111, :_reduce_none,
708
+ 1, 111, :_reduce_none,
709
+ 1, 111, :_reduce_none,
710
+ 1, 111, :_reduce_none,
711
+ 1, 111, :_reduce_none,
712
+ 1, 111, :_reduce_none,
713
+ 1, 111, :_reduce_none,
714
+ 1, 111, :_reduce_none,
715
+ 1, 111, :_reduce_none,
716
+ 1, 111, :_reduce_none,
717
+ 1, 111, :_reduce_none,
718
+ 1, 111, :_reduce_none,
719
+ 1, 111, :_reduce_none,
720
+ 1, 111, :_reduce_153,
721
+ 1, 111, :_reduce_154,
722
+ 1, 111, :_reduce_155,
723
+ 2, 111, :_reduce_156,
724
+ 2, 111, :_reduce_157,
725
+ 5, 63, :_reduce_158,
726
+ 5, 63, :_reduce_159,
727
+ 4, 63, :_reduce_160,
728
+ 4, 63, :_reduce_161,
729
+ 4, 63, :_reduce_162,
730
+ 5, 63, :_reduce_163,
731
+ 4, 63, :_reduce_164,
732
+ 4, 63, :_reduce_165,
733
+ 5, 63, :_reduce_166,
734
+ 3, 63, :_reduce_167,
735
+ 2, 63, :_reduce_168,
736
+ 4, 63, :_reduce_169,
737
+ 3, 117, :_reduce_170,
738
+ 1, 117, :_reduce_171,
739
+ 1, 118, :_reduce_172,
740
+ 3, 118, :_reduce_173,
741
+ 3, 118, :_reduce_174,
742
+ 1, 116, :_reduce_175 ]
743
+
744
+ racc_reduce_n = 176
745
+
746
+ racc_shift_n = 312
546
747
 
547
748
  racc_token_table = {
548
749
  false => 0,
@@ -560,46 +761,52 @@ racc_token_table = {
560
761
  :COLON => 12,
561
762
  :LBRACE => 13,
562
763
  :RBRACE => 14,
563
- :INTERFACE_NAME => 15,
564
- :LT => 16,
565
- :GT => 17,
566
- :MODULE_NAME => 18,
567
- :CLASS_IDENT => 19,
568
- :ANY => 20,
569
- :TVAR => 21,
570
- :CLASS => 22,
571
- :MODULE => 23,
572
- :INSTANCE => 24,
573
- :CONSTRUCTOR => 25,
574
- :NOCONSTRUCTOR => 26,
575
- :BAR => 27,
576
- :IDENT => 28,
577
- :BLOCK => 29,
578
- :INCLUDE => 30,
579
- :INTERFACE => 31,
580
- :END => 32,
581
- :EXTENSION => 33,
582
- :DEF => 34,
583
- :SELF => 35,
584
- :DOT => 36,
585
- :SELFQ => 37,
586
- :EXTEND => 38,
587
- :LTCOLON => 39,
588
- :PLUS => 40,
589
- :OPERATOR => 41,
590
- :METHOD_NAME => 42,
591
- :AT_TYPE => 43,
592
- :VAR => 44,
593
- :METHOD => 45,
594
- :RETURN => 46,
595
- :CONST => 47,
596
- :CONST_PATH => 48,
597
- :IVAR => 49,
598
- :IVAR_NAME => 50,
599
- :AT_IMPLEMENTS => 51,
600
- :AT_DYNAMIC => 52 }
601
-
602
- racc_nt_base = 53
764
+ :LT => 15,
765
+ :GT => 16,
766
+ :ANY => 17,
767
+ :TVAR => 18,
768
+ :CLASS => 19,
769
+ :MODULE => 20,
770
+ :INSTANCE => 21,
771
+ :SELF => 22,
772
+ :VOID => 23,
773
+ :NIL => 24,
774
+ :INTERFACE_NAME => 25,
775
+ :DOT => 26,
776
+ :CONSTRUCTOR => 27,
777
+ :NOCONSTRUCTOR => 28,
778
+ :BAR => 29,
779
+ :IDENT => 30,
780
+ :MODULE_NAME => 31,
781
+ :BLOCK => 32,
782
+ :INCLUDE => 33,
783
+ :GVAR => 34,
784
+ :INTERFACE => 35,
785
+ :END => 36,
786
+ :EXTENSION => 37,
787
+ :UIDENT => 38,
788
+ :COLON2 => 39,
789
+ :IVAR_NAME => 40,
790
+ :DEF => 41,
791
+ :SELFQ => 42,
792
+ :EXTEND => 43,
793
+ :LTCOLON => 44,
794
+ :PLUS => 45,
795
+ :OPERATOR => 46,
796
+ :METHOD_NAME => 47,
797
+ :BREAK => 48,
798
+ :PERCENT => 49,
799
+ :MINUS => 50,
800
+ :METHOD => 51,
801
+ :AT_TYPE => 52,
802
+ :VAR => 53,
803
+ :RETURN => 54,
804
+ :CONST => 55,
805
+ :IVAR => 56,
806
+ :AT_IMPLEMENTS => 57,
807
+ :AT_DYNAMIC => 58 }
808
+
809
+ racc_nt_base = 59
603
810
 
604
811
  racc_use_result_var = true
605
812
 
@@ -635,42 +842,48 @@ Racc_token_to_s_table = [
635
842
  "COLON",
636
843
  "LBRACE",
637
844
  "RBRACE",
638
- "INTERFACE_NAME",
639
845
  "LT",
640
846
  "GT",
641
- "MODULE_NAME",
642
- "CLASS_IDENT",
643
847
  "ANY",
644
848
  "TVAR",
645
849
  "CLASS",
646
850
  "MODULE",
647
851
  "INSTANCE",
852
+ "SELF",
853
+ "VOID",
854
+ "NIL",
855
+ "INTERFACE_NAME",
856
+ "DOT",
648
857
  "CONSTRUCTOR",
649
858
  "NOCONSTRUCTOR",
650
859
  "BAR",
651
860
  "IDENT",
861
+ "MODULE_NAME",
652
862
  "BLOCK",
653
863
  "INCLUDE",
864
+ "GVAR",
654
865
  "INTERFACE",
655
866
  "END",
656
867
  "EXTENSION",
868
+ "UIDENT",
869
+ "COLON2",
870
+ "IVAR_NAME",
657
871
  "DEF",
658
- "SELF",
659
- "DOT",
660
872
  "SELFQ",
661
873
  "EXTEND",
662
874
  "LTCOLON",
663
875
  "PLUS",
664
876
  "OPERATOR",
665
877
  "METHOD_NAME",
878
+ "BREAK",
879
+ "PERCENT",
880
+ "MINUS",
881
+ "METHOD",
666
882
  "AT_TYPE",
667
883
  "VAR",
668
- "METHOD",
669
884
  "RETURN",
670
885
  "CONST",
671
- "CONST_PATH",
672
886
  "IVAR",
673
- "IVAR_NAME",
674
887
  "AT_IMPLEMENTS",
675
888
  "AT_DYNAMIC",
676
889
  "$start",
@@ -700,30 +913,39 @@ Racc_token_to_s_table = [
700
913
  "block_params0",
701
914
  "block_params1",
702
915
  "block_params2",
916
+ "type_name",
917
+ "instance_type_name",
703
918
  "type_seq",
919
+ "module_name",
704
920
  "constructor",
705
921
  "interface",
706
922
  "class_decl",
707
923
  "module_decl",
708
924
  "extension_decl",
925
+ "const_decl",
926
+ "gvar_decl",
709
927
  "interface_name",
710
- "method_decls",
711
- "class_name",
928
+ "interface_members",
712
929
  "super_opt",
713
930
  "class_members",
714
931
  "self_type_opt",
932
+ "module_name0",
715
933
  "class_member",
716
934
  "instance_method_member",
717
- "class_method_member",
718
- "class_instance_method_member",
935
+ "module_method_member",
936
+ "module_instance_method_member",
719
937
  "include_member",
720
938
  "extend_member",
939
+ "ivar_member",
721
940
  "constructor_method",
722
941
  "method_name",
723
942
  "method_type_union",
943
+ "super_class",
724
944
  "type_param_seq",
725
- "method_decl",
726
- "subject" ]
945
+ "interface_method",
946
+ "subject",
947
+ "dynamic_names",
948
+ "dynamic_name" ]
727
949
 
728
950
  Racc_debug_parser = false
729
951
 
@@ -731,922 +953,1200 @@ Racc_debug_parser = false
731
953
 
732
954
  # reduce 0 omitted
733
955
 
734
- module_eval(<<'.,.,', 'parser.y', 4)
956
+ module_eval(<<'.,.,', 'parser.y', 6)
735
957
  def _reduce_1(val, _values, result)
736
958
  result = val[1]
737
959
  result
738
960
  end
739
961
  .,.,
740
962
 
741
- module_eval(<<'.,.,', 'parser.y', 5)
963
+ module_eval(<<'.,.,', 'parser.y', 7)
742
964
  def _reduce_2(val, _values, result)
743
965
  result = val[1]
744
966
  result
745
967
  end
746
968
  .,.,
747
969
 
748
- module_eval(<<'.,.,', 'parser.y', 6)
970
+ module_eval(<<'.,.,', 'parser.y', 8)
749
971
  def _reduce_3(val, _values, result)
750
972
  result = val[1]
751
973
  result
752
974
  end
753
975
  .,.,
754
976
 
755
- module_eval(<<'.,.,', 'parser.y', 9)
977
+ module_eval(<<'.,.,', 'parser.y', 12)
756
978
  def _reduce_4(val, _values, result)
757
- result = Interface::MethodType.new(type_params: val[0], params: val[1], block: val[2], return_type: val[4])
979
+ result = AST::MethodType.new(location: AST::Location.concat(*val.compact.map(&:location)),
980
+ type_params: val[0],
981
+ params: val[1]&.value,
982
+ block: val[2],
983
+ return_type: val[4])
984
+
758
985
  result
759
986
  end
760
987
  .,.,
761
988
 
762
989
  # reduce 5 omitted
763
990
 
764
- module_eval(<<'.,.,', 'parser.y', 12)
991
+ module_eval(<<'.,.,', 'parser.y', 20)
765
992
  def _reduce_6(val, _values, result)
766
- result = Types::Union.new(types: val[1])
993
+ result = AST::Types::Union.build(location: val[0].location + val[2].location,
994
+ types: val[1])
767
995
  result
768
996
  end
769
997
  .,.,
770
998
 
771
- module_eval(<<'.,.,', 'parser.y', 14)
999
+ module_eval(<<'.,.,', 'parser.y', 23)
772
1000
  def _reduce_7(val, _values, result)
773
- result = Interface::Params.empty
1001
+ result = nil
774
1002
  result
775
1003
  end
776
1004
  .,.,
777
1005
 
778
- module_eval(<<'.,.,', 'parser.y', 15)
1006
+ module_eval(<<'.,.,', 'parser.y', 24)
779
1007
  def _reduce_8(val, _values, result)
780
- result = val[1]
1008
+ result = LocatedValue.new(location: val[0].location + val[2].location,
1009
+ value: val[1])
781
1010
  result
782
1011
  end
783
1012
  .,.,
784
1013
 
785
- module_eval(<<'.,.,', 'parser.y', 16)
1014
+ module_eval(<<'.,.,', 'parser.y', 26)
786
1015
  def _reduce_9(val, _values, result)
787
- result = Interface::Params.empty.with(required: [val[0]])
1016
+ result = LocatedValue.new(location: val[0].location,
1017
+ value: AST::MethodType::Params::Required.new(location: val[0].location, type: val[0]))
788
1018
  result
789
1019
  end
790
1020
  .,.,
791
1021
 
792
- module_eval(<<'.,.,', 'parser.y', 18)
1022
+ module_eval(<<'.,.,', 'parser.y', 29)
793
1023
  def _reduce_10(val, _values, result)
794
- result = Interface::Params.empty.with(required: [val[0]])
1024
+ result = AST::MethodType::Params::Required.new(location: val[0].location, type: val[0])
795
1025
  result
796
1026
  end
797
1027
  .,.,
798
1028
 
799
- module_eval(<<'.,.,', 'parser.y', 19)
1029
+ module_eval(<<'.,.,', 'parser.y', 31)
800
1030
  def _reduce_11(val, _values, result)
801
- result = val[2].with(required: [val[0]] + val[2].required)
1031
+ location = val[0].location
1032
+ result = AST::MethodType::Params::Required.new(location: location,
1033
+ type: val[0],
1034
+ next_params: val[2])
1035
+
802
1036
  result
803
1037
  end
804
1038
  .,.,
805
1039
 
806
- module_eval(<<'.,.,', 'parser.y', 20)
1040
+ module_eval(<<'.,.,', 'parser.y', 36)
807
1041
  def _reduce_12(val, _values, result)
808
1042
  result = val[0]
809
1043
  result
810
1044
  end
811
1045
  .,.,
812
1046
 
813
- module_eval(<<'.,.,', 'parser.y', 22)
1047
+ module_eval(<<'.,.,', 'parser.y', 38)
814
1048
  def _reduce_13(val, _values, result)
815
- result = Interface::Params.empty.with(optional: [val[0]])
1049
+ result = AST::MethodType::Params::Optional.new(location: val[0].first, type: val[0].last)
816
1050
  result
817
1051
  end
818
1052
  .,.,
819
1053
 
820
- module_eval(<<'.,.,', 'parser.y', 23)
1054
+ module_eval(<<'.,.,', 'parser.y', 40)
821
1055
  def _reduce_14(val, _values, result)
822
- result = val[2].with(optional: [val[0]] + val[2].optional)
1056
+ location = val[0].first
1057
+ result = AST::MethodType::Params::Optional.new(type: val[0].last, location: location, next_params: val[2])
1058
+
823
1059
  result
824
1060
  end
825
1061
  .,.,
826
1062
 
827
- module_eval(<<'.,.,', 'parser.y', 24)
1063
+ module_eval(<<'.,.,', 'parser.y', 43)
828
1064
  def _reduce_15(val, _values, result)
829
1065
  result = val[0]
830
1066
  result
831
1067
  end
832
1068
  .,.,
833
1069
 
834
- module_eval(<<'.,.,', 'parser.y', 26)
1070
+ module_eval(<<'.,.,', 'parser.y', 45)
835
1071
  def _reduce_16(val, _values, result)
836
- result = Interface::Params.empty.with(rest: val[0])
1072
+ result = AST::MethodType::Params::Rest.new(location: val[0].first, type: val[0].last)
837
1073
  result
838
1074
  end
839
1075
  .,.,
840
1076
 
841
- module_eval(<<'.,.,', 'parser.y', 27)
1077
+ module_eval(<<'.,.,', 'parser.y', 47)
842
1078
  def _reduce_17(val, _values, result)
843
- result = val[2].with(rest: val[0])
1079
+ loc = val[0].first
1080
+ result = AST::MethodType::Params::Rest.new(location: loc, type: val[0].last, next_params: val[2])
1081
+
844
1082
  result
845
1083
  end
846
1084
  .,.,
847
1085
 
848
- module_eval(<<'.,.,', 'parser.y', 28)
1086
+ module_eval(<<'.,.,', 'parser.y', 50)
849
1087
  def _reduce_18(val, _values, result)
850
1088
  result = val[0]
851
1089
  result
852
1090
  end
853
1091
  .,.,
854
1092
 
855
- module_eval(<<'.,.,', 'parser.y', 30)
1093
+ module_eval(<<'.,.,', 'parser.y', 53)
856
1094
  def _reduce_19(val, _values, result)
857
- result = Interface::Params.empty.with(required_keywords: val[0])
1095
+ location, name, type = val[0]
1096
+ result = AST::MethodType::Params::RequiredKeyword.new(location: location, name: name, type: type)
1097
+
858
1098
  result
859
1099
  end
860
1100
  .,.,
861
1101
 
862
- module_eval(<<'.,.,', 'parser.y', 31)
1102
+ module_eval(<<'.,.,', 'parser.y', 57)
863
1103
  def _reduce_20(val, _values, result)
864
- result = Interface::Params.empty.with(optional_keywords: val[0])
1104
+ location, name, type = val[0]
1105
+ result = AST::MethodType::Params::OptionalKeyword.new(location: location, name: name, type: type)
1106
+
865
1107
  result
866
1108
  end
867
1109
  .,.,
868
1110
 
869
- module_eval(<<'.,.,', 'parser.y', 32)
1111
+ module_eval(<<'.,.,', 'parser.y', 61)
870
1112
  def _reduce_21(val, _values, result)
871
- result = val[2].with(required_keywords: val[2].required_keywords.merge(val[0]))
1113
+ location, name, type = val[0]
1114
+ result = AST::MethodType::Params::RequiredKeyword.new(location: location,
1115
+ name: name,
1116
+ type: type,
1117
+ next_params: val[2])
1118
+
872
1119
  result
873
1120
  end
874
1121
  .,.,
875
1122
 
876
- module_eval(<<'.,.,', 'parser.y', 33)
1123
+ module_eval(<<'.,.,', 'parser.y', 68)
877
1124
  def _reduce_22(val, _values, result)
878
- result = val[2].with(optional_keywords: val[2].optional_keywords.merge(val[0]))
1125
+ location, name, type = val[0]
1126
+ result = AST::MethodType::Params::OptionalKeyword.new(location: location,
1127
+ name: name,
1128
+ type: type,
1129
+ next_params: val[2])
1130
+
879
1131
  result
880
1132
  end
881
1133
  .,.,
882
1134
 
883
- module_eval(<<'.,.,', 'parser.y', 34)
1135
+ module_eval(<<'.,.,', 'parser.y', 74)
884
1136
  def _reduce_23(val, _values, result)
885
1137
  result = val[0]
886
1138
  result
887
1139
  end
888
1140
  .,.,
889
1141
 
890
- module_eval(<<'.,.,', 'parser.y', 36)
1142
+ module_eval(<<'.,.,', 'parser.y', 76)
891
1143
  def _reduce_24(val, _values, result)
892
- result = Interface::Params.empty
1144
+ result = nil
893
1145
  result
894
1146
  end
895
1147
  .,.,
896
1148
 
897
- module_eval(<<'.,.,', 'parser.y', 37)
1149
+ module_eval(<<'.,.,', 'parser.y', 78)
898
1150
  def _reduce_25(val, _values, result)
899
- result = Interface::Params.empty.with(rest_keywords: val[1])
1151
+ result = AST::MethodType::Params::RestKeyword.new(location: val[0].location + val[1].location,
1152
+ type: val[1])
1153
+
900
1154
  result
901
1155
  end
902
1156
  .,.,
903
1157
 
904
- module_eval(<<'.,.,', 'parser.y', 39)
1158
+ module_eval(<<'.,.,', 'parser.y', 82)
905
1159
  def _reduce_26(val, _values, result)
906
1160
  result = val[0]
907
1161
  result
908
1162
  end
909
1163
  .,.,
910
1164
 
911
- module_eval(<<'.,.,', 'parser.y', 40)
1165
+ module_eval(<<'.,.,', 'parser.y', 83)
912
1166
  def _reduce_27(val, _values, result)
913
- result = val[1]
1167
+ result = [val[0].location + val[1].location,
1168
+ val[1]]
914
1169
  result
915
1170
  end
916
1171
  .,.,
917
1172
 
918
- module_eval(<<'.,.,', 'parser.y', 41)
1173
+ module_eval(<<'.,.,', 'parser.y', 85)
919
1174
  def _reduce_28(val, _values, result)
920
- result = val[1]
1175
+ result = [val[0].location + val[1].location,
1176
+ val[1]]
921
1177
  result
922
1178
  end
923
1179
  .,.,
924
1180
 
925
- module_eval(<<'.,.,', 'parser.y', 42)
1181
+ module_eval(<<'.,.,', 'parser.y', 87)
926
1182
  def _reduce_29(val, _values, result)
927
- result = { val[0] => val[2] }
1183
+ result = [val[0].location + val[2].location,
1184
+ val[0].value,
1185
+ val[2]]
928
1186
  result
929
1187
  end
930
1188
  .,.,
931
1189
 
932
- module_eval(<<'.,.,', 'parser.y', 43)
1190
+ module_eval(<<'.,.,', 'parser.y', 90)
933
1191
  def _reduce_30(val, _values, result)
934
- result = { val[1] => val[3] }
1192
+ result = [val[0].location + val[3].location,
1193
+ val[1].value,
1194
+ val[3]]
935
1195
  result
936
1196
  end
937
1197
  .,.,
938
1198
 
939
- module_eval(<<'.,.,', 'parser.y', 45)
1199
+ module_eval(<<'.,.,', 'parser.y', 94)
940
1200
  def _reduce_31(val, _values, result)
941
1201
  result = nil
942
1202
  result
943
1203
  end
944
1204
  .,.,
945
1205
 
946
- module_eval(<<'.,.,', 'parser.y', 46)
1206
+ module_eval(<<'.,.,', 'parser.y', 96)
947
1207
  def _reduce_32(val, _values, result)
948
- result = Interface::Block.new(params: Interface::Params.empty.with(rest: Types::Any.new),
949
- return_type: Types::Any.new)
1208
+ result = AST::MethodType::Block.new(params: nil,
1209
+ return_type: nil,
1210
+ location: val[0].location + val[1].location)
1211
+
950
1212
  result
951
1213
  end
952
1214
  .,.,
953
1215
 
954
- module_eval(<<'.,.,', 'parser.y', 48)
1216
+ module_eval(<<'.,.,', 'parser.y', 101)
955
1217
  def _reduce_33(val, _values, result)
956
- result = Interface::Block.new(params: val[1], return_type: val[3])
1218
+ result = AST::MethodType::Block.new(params: val[1],
1219
+ return_type: val[3],
1220
+ location: val[0].location + val[4].location)
1221
+
957
1222
  result
958
1223
  end
959
1224
  .,.,
960
1225
 
961
- module_eval(<<'.,.,', 'parser.y', 50)
1226
+ module_eval(<<'.,.,', 'parser.y', 106)
962
1227
  def _reduce_34(val, _values, result)
963
- result = val[1]
1228
+ result = nil
964
1229
  result
965
1230
  end
966
1231
  .,.,
967
1232
 
968
- module_eval(<<'.,.,', 'parser.y', 51)
1233
+ module_eval(<<'.,.,', 'parser.y', 108)
969
1234
  def _reduce_35(val, _values, result)
970
- result = Interface::Params.empty.with(rest: Types::Any.new)
1235
+ result = val[1]
1236
+
971
1237
  result
972
1238
  end
973
1239
  .,.,
974
1240
 
975
- module_eval(<<'.,.,', 'parser.y', 53)
1241
+ module_eval(<<'.,.,', 'parser.y', 112)
976
1242
  def _reduce_36(val, _values, result)
977
- result = Interface::Params.empty.with(required: [val[0]])
1243
+ result = AST::MethodType::Params::Required.new(location: val[0].location,
1244
+ type: val[0])
1245
+
978
1246
  result
979
1247
  end
980
1248
  .,.,
981
1249
 
982
- module_eval(<<'.,.,', 'parser.y', 54)
1250
+ module_eval(<<'.,.,', 'parser.y', 116)
983
1251
  def _reduce_37(val, _values, result)
984
- result = val[2].with(required: [val[0]] + val[2].required)
1252
+ result = AST::MethodType::Params::Required.new(location: val[0].location,
1253
+ type: val[0],
1254
+ next_params: val[2])
1255
+
985
1256
  result
986
1257
  end
987
1258
  .,.,
988
1259
 
989
- module_eval(<<'.,.,', 'parser.y', 55)
1260
+ module_eval(<<'.,.,', 'parser.y', 120)
990
1261
  def _reduce_38(val, _values, result)
991
1262
  result = val[0]
992
1263
  result
993
1264
  end
994
1265
  .,.,
995
1266
 
996
- module_eval(<<'.,.,', 'parser.y', 57)
1267
+ module_eval(<<'.,.,', 'parser.y', 123)
997
1268
  def _reduce_39(val, _values, result)
998
- result = Interface::Params.empty.with(optional: [val[0]])
1269
+ result = AST::MethodType::Params::Optional.new(location: val[0].first,
1270
+ type: val[0].last)
1271
+
999
1272
  result
1000
1273
  end
1001
1274
  .,.,
1002
1275
 
1003
- module_eval(<<'.,.,', 'parser.y', 58)
1276
+ module_eval(<<'.,.,', 'parser.y', 127)
1004
1277
  def _reduce_40(val, _values, result)
1005
- result = val[2].with(optional: [val[0]] + val[2].optional)
1278
+ loc = val.first[0] + (val[2] || val[1]).location
1279
+ type = val.first[1]
1280
+ next_params = val[2]
1281
+ result = AST::MethodType::Params::Optional.new(location: loc, type: type, next_params: next_params)
1282
+
1006
1283
  result
1007
1284
  end
1008
1285
  .,.,
1009
1286
 
1010
- module_eval(<<'.,.,', 'parser.y', 59)
1287
+ module_eval(<<'.,.,', 'parser.y', 132)
1011
1288
  def _reduce_41(val, _values, result)
1012
1289
  result = val[0]
1013
1290
  result
1014
1291
  end
1015
1292
  .,.,
1016
1293
 
1017
- module_eval(<<'.,.,', 'parser.y', 61)
1294
+ module_eval(<<'.,.,', 'parser.y', 134)
1018
1295
  def _reduce_42(val, _values, result)
1019
- result = Interface::Params.empty
1296
+ result = nil
1020
1297
  result
1021
1298
  end
1022
1299
  .,.,
1023
1300
 
1024
- module_eval(<<'.,.,', 'parser.y', 62)
1301
+ module_eval(<<'.,.,', 'parser.y', 136)
1025
1302
  def _reduce_43(val, _values, result)
1026
- result = Interface::Params.empty.with(rest: val[0])
1303
+ result = AST::MethodType::Params::Rest.new(location: val[0].first, type: val[0].last)
1304
+
1027
1305
  result
1028
1306
  end
1029
1307
  .,.,
1030
1308
 
1031
- module_eval(<<'.,.,', 'parser.y', 64)
1309
+ module_eval(<<'.,.,', 'parser.y', 140)
1032
1310
  def _reduce_44(val, _values, result)
1033
- result = Types::Name.interface(name: val[0])
1311
+ result = AST::Types::Name.new(name: val[0].value, location: val[0].location, args: [])
1312
+
1034
1313
  result
1035
1314
  end
1036
1315
  .,.,
1037
1316
 
1038
- module_eval(<<'.,.,', 'parser.y', 65)
1317
+ module_eval(<<'.,.,', 'parser.y', 143)
1039
1318
  def _reduce_45(val, _values, result)
1040
- result = Types::Name.interface(name: val[0], params: val[2])
1319
+ loc = val[0].location + val[3].location
1320
+ name = val[0].value
1321
+ args = val[2]
1322
+ result = AST::Types::Name.new(location: loc, name: name, args: args)
1323
+
1041
1324
  result
1042
1325
  end
1043
1326
  .,.,
1044
1327
 
1045
- module_eval(<<'.,.,', 'parser.y', 66)
1328
+ module_eval(<<'.,.,', 'parser.y', 148)
1046
1329
  def _reduce_46(val, _values, result)
1047
- result = Types::Name.instance(name: val[0])
1330
+ result = AST::Types::Any.new(location: val[0].location)
1048
1331
  result
1049
1332
  end
1050
1333
  .,.,
1051
1334
 
1052
- module_eval(<<'.,.,', 'parser.y', 67)
1335
+ module_eval(<<'.,.,', 'parser.y', 149)
1053
1336
  def _reduce_47(val, _values, result)
1054
- result = Types::Name.instance(name: val[0], params: val[2])
1337
+ result = AST::Types::Var.new(location: val[0].location, name: val[0].value)
1055
1338
  result
1056
1339
  end
1057
1340
  .,.,
1058
1341
 
1059
- module_eval(<<'.,.,', 'parser.y', 68)
1342
+ module_eval(<<'.,.,', 'parser.y', 150)
1060
1343
  def _reduce_48(val, _values, result)
1061
- result = Types::Name.module(name: val[0], constructor: val[1])
1344
+ result = AST::Types::Class.new(location: val[0].location)
1062
1345
  result
1063
1346
  end
1064
1347
  .,.,
1065
1348
 
1066
- module_eval(<<'.,.,', 'parser.y', 69)
1349
+ module_eval(<<'.,.,', 'parser.y', 151)
1067
1350
  def _reduce_49(val, _values, result)
1068
- result = Types::Any.new
1351
+ result = AST::Types::Class.new(location: val[0].location)
1069
1352
  result
1070
1353
  end
1071
1354
  .,.,
1072
1355
 
1073
- module_eval(<<'.,.,', 'parser.y', 70)
1356
+ module_eval(<<'.,.,', 'parser.y', 152)
1074
1357
  def _reduce_50(val, _values, result)
1075
- result = Types::Var.new(name: val[0])
1358
+ result = AST::Types::Instance.new(location: val[0].location)
1076
1359
  result
1077
1360
  end
1078
1361
  .,.,
1079
1362
 
1080
- module_eval(<<'.,.,', 'parser.y', 71)
1363
+ module_eval(<<'.,.,', 'parser.y', 153)
1081
1364
  def _reduce_51(val, _values, result)
1082
- result = Types::Class.new
1365
+ result = AST::Types::Self.new(location: val[0].location)
1083
1366
  result
1084
1367
  end
1085
1368
  .,.,
1086
1369
 
1087
- module_eval(<<'.,.,', 'parser.y', 72)
1370
+ module_eval(<<'.,.,', 'parser.y', 154)
1088
1371
  def _reduce_52(val, _values, result)
1089
- result = Types::Class.new
1372
+ result = AST::Types::Void.new(location: val[0].location)
1090
1373
  result
1091
1374
  end
1092
1375
  .,.,
1093
1376
 
1094
- module_eval(<<'.,.,', 'parser.y', 73)
1377
+ module_eval(<<'.,.,', 'parser.y', 155)
1095
1378
  def _reduce_53(val, _values, result)
1096
- result = Types::Instance.new
1379
+ result = AST::Types::Name.new_instance(name: ModuleName.new(name: "NilClass", absolute: true),
1380
+ location: val[0].location)
1097
1381
  result
1098
1382
  end
1099
1383
  .,.,
1100
1384
 
1101
- module_eval(<<'.,.,', 'parser.y', 75)
1385
+ module_eval(<<'.,.,', 'parser.y', 159)
1102
1386
  def _reduce_54(val, _values, result)
1103
- result = nil
1387
+ result = LocatedValue.new(value: TypeName::Instance.new(name: val[0].value),
1388
+ location: val[0].location)
1389
+
1104
1390
  result
1105
1391
  end
1106
1392
  .,.,
1107
1393
 
1108
- # reduce 55 omitted
1394
+ module_eval(<<'.,.,', 'parser.y', 163)
1395
+ def _reduce_55(val, _values, result)
1396
+ result = LocatedValue.new(value: TypeName::Interface.new(name: val[0].value),
1397
+ location: val[0].location)
1398
+
1399
+ result
1400
+ end
1401
+ .,.,
1109
1402
 
1110
1403
  # reduce 56 omitted
1111
1404
 
1112
- # reduce 57 omitted
1405
+ module_eval(<<'.,.,', 'parser.y', 169)
1406
+ def _reduce_57(val, _values, result)
1407
+ loc = val[0].location + (val[3] || val[2]).location
1408
+ result = LocatedValue.new(value: TypeName::Class.new(name: val[0].value, constructor: val[3]&.value),
1409
+ location: loc)
1410
+
1411
+ result
1412
+ end
1413
+ .,.,
1113
1414
 
1114
- module_eval(<<'.,.,', 'parser.y', 80)
1415
+ module_eval(<<'.,.,', 'parser.y', 174)
1115
1416
  def _reduce_58(val, _values, result)
1116
- result = Types::Union.new(types: val[0])
1417
+ loc = val[0].location + val.last.location
1418
+ result = LocatedValue.new(value: TypeName::Module.new(name: val[0].value),
1419
+ location: loc)
1420
+
1117
1421
  result
1118
1422
  end
1119
1423
  .,.,
1120
1424
 
1121
- module_eval(<<'.,.,', 'parser.y', 82)
1425
+ module_eval(<<'.,.,', 'parser.y', 179)
1122
1426
  def _reduce_59(val, _values, result)
1123
- result = [val[0]]
1427
+ result = nil
1124
1428
  result
1125
1429
  end
1126
1430
  .,.,
1127
1431
 
1128
- module_eval(<<'.,.,', 'parser.y', 83)
1129
- def _reduce_60(val, _values, result)
1130
- result = [val[0]] + val[2]
1432
+ # reduce 60 omitted
1433
+
1434
+ # reduce 61 omitted
1435
+
1436
+ # reduce 62 omitted
1437
+
1438
+ module_eval(<<'.,.,', 'parser.y', 185)
1439
+ def _reduce_63(val, _values, result)
1440
+ loc = val[0].first.location + val[0].last.location
1441
+ result = AST::Types::Union.build(types: val[0], location: loc)
1442
+
1131
1443
  result
1132
1444
  end
1133
1445
  .,.,
1134
1446
 
1135
- module_eval(<<'.,.,', 'parser.y', 85)
1136
- def _reduce_61(val, _values, result)
1137
- result = [val[0], val[2]]
1447
+ module_eval(<<'.,.,', 'parser.y', 189)
1448
+ def _reduce_64(val, _values, result)
1449
+ result = [val[0]]
1138
1450
  result
1139
1451
  end
1140
1452
  .,.,
1141
1453
 
1142
- module_eval(<<'.,.,', 'parser.y', 86)
1143
- def _reduce_62(val, _values, result)
1454
+ module_eval(<<'.,.,', 'parser.y', 190)
1455
+ def _reduce_65(val, _values, result)
1144
1456
  result = [val[0]] + val[2]
1145
1457
  result
1146
1458
  end
1147
1459
  .,.,
1148
1460
 
1149
- # reduce 63 omitted
1150
-
1151
- # reduce 64 omitted
1152
-
1153
- # reduce 65 omitted
1154
-
1155
- module_eval(<<'.,.,', 'parser.y', 91)
1461
+ module_eval(<<'.,.,', 'parser.y', 192)
1156
1462
  def _reduce_66(val, _values, result)
1157
- result = :any
1463
+ result = [val[0], val[2]]
1158
1464
  result
1159
1465
  end
1160
1466
  .,.,
1161
1467
 
1162
- module_eval(<<'.,.,', 'parser.y', 92)
1468
+ module_eval(<<'.,.,', 'parser.y', 193)
1163
1469
  def _reduce_67(val, _values, result)
1164
- result = :class
1470
+ result = [val[0]] + val[2]
1165
1471
  result
1166
1472
  end
1167
1473
  .,.,
1168
1474
 
1169
- module_eval(<<'.,.,', 'parser.y', 93)
1170
- def _reduce_68(val, _values, result)
1171
- result = :module
1475
+ # reduce 68 omitted
1476
+
1477
+ # reduce 69 omitted
1478
+
1479
+ # reduce 70 omitted
1480
+
1481
+ # reduce 71 omitted
1482
+
1483
+ # reduce 72 omitted
1484
+
1485
+ # reduce 73 omitted
1486
+
1487
+ # reduce 74 omitted
1488
+
1489
+ # reduce 75 omitted
1490
+
1491
+ # reduce 76 omitted
1492
+
1493
+ module_eval(<<'.,.,', 'parser.y', 205)
1494
+ def _reduce_77(val, _values, result)
1495
+ result = []
1172
1496
  result
1173
1497
  end
1174
1498
  .,.,
1175
1499
 
1176
- module_eval(<<'.,.,', 'parser.y', 94)
1177
- def _reduce_69(val, _values, result)
1178
- result = :instance
1500
+ module_eval(<<'.,.,', 'parser.y', 206)
1501
+ def _reduce_78(val, _values, result)
1502
+ result = [val[0]] + val[1]
1179
1503
  result
1180
1504
  end
1181
1505
  .,.,
1182
1506
 
1183
- module_eval(<<'.,.,', 'parser.y', 95)
1184
- def _reduce_70(val, _values, result)
1185
- result = :block
1507
+ module_eval(<<'.,.,', 'parser.y', 207)
1508
+ def _reduce_79(val, _values, result)
1509
+ result = [val[0]] + val[1]
1186
1510
  result
1187
1511
  end
1188
1512
  .,.,
1189
1513
 
1190
- module_eval(<<'.,.,', 'parser.y', 96)
1191
- def _reduce_71(val, _values, result)
1192
- result = :include
1514
+ module_eval(<<'.,.,', 'parser.y', 208)
1515
+ def _reduce_80(val, _values, result)
1516
+ result = [val[0]] + val[1]
1193
1517
  result
1194
1518
  end
1195
1519
  .,.,
1196
1520
 
1197
- module_eval(<<'.,.,', 'parser.y', 98)
1198
- def _reduce_72(val, _values, result)
1199
- result = []
1521
+ module_eval(<<'.,.,', 'parser.y', 209)
1522
+ def _reduce_81(val, _values, result)
1523
+ result = [val[0]] + val[1]
1200
1524
  result
1201
1525
  end
1202
1526
  .,.,
1203
1527
 
1204
- module_eval(<<'.,.,', 'parser.y', 99)
1205
- def _reduce_73(val, _values, result)
1528
+ module_eval(<<'.,.,', 'parser.y', 210)
1529
+ def _reduce_82(val, _values, result)
1206
1530
  result = [val[0]] + val[1]
1207
1531
  result
1208
1532
  end
1209
1533
  .,.,
1210
1534
 
1211
- module_eval(<<'.,.,', 'parser.y', 100)
1212
- def _reduce_74(val, _values, result)
1535
+ module_eval(<<'.,.,', 'parser.y', 211)
1536
+ def _reduce_83(val, _values, result)
1213
1537
  result = [val[0]] + val[1]
1214
1538
  result
1215
1539
  end
1216
1540
  .,.,
1217
1541
 
1218
- module_eval(<<'.,.,', 'parser.y', 101)
1219
- def _reduce_75(val, _values, result)
1220
- result = [val[0]] + val[1]
1542
+ module_eval(<<'.,.,', 'parser.y', 214)
1543
+ def _reduce_84(val, _values, result)
1544
+ loc = val.first.location + val.last.location
1545
+ result = AST::Signature::Gvar.new(
1546
+ location: loc,
1547
+ name: val[0].value,
1548
+ type: val[2]
1549
+ )
1550
+
1221
1551
  result
1222
1552
  end
1223
1553
  .,.,
1224
1554
 
1225
- module_eval(<<'.,.,', 'parser.y', 102)
1226
- def _reduce_76(val, _values, result)
1227
- result = [val[0]] + val[1]
1555
+ module_eval(<<'.,.,', 'parser.y', 223)
1556
+ def _reduce_85(val, _values, result)
1557
+ loc = val.first.location + val.last.location
1558
+ result = AST::Signature::Const.new(
1559
+ location: loc,
1560
+ name: val[0].value,
1561
+ type: val[2]
1562
+ )
1563
+
1228
1564
  result
1229
1565
  end
1230
1566
  .,.,
1231
1567
 
1232
- module_eval(<<'.,.,', 'parser.y', 104)
1233
- def _reduce_77(val, _values, result)
1234
- result = Signature::Interface.new(name: val[1], params: val[2], methods: val[3])
1568
+ module_eval(<<'.,.,', 'parser.y', 232)
1569
+ def _reduce_86(val, _values, result)
1570
+ loc = val.first.location + val.last.location
1571
+ result = AST::Signature::Interface.new(
1572
+ location: loc,
1573
+ name: val[1].value,
1574
+ params: val[2],
1575
+ methods: val[3]
1576
+ )
1577
+
1235
1578
  result
1236
1579
  end
1237
1580
  .,.,
1238
1581
 
1239
- module_eval(<<'.,.,', 'parser.y', 105)
1240
- def _reduce_78(val, _values, result)
1241
- result = Signature::Class.new(name: val[1], params: val[2], super_class: val[3], members: val[4] )
1582
+ module_eval(<<'.,.,', 'parser.y', 242)
1583
+ def _reduce_87(val, _values, result)
1584
+ loc = val.first.location + val.last.location
1585
+ result = AST::Signature::Class.new(name: val[1].value.absolute!,
1586
+ params: val[2],
1587
+ super_class: val[3],
1588
+ members: val[4],
1589
+ location: loc)
1590
+
1242
1591
  result
1243
1592
  end
1244
1593
  .,.,
1245
1594
 
1246
- module_eval(<<'.,.,', 'parser.y', 106)
1247
- def _reduce_79(val, _values, result)
1248
- result = Signature::Module.new(name: val[1], params: val[2], self_type: val[3], members: val[4])
1595
+ module_eval(<<'.,.,', 'parser.y', 250)
1596
+ def _reduce_88(val, _values, result)
1597
+ loc = val.first.location + val.last.location
1598
+ result = AST::Signature::Module.new(name: val[1].value.absolute!,
1599
+ location: loc,
1600
+ params: val[2],
1601
+ self_type: val[3],
1602
+ members: val[4])
1603
+
1249
1604
  result
1250
1605
  end
1251
1606
  .,.,
1252
1607
 
1253
- module_eval(<<'.,.,', 'parser.y', 107)
1254
- def _reduce_80(val, _values, result)
1255
- result = Signature::Extension.new(module_name: val[1], extension_name: val[3], members: val[5])
1608
+ module_eval(<<'.,.,', 'parser.y', 258)
1609
+ def _reduce_89(val, _values, result)
1610
+ loc = val.first.location + val.last.location
1611
+ result = AST::Signature::Extension.new(module_name: val[1].value.absolute!,
1612
+ name: val[4].value,
1613
+ location: loc,
1614
+ params: val[2],
1615
+ members: val[6])
1616
+
1256
1617
  result
1257
1618
  end
1258
1619
  .,.,
1259
1620
 
1260
- module_eval(<<'.,.,', 'parser.y', 109)
1261
- def _reduce_81(val, _values, result)
1621
+ module_eval(<<'.,.,', 'parser.y', 266)
1622
+ def _reduce_90(val, _values, result)
1262
1623
  result = nil
1263
1624
  result
1264
1625
  end
1265
1626
  .,.,
1266
1627
 
1267
- module_eval(<<'.,.,', 'parser.y', 110)
1268
- def _reduce_82(val, _values, result)
1628
+ module_eval(<<'.,.,', 'parser.y', 267)
1629
+ def _reduce_91(val, _values, result)
1269
1630
  result = val[1]
1270
1631
  result
1271
1632
  end
1272
1633
  .,.,
1273
1634
 
1274
- module_eval(<<'.,.,', 'parser.y', 112)
1275
- def _reduce_83(val, _values, result)
1276
- result = val[0]
1277
- result
1278
- end
1279
- .,.,
1635
+ # reduce 92 omitted
1280
1636
 
1281
- module_eval(<<'.,.,', 'parser.y', 114)
1282
- def _reduce_84(val, _values, result)
1283
- result = val[0]
1637
+ # reduce 93 omitted
1638
+
1639
+ module_eval(<<'.,.,', 'parser.y', 273)
1640
+ def _reduce_94(val, _values, result)
1641
+ loc = val.first.location + val.last.location
1642
+ result = LocatedValue.new(location: loc, value: val[1].value.absolute!)
1643
+
1284
1644
  result
1285
1645
  end
1286
1646
  .,.,
1287
1647
 
1288
- module_eval(<<'.,.,', 'parser.y', 116)
1289
- def _reduce_85(val, _values, result)
1290
- result = []
1648
+ module_eval(<<'.,.,', 'parser.y', 278)
1649
+ def _reduce_95(val, _values, result)
1650
+ result = LocatedValue.new(location: val[0].location, value: ModuleName.parse(val[0].value))
1651
+
1291
1652
  result
1292
1653
  end
1293
1654
  .,.,
1294
1655
 
1295
- module_eval(<<'.,.,', 'parser.y', 117)
1296
- def _reduce_86(val, _values, result)
1297
- result = [val[0]] + val[1]
1656
+ module_eval(<<'.,.,', 'parser.y', 281)
1657
+ def _reduce_96(val, _values, result)
1658
+ location = val[0].location + val.last.location
1659
+ name = ModuleName.parse(val[0].value) + val.last.value
1660
+ result = LocatedValue.new(location: location, value: name)
1661
+
1298
1662
  result
1299
1663
  end
1300
1664
  .,.,
1301
1665
 
1302
- module_eval(<<'.,.,', 'parser.y', 119)
1303
- def _reduce_87(val, _values, result)
1304
- result = val[0]
1666
+ module_eval(<<'.,.,', 'parser.y', 286)
1667
+ def _reduce_97(val, _values, result)
1668
+ result = []
1305
1669
  result
1306
1670
  end
1307
1671
  .,.,
1308
1672
 
1309
- module_eval(<<'.,.,', 'parser.y', 120)
1310
- def _reduce_88(val, _values, result)
1311
- result = val[0]
1673
+ module_eval(<<'.,.,', 'parser.y', 287)
1674
+ def _reduce_98(val, _values, result)
1675
+ result = [val[0]] + val[1]
1312
1676
  result
1313
1677
  end
1314
1678
  .,.,
1315
1679
 
1316
- module_eval(<<'.,.,', 'parser.y', 121)
1317
- def _reduce_89(val, _values, result)
1318
- result = val[0]
1680
+ # reduce 99 omitted
1681
+
1682
+ # reduce 100 omitted
1683
+
1684
+ # reduce 101 omitted
1685
+
1686
+ # reduce 102 omitted
1687
+
1688
+ # reduce 103 omitted
1689
+
1690
+ # reduce 104 omitted
1691
+
1692
+ module_eval(<<'.,.,', 'parser.y', 297)
1693
+ def _reduce_105(val, _values, result)
1694
+ loc = val.first.location + val.last.location
1695
+ result = AST::Signature::Members::Ivar.new(
1696
+ location: loc,
1697
+ name: val[0].value,
1698
+ type: val[2]
1699
+ )
1700
+
1319
1701
  result
1320
1702
  end
1321
1703
  .,.,
1322
1704
 
1323
- module_eval(<<'.,.,', 'parser.y', 122)
1324
- def _reduce_90(val, _values, result)
1325
- result = val[0]
1705
+ module_eval(<<'.,.,', 'parser.y', 306)
1706
+ def _reduce_106(val, _values, result)
1707
+ loc = val.first.location + val.last.last.location
1708
+ result = AST::Signature::Members::Method.new(
1709
+ name: val[2].value,
1710
+ types: val[4],
1711
+ kind: :instance,
1712
+ location: loc,
1713
+ attributes: [val[1] ? :constructor : nil].compact
1714
+ )
1715
+
1326
1716
  result
1327
1717
  end
1328
1718
  .,.,
1329
1719
 
1330
- module_eval(<<'.,.,', 'parser.y', 123)
1331
- def _reduce_91(val, _values, result)
1332
- result = val[0]
1720
+ module_eval(<<'.,.,', 'parser.y', 316)
1721
+ def _reduce_107(val, _values, result)
1722
+ loc = val.first.location + val.last.last.location
1723
+ result = AST::Signature::Members::Method.new(
1724
+ name: val[4].value,
1725
+ types: val[6],
1726
+ kind: :module,
1727
+ location: loc,
1728
+ attributes: [val[1] ? :constructor : nil].compact
1729
+ )
1730
+
1333
1731
  result
1334
1732
  end
1335
1733
  .,.,
1336
1734
 
1337
- module_eval(<<'.,.,', 'parser.y', 125)
1338
- def _reduce_92(val, _values, result)
1339
- result = Signature::Members::InstanceMethod.new(name: val[2], types: val[4], constructor: val[1])
1735
+ module_eval(<<'.,.,', 'parser.y', 326)
1736
+ def _reduce_108(val, _values, result)
1737
+ loc = val.first.location + val.last.last.location
1738
+ result = AST::Signature::Members::Method.new(
1739
+ name: val[4].value,
1740
+ types: val[6],
1741
+ kind: :module_instance,
1742
+ location: loc,
1743
+ attributes: [val[1] ? :constructor : nil].compact
1744
+ )
1745
+
1340
1746
  result
1341
1747
  end
1342
1748
  .,.,
1343
1749
 
1344
- module_eval(<<'.,.,', 'parser.y', 126)
1345
- def _reduce_93(val, _values, result)
1346
- result = Signature::Members::ModuleMethod.new(name: val[4], types: val[6], constructor: val[1])
1750
+ module_eval(<<'.,.,', 'parser.y', 336)
1751
+ def _reduce_109(val, _values, result)
1752
+ loc = val.first.location + val.last.location
1753
+ name = val[1].value
1754
+ result = AST::Signature::Members::Include.new(name: name, location: loc, args: [])
1755
+
1347
1756
  result
1348
1757
  end
1349
1758
  .,.,
1350
1759
 
1351
- module_eval(<<'.,.,', 'parser.y', 127)
1352
- def _reduce_94(val, _values, result)
1353
- result = Signature::Members::ModuleInstanceMethod.new(name: val[4], types: val[6], constructor: val[1])
1760
+ module_eval(<<'.,.,', 'parser.y', 341)
1761
+ def _reduce_110(val, _values, result)
1762
+ loc = val.first.location + val.last.location
1763
+ name = val[1].value
1764
+ result = AST::Signature::Members::Include.new(name: name, location: loc, args: val[3])
1765
+
1354
1766
  result
1355
1767
  end
1356
1768
  .,.,
1357
1769
 
1358
- module_eval(<<'.,.,', 'parser.y', 128)
1359
- def _reduce_95(val, _values, result)
1360
- result = Signature::Members::Include.new(name: val[1])
1770
+ module_eval(<<'.,.,', 'parser.y', 346)
1771
+ def _reduce_111(val, _values, result)
1772
+ loc = val.first.location + val.last.location
1773
+ name = val[1].value
1774
+ result = AST::Signature::Members::Extend.new(name: name, location: loc, args: [])
1775
+
1361
1776
  result
1362
1777
  end
1363
1778
  .,.,
1364
1779
 
1365
- module_eval(<<'.,.,', 'parser.y', 129)
1366
- def _reduce_96(val, _values, result)
1367
- result = Signature::Members::Extend.new(name: val[1])
1780
+ module_eval(<<'.,.,', 'parser.y', 351)
1781
+ def _reduce_112(val, _values, result)
1782
+ loc = val.first.location + val.last.location
1783
+ name = val[1].value
1784
+ result = AST::Signature::Members::Extend.new(name: name, location: loc, args: val[3])
1785
+
1368
1786
  result
1369
1787
  end
1370
1788
  .,.,
1371
1789
 
1372
- module_eval(<<'.,.,', 'parser.y', 131)
1373
- def _reduce_97(val, _values, result)
1790
+ module_eval(<<'.,.,', 'parser.y', 356)
1791
+ def _reduce_113(val, _values, result)
1374
1792
  result = false
1375
1793
  result
1376
1794
  end
1377
1795
  .,.,
1378
1796
 
1379
- module_eval(<<'.,.,', 'parser.y', 132)
1380
- def _reduce_98(val, _values, result)
1797
+ module_eval(<<'.,.,', 'parser.y', 357)
1798
+ def _reduce_114(val, _values, result)
1381
1799
  result = true
1382
1800
  result
1383
1801
  end
1384
1802
  .,.,
1385
1803
 
1386
- module_eval(<<'.,.,', 'parser.y', 134)
1387
- def _reduce_99(val, _values, result)
1804
+ module_eval(<<'.,.,', 'parser.y', 359)
1805
+ def _reduce_115(val, _values, result)
1388
1806
  result = nil
1389
1807
  result
1390
1808
  end
1391
1809
  .,.,
1392
1810
 
1393
- module_eval(<<'.,.,', 'parser.y', 135)
1394
- def _reduce_100(val, _values, result)
1811
+ module_eval(<<'.,.,', 'parser.y', 360)
1812
+ def _reduce_116(val, _values, result)
1395
1813
  result = val[1]
1396
1814
  result
1397
1815
  end
1398
1816
  .,.,
1399
1817
 
1400
- module_eval(<<'.,.,', 'parser.y', 137)
1401
- def _reduce_101(val, _values, result)
1402
- result = []
1818
+ module_eval(<<'.,.,', 'parser.y', 363)
1819
+ def _reduce_117(val, _values, result)
1820
+ result = AST::Signature::SuperClass.new(location: val[0].location, name: val[0].value, args: [])
1821
+
1403
1822
  result
1404
1823
  end
1405
1824
  .,.,
1406
1825
 
1407
- module_eval(<<'.,.,', 'parser.y', 138)
1408
- def _reduce_102(val, _values, result)
1409
- result = val[1]
1826
+ module_eval(<<'.,.,', 'parser.y', 366)
1827
+ def _reduce_118(val, _values, result)
1828
+ loc = val[0].location + val[3].location
1829
+ name = val[0].value
1830
+ result = AST::Signature::SuperClass.new(location: loc, name: name, args: val[2])
1831
+
1410
1832
  result
1411
1833
  end
1412
1834
  .,.,
1413
1835
 
1414
- module_eval(<<'.,.,', 'parser.y', 140)
1415
- def _reduce_103(val, _values, result)
1416
- result = [val[0]]
1836
+ module_eval(<<'.,.,', 'parser.y', 371)
1837
+ def _reduce_119(val, _values, result)
1838
+ result = nil
1417
1839
  result
1418
1840
  end
1419
1841
  .,.,
1420
1842
 
1421
- module_eval(<<'.,.,', 'parser.y', 141)
1422
- def _reduce_104(val, _values, result)
1423
- result = [val[0]] + val[2]
1843
+ module_eval(<<'.,.,', 'parser.y', 373)
1844
+ def _reduce_120(val, _values, result)
1845
+ location = val[0].location + val[2].location
1846
+ result = AST::TypeParams.new(location: location, variables: val[1])
1847
+
1424
1848
  result
1425
1849
  end
1426
1850
  .,.,
1427
1851
 
1428
- module_eval(<<'.,.,', 'parser.y', 143)
1429
- def _reduce_105(val, _values, result)
1430
- result = {}
1852
+ module_eval(<<'.,.,', 'parser.y', 377)
1853
+ def _reduce_121(val, _values, result)
1854
+ result = [val[0].value]
1431
1855
  result
1432
1856
  end
1433
1857
  .,.,
1434
1858
 
1435
- module_eval(<<'.,.,', 'parser.y', 144)
1436
- def _reduce_106(val, _values, result)
1437
- result = val[1].merge(val[0])
1859
+ module_eval(<<'.,.,', 'parser.y', 378)
1860
+ def _reduce_122(val, _values, result)
1861
+ result = [val[0].value] + val[2]
1438
1862
  result
1439
1863
  end
1440
1864
  .,.,
1441
1865
 
1442
- module_eval(<<'.,.,', 'parser.y', 146)
1443
- def _reduce_107(val, _values, result)
1444
- result = { val[1] => val[3] }
1866
+ module_eval(<<'.,.,', 'parser.y', 380)
1867
+ def _reduce_123(val, _values, result)
1868
+ result = []
1445
1869
  result
1446
1870
  end
1447
1871
  .,.,
1448
1872
 
1449
- module_eval(<<'.,.,', 'parser.y', 148)
1450
- def _reduce_108(val, _values, result)
1451
- result = [val[0]]
1873
+ module_eval(<<'.,.,', 'parser.y', 381)
1874
+ def _reduce_124(val, _values, result)
1875
+ result = val[1].unshift(val[0])
1452
1876
  result
1453
1877
  end
1454
1878
  .,.,
1455
1879
 
1456
- module_eval(<<'.,.,', 'parser.y', 149)
1457
- def _reduce_109(val, _values, result)
1458
- result = [val[0]] + val[2]
1880
+ module_eval(<<'.,.,', 'parser.y', 384)
1881
+ def _reduce_125(val, _values, result)
1882
+ loc = val[0].location + val[3].last.location
1883
+ result = AST::Signature::Interface::Method.new(location: loc, name: val[1].value, types: val[3])
1884
+
1459
1885
  result
1460
1886
  end
1461
1887
  .,.,
1462
1888
 
1463
- # reduce 110 omitted
1464
-
1465
- # reduce 111 omitted
1466
-
1467
- # reduce 112 omitted
1468
-
1469
- module_eval(<<'.,.,', 'parser.y', 154)
1470
- def _reduce_113(val, _values, result)
1471
- result = :any
1889
+ module_eval(<<'.,.,', 'parser.y', 388)
1890
+ def _reduce_126(val, _values, result)
1891
+ result = [val[0]]
1472
1892
  result
1473
1893
  end
1474
1894
  .,.,
1475
1895
 
1476
- module_eval(<<'.,.,', 'parser.y', 155)
1477
- def _reduce_114(val, _values, result)
1478
- result = :interface
1896
+ module_eval(<<'.,.,', 'parser.y', 389)
1897
+ def _reduce_127(val, _values, result)
1898
+ result = [val[0]] + val[2]
1479
1899
  result
1480
1900
  end
1481
1901
  .,.,
1482
1902
 
1483
- module_eval(<<'.,.,', 'parser.y', 156)
1484
- def _reduce_115(val, _values, result)
1485
- result = :end
1486
- result
1487
- end
1488
- .,.,
1903
+ # reduce 128 omitted
1489
1904
 
1490
- module_eval(<<'.,.,', 'parser.y', 157)
1491
- def _reduce_116(val, _values, result)
1492
- result = :+
1905
+ # reduce 129 omitted
1906
+
1907
+ # reduce 130 omitted
1908
+
1909
+ # reduce 131 omitted
1910
+
1911
+ # reduce 132 omitted
1912
+
1913
+ # reduce 133 omitted
1914
+
1915
+ # reduce 134 omitted
1916
+
1917
+ # reduce 135 omitted
1918
+
1919
+ # reduce 136 omitted
1920
+
1921
+ # reduce 137 omitted
1922
+
1923
+ # reduce 138 omitted
1924
+
1925
+ # reduce 139 omitted
1926
+
1927
+ # reduce 140 omitted
1928
+
1929
+ # reduce 141 omitted
1930
+
1931
+ # reduce 142 omitted
1932
+
1933
+ # reduce 143 omitted
1934
+
1935
+ # reduce 144 omitted
1936
+
1937
+ # reduce 145 omitted
1938
+
1939
+ # reduce 146 omitted
1940
+
1941
+ # reduce 147 omitted
1942
+
1943
+ # reduce 148 omitted
1944
+
1945
+ # reduce 149 omitted
1946
+
1947
+ # reduce 150 omitted
1948
+
1949
+ # reduce 151 omitted
1950
+
1951
+ # reduce 152 omitted
1952
+
1953
+ module_eval(<<'.,.,', 'parser.y', 412)
1954
+ def _reduce_153(val, _values, result)
1955
+ result = LocatedValue.new(location: val[0].location, value: :|)
1493
1956
  result
1494
1957
  end
1495
1958
  .,.,
1496
1959
 
1497
- module_eval(<<'.,.,', 'parser.y', 158)
1498
- def _reduce_117(val, _values, result)
1499
- result = :class
1960
+ module_eval(<<'.,.,', 'parser.y', 413)
1961
+ def _reduce_154(val, _values, result)
1962
+ result = LocatedValue.new(location: val[0].location, value: :constructor)
1500
1963
  result
1501
1964
  end
1502
1965
  .,.,
1503
1966
 
1504
- module_eval(<<'.,.,', 'parser.y', 159)
1505
- def _reduce_118(val, _values, result)
1506
- result = :module
1967
+ module_eval(<<'.,.,', 'parser.y', 414)
1968
+ def _reduce_155(val, _values, result)
1969
+ result = LocatedValue.new(location: val[0].location, value: :noconstructor)
1507
1970
  result
1508
1971
  end
1509
1972
  .,.,
1510
1973
 
1511
- module_eval(<<'.,.,', 'parser.y', 160)
1512
- def _reduce_119(val, _values, result)
1513
- result = :instance
1974
+ module_eval(<<'.,.,', 'parser.y', 416)
1975
+ def _reduce_156(val, _values, result)
1976
+ raise ParseError, "\nunexpected method name any ?" unless val[0].location.pred?(val[1].location)
1977
+ result = LocatedValue.new(location: val[0].location + val[1].location, value: :any?)
1978
+
1514
1979
  result
1515
1980
  end
1516
1981
  .,.,
1517
1982
 
1518
- # reduce 120 omitted
1519
-
1520
- # reduce 121 omitted
1521
-
1522
- module_eval(<<'.,.,', 'parser.y', 163)
1523
- def _reduce_122(val, _values, result)
1524
- result = :block
1983
+ module_eval(<<'.,.,', 'parser.y', 420)
1984
+ def _reduce_157(val, _values, result)
1985
+ raise ParseError, "\nunexpected method name > >" unless val[0].location.pred?(val[1].location)
1986
+ result = LocatedValue.new(location: val[0].location + val[1].location, value: :>>)
1987
+
1525
1988
  result
1526
1989
  end
1527
1990
  .,.,
1528
1991
 
1529
- module_eval(<<'.,.,', 'parser.y', 164)
1530
- def _reduce_123(val, _values, result)
1531
- result = :include
1992
+ module_eval(<<'.,.,', 'parser.y', 425)
1993
+ def _reduce_158(val, _values, result)
1994
+ loc = val.first.location + val.last.location
1995
+ result = AST::Annotation::VarType.new(location: loc,
1996
+ name: val[2].value,
1997
+ type: val[4])
1998
+
1532
1999
  result
1533
2000
  end
1534
2001
  .,.,
1535
2002
 
1536
- module_eval(<<'.,.,', 'parser.y', 165)
1537
- def _reduce_124(val, _values, result)
1538
- result = :constructor
2003
+ module_eval(<<'.,.,', 'parser.y', 431)
2004
+ def _reduce_159(val, _values, result)
2005
+ loc = val.first.location + val.last.location
2006
+ result = AST::Annotation::MethodType.new(location: loc,
2007
+ name: val[2].value,
2008
+ type: val[4])
2009
+
1539
2010
  result
1540
2011
  end
1541
2012
  .,.,
1542
2013
 
1543
- module_eval(<<'.,.,', 'parser.y', 166)
1544
- def _reduce_125(val, _values, result)
1545
- result = :noconstructor
2014
+ module_eval(<<'.,.,', 'parser.y', 437)
2015
+ def _reduce_160(val, _values, result)
2016
+ loc = val.first.location + val.last.location
2017
+ result = AST::Annotation::ReturnType.new(type: val[3], location: loc)
2018
+
1546
2019
  result
1547
2020
  end
1548
2021
  .,.,
1549
2022
 
1550
- module_eval(<<'.,.,', 'parser.y', 167)
1551
- def _reduce_126(val, _values, result)
1552
- result = :>>
2023
+ module_eval(<<'.,.,', 'parser.y', 441)
2024
+ def _reduce_161(val, _values, result)
2025
+ loc = val.first.location + val.last.location
2026
+ result = AST::Annotation::BlockType.new(type: val[3], location: loc)
2027
+
1553
2028
  result
1554
2029
  end
1555
2030
  .,.,
1556
2031
 
1557
- module_eval(<<'.,.,', 'parser.y', 169)
1558
- def _reduce_127(val, _values, result)
1559
- result = Annotation::VarType.new(var: val[2], type: val[4])
2032
+ module_eval(<<'.,.,', 'parser.y', 445)
2033
+ def _reduce_162(val, _values, result)
2034
+ loc = val.first.location + val.last.location
2035
+ result = AST::Annotation::SelfType.new(type: val[3], location: loc)
2036
+
1560
2037
  result
1561
2038
  end
1562
2039
  .,.,
1563
2040
 
1564
- module_eval(<<'.,.,', 'parser.y', 170)
1565
- def _reduce_128(val, _values, result)
1566
- result = Annotation::MethodType.new(method: val[2], type: val[4])
2041
+ module_eval(<<'.,.,', 'parser.y', 449)
2042
+ def _reduce_163(val, _values, result)
2043
+ loc = val.first.location + val.last.location
2044
+ result = AST::Annotation::ConstType.new(name: val[2].value,
2045
+ type: val[4],
2046
+ location: loc)
2047
+
1567
2048
  result
1568
2049
  end
1569
2050
  .,.,
1570
2051
 
1571
- module_eval(<<'.,.,', 'parser.y', 171)
1572
- def _reduce_129(val, _values, result)
1573
- result = Annotation::ReturnType.new(type: val[3])
2052
+ module_eval(<<'.,.,', 'parser.y', 455)
2053
+ def _reduce_164(val, _values, result)
2054
+ loc = val.first.location + val.last.location
2055
+ result = AST::Annotation::InstanceType.new(type: val[3], location: loc)
2056
+
1574
2057
  result
1575
2058
  end
1576
2059
  .,.,
1577
2060
 
1578
- module_eval(<<'.,.,', 'parser.y', 172)
1579
- def _reduce_130(val, _values, result)
1580
- result = Annotation::BlockType.new(type: val[3])
2061
+ module_eval(<<'.,.,', 'parser.y', 459)
2062
+ def _reduce_165(val, _values, result)
2063
+ loc = val.first.location + val.last.location
2064
+ result = AST::Annotation::ModuleType.new(type: val[3], location: loc)
2065
+
1581
2066
  result
1582
2067
  end
1583
2068
  .,.,
1584
2069
 
1585
- module_eval(<<'.,.,', 'parser.y', 173)
1586
- def _reduce_131(val, _values, result)
1587
- result = Annotation::SelfType.new(type: val[3])
2070
+ module_eval(<<'.,.,', 'parser.y', 463)
2071
+ def _reduce_166(val, _values, result)
2072
+ loc = val.first.location + val.last.location
2073
+ result = AST::Annotation::IvarType.new(name: val[2].value, type: val[4], location: loc)
2074
+
1588
2075
  result
1589
2076
  end
1590
2077
  .,.,
1591
2078
 
1592
- module_eval(<<'.,.,', 'parser.y', 174)
1593
- def _reduce_132(val, _values, result)
1594
- result = Annotation::ConstType.new(name: val[2], type: val[4])
2079
+ module_eval(<<'.,.,', 'parser.y', 467)
2080
+ def _reduce_167(val, _values, result)
2081
+ loc = val[0].location + (val[2]&.location || val[1].location)
2082
+ args = val[2]&.variables || []
2083
+ name = AST::Annotation::Implements::Module.new(name: val[1].value, args: args)
2084
+ result = AST::Annotation::Implements.new(name: name, location: loc)
2085
+
1595
2086
  result
1596
2087
  end
1597
2088
  .,.,
1598
2089
 
1599
- module_eval(<<'.,.,', 'parser.y', 175)
1600
- def _reduce_133(val, _values, result)
1601
- result = Annotation::ConstType.new(name: val[2], type: val[4])
2090
+ module_eval(<<'.,.,', 'parser.y', 473)
2091
+ def _reduce_168(val, _values, result)
2092
+ loc = val[0].location + val[1].last.location
2093
+ result = AST::Annotation::Dynamic.new(names: val[1], location: loc)
2094
+
1602
2095
  result
1603
2096
  end
1604
2097
  .,.,
1605
2098
 
1606
- module_eval(<<'.,.,', 'parser.y', 176)
1607
- def _reduce_134(val, _values, result)
1608
- result = Annotation::InstanceType.new(type: val[3])
2099
+ module_eval(<<'.,.,', 'parser.y', 477)
2100
+ def _reduce_169(val, _values, result)
2101
+ loc = val.first.location + val.last.location
2102
+ result = AST::Annotation::BreakType.new(type: val[3], location: loc)
2103
+
1609
2104
  result
1610
2105
  end
1611
2106
  .,.,
1612
2107
 
1613
- module_eval(<<'.,.,', 'parser.y', 177)
1614
- def _reduce_135(val, _values, result)
1615
- result = Annotation::ModuleType.new(type: val[3])
2108
+ module_eval(<<'.,.,', 'parser.y', 481)
2109
+ def _reduce_170(val, _values, result)
2110
+ result = [val[0]] + val[2]
1616
2111
  result
1617
2112
  end
1618
2113
  .,.,
1619
2114
 
1620
- module_eval(<<'.,.,', 'parser.y', 178)
1621
- def _reduce_136(val, _values, result)
1622
- result = Annotation::IvarType.new(name: val[2], type: val[4])
2115
+ module_eval(<<'.,.,', 'parser.y', 482)
2116
+ def _reduce_171(val, _values, result)
2117
+ result = val
1623
2118
  result
1624
2119
  end
1625
2120
  .,.,
1626
2121
 
1627
- module_eval(<<'.,.,', 'parser.y', 179)
1628
- def _reduce_137(val, _values, result)
1629
- raise "Invalid type annotation"
2122
+ module_eval(<<'.,.,', 'parser.y', 485)
2123
+ def _reduce_172(val, _values, result)
2124
+ result = AST::Annotation::Dynamic::Name.new(name: val[0].value, location: val[0].location, kind: :instance)
2125
+
1630
2126
  result
1631
2127
  end
1632
2128
  .,.,
1633
2129
 
1634
- module_eval(<<'.,.,', 'parser.y', 180)
1635
- def _reduce_138(val, _values, result)
1636
- result = Annotation::Implements.new(module_name: val[1])
2130
+ module_eval(<<'.,.,', 'parser.y', 488)
2131
+ def _reduce_173(val, _values, result)
2132
+ loc = val.first.location + val.last.location
2133
+ result = AST::Annotation::Dynamic::Name.new(name: val[2].value, location: loc, kind: :module)
2134
+
1637
2135
  result
1638
2136
  end
1639
2137
  .,.,
1640
2138
 
1641
- module_eval(<<'.,.,', 'parser.y', 181)
1642
- def _reduce_139(val, _values, result)
1643
- result = Annotation::Dynamic.new(name: val[1])
2139
+ module_eval(<<'.,.,', 'parser.y', 492)
2140
+ def _reduce_174(val, _values, result)
2141
+ loc = val.first.location + val.last.location
2142
+ result = AST::Annotation::Dynamic::Name.new(name: val[2].value, location: loc, kind: :module_instance)
2143
+
1644
2144
  result
1645
2145
  end
1646
2146
  .,.,
1647
2147
 
1648
- module_eval(<<'.,.,', 'parser.y', 183)
1649
- def _reduce_140(val, _values, result)
2148
+ module_eval(<<'.,.,', 'parser.y', 496)
2149
+ def _reduce_175(val, _values, result)
1650
2150
  result = val[0]
1651
2151
  result
1652
2152
  end