rbs 1.0.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +10 -4
  3. data/CHANGELOG.md +47 -0
  4. data/Gemfile +6 -2
  5. data/README.md +1 -1
  6. data/Rakefile +3 -4
  7. data/bin/test_runner.rb +4 -5
  8. data/core/array.rbs +2 -2
  9. data/core/complex.rbs +1 -1
  10. data/core/encoding.rbs +1 -1
  11. data/core/enumerable.rbs +15 -1
  12. data/core/file.rbs +3 -1
  13. data/core/integer.rbs +2 -1
  14. data/core/io.rbs +75 -4
  15. data/core/kernel.rbs +56 -56
  16. data/core/module.rbs +3 -3
  17. data/core/rational.rbs +2 -1
  18. data/core/string.rbs +2 -1
  19. data/core/symbol.rbs +2 -1
  20. data/core/time.rbs +2 -1
  21. data/core/unbound_method.rbs +16 -0
  22. data/docs/CONTRIBUTING.md +2 -2
  23. data/docs/stdlib.md +50 -12
  24. data/goodcheck.yml +1 -1
  25. data/lib/rbs/ast/members.rb +13 -0
  26. data/lib/rbs/definition_builder.rb +36 -25
  27. data/lib/rbs/definition_builder/method_builder.rb +9 -2
  28. data/lib/rbs/errors.rb +3 -0
  29. data/lib/rbs/parser.rb +347 -333
  30. data/lib/rbs/parser.y +12 -2
  31. data/lib/rbs/prototype/rb.rb +14 -4
  32. data/lib/rbs/test/setup_helper.rb +0 -1
  33. data/lib/rbs/version.rb +1 -1
  34. data/rbs.gemspec +1 -0
  35. data/sig/definition_builder.rbs +3 -2
  36. data/sig/members.rbs +2 -0
  37. data/stdlib/bigdecimal/0/big_decimal.rbs +1 -1
  38. data/stdlib/date/0/date.rbs +1 -1
  39. data/stdlib/fileutils/0/fileutils.rbs +585 -0
  40. data/stdlib/json/0/json.rbs +64 -0
  41. data/stdlib/pathname/0/pathname.rbs +3 -2
  42. data/stdlib/prettyprint/0/prettyprint.rbs +366 -0
  43. data/stdlib/set/0/set.rbs +7 -0
  44. data/stdlib/timeout/0/timeout.rbs +57 -0
  45. data/stdlib/uri/0/common.rbs +1 -1
  46. data/stdlib/uri/0/rfc2396_parser.rbs +144 -7
  47. data/steep/Gemfile.lock +17 -19
  48. metadata +7 -5
  49. data/core/data.rbs +0 -5
data/core/module.rbs CHANGED
@@ -90,7 +90,7 @@ class Module < Object
90
90
  # Returns `nil` if `module` has no relationship with `other_module`, if
91
91
  # `other_module` is not a module, or if the two values are incomparable.
92
92
  #
93
- def <=>: (Module other) -> Integer?
93
+ def <=>: (untyped other) -> Integer?
94
94
 
95
95
  # Equality --- At the Object level, #== returns `true` only if `obj` and `other`
96
96
  # are the same object. Typically, this method is overridden in descendant
@@ -259,7 +259,7 @@ class Module < Object
259
259
  # or method `code' for Thing:Class
260
260
  #
261
261
  def class_eval: (String arg0, ?String filename, ?Integer lineno) -> untyped
262
- | [U] (untyped arg0) { (untyped m) -> U } -> U
262
+ | [U] { (self m) -> U } -> U
263
263
 
264
264
  # Evaluates the given block in the context of the class/module. The method
265
265
  # defined in the block will belong to the receiver. Any arguments passed to the
@@ -793,7 +793,7 @@ class Module < Object
793
793
  # or method `code' for Thing:Class
794
794
  #
795
795
  def module_eval: (String arg0, ?String filename, ?Integer lineno) -> untyped
796
- | [U] (untyped arg0) { (untyped m) -> U } -> U
796
+ | [U] { (self m) -> U } -> U
797
797
 
798
798
  # Evaluates the given block in the context of the class/module. The method
799
799
  # defined in the block will belong to the receiver. Any arguments passed to the
data/core/rational.rbs CHANGED
@@ -125,7 +125,8 @@ class Rational < Numeric
125
125
  #
126
126
  # Rational(1, 3) <=> "0.3" #=> nil
127
127
  #
128
- def <=>: (Numeric) -> Integer?
128
+ def <=>: (Integer | Rational) -> Integer
129
+ | (untyped) -> Integer?
129
130
 
130
131
  # Returns `true` if `rat` equals `object` numerically.
131
132
  #
data/core/string.rbs CHANGED
@@ -91,7 +91,8 @@ class String
91
91
  # "abcdef" <=> "ABCDEF" #=> 1
92
92
  # "abcdef" <=> 1 #=> nil
93
93
  #
94
- def <=>: (untyped other) -> Integer?
94
+ def <=>: (string other) -> Integer
95
+ | (untyped other) -> Integer?
95
96
 
96
97
  # Equality---Returns whether `str` == `obj`, similar to Object#==.
97
98
  #
data/core/symbol.rbs CHANGED
@@ -47,7 +47,8 @@ class Symbol
47
47
  #
48
48
  # See String#<=> for more information.
49
49
  #
50
- def <=>: (untyped other) -> Integer?
50
+ def <=>: (Symbol other) -> Integer
51
+ | (untyped other) -> Integer?
51
52
 
52
53
  # Equality---If *sym* and *obj* are exactly the same symbol, returns `true`.
53
54
  #
data/core/time.rbs CHANGED
@@ -230,7 +230,8 @@ class Time < Object
230
230
  # t2 <=> t #=> 1
231
231
  # t <=> t #=> 0
232
232
  #
233
- def <=>: (Time other) -> Integer?
233
+ def <=>: (Time other) -> Integer
234
+ | (untyped other) -> Integer?
234
235
 
235
236
  def >: (Time arg0) -> bool
236
237
 
@@ -150,4 +150,20 @@ class UnboundMethod
150
150
  # if there is no method on superclass.
151
151
  #
152
152
  def super_method: () -> UnboundMethod?
153
+
154
+ # Returns the original name of the method.
155
+ #
156
+ # class C
157
+ # def foo; end
158
+ # alias bar foo
159
+ # end
160
+ # C.instance_method(:bar).original_name # => :foo
161
+ #
162
+ def original_name: () -> Symbol
163
+
164
+ # Bind *umeth* to *recv* and then invokes the method with the specified
165
+ # arguments. This is semantically equivalent to `umeth.bind(recv).call(args,
166
+ # ...)`.
167
+ #
168
+ def bind_call: (untyped recv, *untyped args) ?{ (*untyped) -> untyped } -> untyped
153
169
  end
data/docs/CONTRIBUTING.md CHANGED
@@ -49,12 +49,12 @@ You may find the *Good for first contributor* column where you can find some cla
49
49
  * `--merge` tells to use the method types in RBS if exists.
50
50
  * `rbs prototype runtime --merge --method-owner=Numeric Integer`
51
51
  * You can use --method-owner if you want to print method of other classes too, for documentation purpose.
52
- * `bin/annotate-with-rdoc stdlib/builtin/string.rbs`
52
+ * `bin/annotate-with-rdoc core/string.rbs`
53
53
  * Write comments using RDoc.
54
54
  * It contains arglists section, but I don't think we should have it in RBS files.
55
55
  * `bin/query-rdoc String#initialize`
56
56
  * Print RDoc documents in the format you can copy-and-paste to RBS.
57
- * `bin/sort stdlib/builtin/string.rbs`
57
+ * `bin/sort core/string.rbs`
58
58
  * Sort declarations members in RBS files.
59
59
  * `rbs validate -r LIB`
60
60
  Validate the syntax and some of the semantics.
data/docs/stdlib.md CHANGED
@@ -11,7 +11,7 @@ The typical steps of writing signatures will be like the following:
11
11
 
12
12
  ## Signatures
13
13
 
14
- Signatures for standard libraries are located in `stdlib` directory. `stdlib/builtin` is for builtin libraries. Other libraries have directories like `stdlib/set` or `stdlib/pathname`.
14
+ Signatures for builtin libraries are located in `core` directory. Also, signatures for standard libraries are located in `stdlib` directory.
15
15
 
16
16
  To write signatures see [syntax guide](syntax.md).
17
17
 
@@ -118,23 +118,61 @@ It generates `test/stdlib/[class_name]_test.rb`.
118
118
  The test scripts would look like the following:
119
119
 
120
120
  ```rb
121
- class StringTest < StdlibTest
122
- target String
121
+ class StringSingletonTest < Test::Unit::TestCase
122
+ include TypeAssertions
123
+
124
+ testing "singleton(::String)"
125
+
126
+ def test_initialize
127
+ assert_send_type "() -> String",
128
+ String, :new
129
+ assert_send_type "(String) -> String",
130
+ String, :new, ""
131
+ assert_send_type "(String, encoding: Encoding) -> String",
132
+ String, :new, "", encoding: Encoding::ASCII_8BIT
133
+ assert_send_type "(String, encoding: Encoding, capacity: Integer) -> String",
134
+ String, :new, "", encoding: Encoding::ASCII_8BIT, capacity: 123
135
+ assert_send_type "(encoding: Encoding, capacity: Integer) -> String",
136
+ String, :new, encoding: Encoding::ASCII_8BIT, capacity: 123
137
+ assert_send_type "(ToStr) -> String",
138
+ String, :new, ToStr.new("")
139
+ assert_send_type "(encoding: ToStr) -> String",
140
+ String, :new, encoding: ToStr.new('Shift_JIS')
141
+ assert_send_type "(capacity: ToInt) -> String",
142
+ String, :new, capacity: ToInt.new(123)
143
+ end
144
+ end
145
+
146
+ class StringTest < Test::Unit::TestCase
147
+ include TypeAssertions
148
+
149
+ # library "pathname", "set", "securerandom" # Declare library signatures to load
150
+ testing "::String"
123
151
 
124
152
  def test_gsub
125
- s = "string"
126
- s.gsub(/./, "")
127
- s.gsub("a", "b")
128
- s.gsub(/./) {|x| "" }
129
- s.gsub(/./, {"foo" => "bar"})
130
- s.gsub(/./)
131
- s.gsub("")
153
+ assert_send_type "(Regexp, String) -> String",
154
+ "string", :gsub, /./, ""
155
+ assert_send_type "(String, String) -> String",
156
+ "string", :gsub, "a", "b"
157
+ assert_send_type "(Regexp) { (String) -> String } -> String",
158
+ "string", :gsub, /./ do |x| "" end
159
+ assert_send_type "(Regexp) { (String) -> ToS } -> String",
160
+ "string", :gsub, /./ do |x| ToS.new("") end
161
+ assert_send_type "(Regexp, Hash[String, String]) -> String",
162
+ "string", :gsub, /./, {"foo" => "bar"}
163
+ assert_send_type "(Regexp) -> Enumerator[String, self]",
164
+ "string", :gsub, /./
165
+ assert_send_type "(String) -> Enumerator[String, self]",
166
+ "string", :gsub, ""
167
+ assert_send_type "(ToStr, ToStr) -> String",
168
+ "string", :gsub, ToStr.new("a"), ToStr.new("b")
132
169
  end
133
170
  end
134
171
  ```
135
172
 
136
- You need two method calls, `target` and `using`.
137
- `target` method call tells which class is the subject of the class.
173
+ You need include `TypeAssertions` which provide useful methods for you.
174
+ `testing` method call tells which class is the subject of the class.
175
+ `assert_send_type` method call asserts to be valid types and confirms to be able to execute without exceptions.
138
176
  And you write the sample programs which calls all of the patterns of overloads.
139
177
 
140
178
  Note that the instrumentation is based on refinements and you need to write all method calls in the unit class definitions.
data/goodcheck.yml CHANGED
@@ -71,7 +71,7 @@ rules:
71
71
  end
72
72
  pass:
73
73
  - |
74
- class IntegerTest < Minitest::Test
74
+ class IntegerTest < Test::Unit::TestCase
75
75
  include TypeAssertions
76
76
 
77
77
  testing "Integer"
@@ -245,6 +245,19 @@ module RBS
245
245
  def hash
246
246
  self.class.hash ^ name.hash ^ type.hash ^ ivar_name.hash ^ kind.hash
247
247
  end
248
+
249
+ def update(name: self.name, type: self.type, ivar_name: self.ivar_name, kind: self.kind, annotations: self.annotations, location: self.location, comment: self.comment)
250
+ klass = _ = self.class
251
+ klass.new(
252
+ name: name,
253
+ type: type,
254
+ ivar_name: ivar_name,
255
+ kind: kind,
256
+ annotations: annotations,
257
+ location: location,
258
+ comment: comment
259
+ )
260
+ end
248
261
  end
249
262
 
250
263
  class AttrReader < Base
@@ -131,17 +131,16 @@ module RBS
131
131
  end
132
132
  end
133
133
 
134
- def build_instance(type_name)
135
- try_cache(type_name, cache: instance_cache) do
134
+ def build_instance(type_name, no_self_types: false)
135
+ try_cache(type_name, cache: instance_cache, key: [type_name, no_self_types]) do
136
136
  entry = env.class_decls[type_name] or raise "Unknown name for build_instance: #{type_name}"
137
137
  ensure_namespace!(type_name.namespace, location: entry.decls[0].decl.location)
138
138
 
139
139
  case entry
140
140
  when Environment::ClassEntry, Environment::ModuleEntry
141
141
  ancestors = ancestor_builder.instance_ancestors(type_name)
142
- self_type = Types::ClassInstance.new(name: type_name,
143
- args: Types::Variable.build(entry.type_params.each.map(&:name)),
144
- location: nil)
142
+ args = Types::Variable.build(entry.type_params.each.map(&:name))
143
+ self_type = Types::ClassInstance.new(name: type_name, args: args, location: nil)
145
144
 
146
145
  Definition.new(type_name: type_name, entry: entry, self_type: self_type, ancestors: ancestors).tap do |definition|
147
146
  one_ancestors = ancestor_builder.one_instance_ancestors(type_name)
@@ -164,23 +163,25 @@ module RBS
164
163
  end
165
164
 
166
165
  if self_types = one_ancestors.self_types
167
- self_types.each do |ans|
168
- defn = if ans.name.interface?
169
- build_interface(ans.name)
170
- else
171
- build_instance(ans.name)
172
- end
166
+ unless no_self_types
167
+ self_types.each do |ans|
168
+ defn = if ans.name.interface?
169
+ build_interface(ans.name)
170
+ else
171
+ build_instance(ans.name)
172
+ end
173
173
 
174
- # Successor interface method overwrites.
175
- merge_definition(src: defn,
176
- dest: definition,
177
- subst: Substitution.build(defn.type_params, ans.args),
178
- keep_super: true)
174
+ # Successor interface method overwrites.
175
+ merge_definition(src: defn,
176
+ dest: definition,
177
+ subst: Substitution.build(defn.type_params, ans.args),
178
+ keep_super: true)
179
+ end
179
180
  end
180
181
  end
181
182
 
182
183
  one_ancestors.each_included_module do |mod|
183
- defn = build_instance(mod.name)
184
+ defn = build_instance(mod.name, no_self_types: true)
184
185
  merge_definition(src: defn,
185
186
  dest: definition,
186
187
  subst: Substitution.build(defn.type_params, mod.args))
@@ -215,6 +216,8 @@ module RBS
215
216
  super_interface_method: entry.is_a?(Environment::ModuleEntry))
216
217
 
217
218
  entry.decls.each do |d|
219
+ subst = Substitution.build(d.decl.type_params.each.map(&:name), args)
220
+
218
221
  d.decl.members.each do |member|
219
222
  case member
220
223
  when AST::Members::AttrReader, AST::Members::AttrAccessor, AST::Members::AttrWriter
@@ -227,12 +230,18 @@ module RBS
227
230
  end
228
231
 
229
232
  if ivar_name
230
- insert_variable(type_name, definition.instance_variables, name: ivar_name, type: member.type)
233
+ insert_variable(type_name,
234
+ definition.instance_variables,
235
+ name: ivar_name,
236
+ type: member.type.sub(subst))
231
237
  end
232
238
  end
233
239
 
234
240
  when AST::Members::InstanceVariable
235
- insert_variable(type_name, definition.instance_variables, name: member.name, type: member.type)
241
+ insert_variable(type_name,
242
+ definition.instance_variables,
243
+ name: member.name,
244
+ type: member.type.sub(subst))
236
245
 
237
246
  when AST::Members::ClassVariable
238
247
  insert_variable(type_name, definition.class_variables, name: member.name, type: member.type)
@@ -281,7 +290,7 @@ module RBS
281
290
  end
282
291
 
283
292
  one_ancestors.each_extended_module do |mod|
284
- mod_defn = build_instance(mod.name)
293
+ mod_defn = build_instance(mod.name, no_self_types: true)
285
294
  merge_definition(src: mod_defn,
286
295
  dest: definition,
287
296
  subst: Substitution.build(mod_defn.type_params, mod.args))
@@ -751,8 +760,10 @@ module RBS
751
760
  )
752
761
  end
753
762
 
754
- def try_cache(type_name, cache:)
755
- cached = _ = cache[type_name]
763
+ def try_cache(type_name, cache:, key: type_name)
764
+ # @type var cc: Hash[untyped, Definition | false | nil]
765
+ cc = _ = cache
766
+ cached = cc[key]
756
767
 
757
768
  case cached
758
769
  when Definition
@@ -760,11 +771,11 @@ module RBS
760
771
  when false
761
772
  raise
762
773
  when nil
763
- cache[type_name] = false
774
+ cc[key] = false
764
775
  begin
765
- cache[type_name] = yield
776
+ cc[key] = yield
766
777
  rescue => ex
767
- cache.delete(type_name)
778
+ cc.delete(key)
768
779
  raise ex
769
780
  end
770
781
  else
@@ -96,15 +96,22 @@ module RBS
96
96
  type = Types::ClassInstance.new(name: type_name, args: args, location: nil)
97
97
  Methods.new(type: type).tap do |methods|
98
98
  entry.decls.each do |d|
99
+ subst = Substitution.build(d.decl.type_params.each.map(&:name), args)
99
100
  each_member_with_accessibility(d.decl.members) do |member, accessibility|
100
101
  case member
101
102
  when AST::Members::MethodDefinition
102
103
  if member.instance?
103
- build_method(methods, type, member: member, accessibility: accessibility)
104
+ build_method(methods,
105
+ type,
106
+ member: member.update(types: member.types.map {|type| type.sub(subst) }),
107
+ accessibility: accessibility)
104
108
  end
105
109
  when AST::Members::AttrReader, AST::Members::AttrWriter, AST::Members::AttrAccessor
106
110
  if member.kind == :instance
107
- build_attribute(methods, type, member: member, accessibility: accessibility)
111
+ build_attribute(methods,
112
+ type,
113
+ member: member.update(type: member.type.sub(subst)),
114
+ accessibility: accessibility)
108
115
  end
109
116
  when AST::Members::Alias
110
117
  if member.kind == :instance
data/lib/rbs/errors.rb CHANGED
@@ -40,6 +40,9 @@ module RBS
40
40
  attr_reader :location
41
41
 
42
42
  def initialize(ancestors:, location:)
43
+ @ancestors = ancestors
44
+ @location = location
45
+
43
46
  names = ancestors.map do |ancestor|
44
47
  case ancestor
45
48
  when Definition::Ancestor::Singleton
data/lib/rbs/parser.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.5.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -8,7 +8,7 @@ require 'racc/parser.rb'
8
8
  module RBS
9
9
  class Parser < Racc::Parser
10
10
 
11
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1058)
11
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1068)
12
12
 
13
13
  Types = RBS::Types
14
14
  Namespace = RBS::Namespace
@@ -315,7 +315,7 @@ def next_token
315
315
  new_token(:tWRITE_ATTR)
316
316
  when input.scan(KEYWORDS_RE)
317
317
  new_token(KEYWORDS[input.matched], input.matched.to_sym)
318
- when input.scan(/:((@{,2}|\$)?\w+(\?|\!)?|\+|\-)\b?/)
318
+ when input.scan(/:((@{,2}|\$)?\w+(\?|\!)?|[|&\/%~`^]|<=>|={2,3}|=~|[<>]{2}|[<>]=?|[-+]@?|\*{1,2}|\[\]=?|![=~]?)\b?/)
319
319
  s = input.matched.yield_self {|s| s[1, s.length] }.to_sym
320
320
  new_token(:tSYMBOL, s)
321
321
  when input.scan(/[+-]?\d[\d_]*/)
@@ -401,40 +401,40 @@ end
401
401
  ##### State transition tables begin ###
402
402
 
403
403
  clist = [
404
- '349,350,33,351,5,113,37,33,33,42,336,392,49,33,33,348,43,244,334,391',
405
- '40,41,55,56,57,58,59,60,61,62,353,33,63,54,64,65,66,77,67,68,69,83,33',
406
- '32,53,344,338,339,32,32,342,340,343,303,32,32,33,341,82,70,71,72,74',
407
- '76,75,337,346,347,73,78,80,126,32,124,48,84,85,81,86,349,350,33,351',
408
- '32,96,97,98,99,104,49,39,33,33,33,348,205,205,32,125,40,41,55,56,57',
409
- '58,59,60,61,62,79,185,63,54,64,65,66,77,67,68,69,83,53,32,160,344,338',
410
- '339,53,53,342,340,343,32,32,32,125,341,82,70,71,72,74,76,75,337,346',
411
- '347,73,78,80,40,41,161,222,84,85,81,86,349,350,120,351,180,96,97,98',
412
- '99,164,179,101,102,165,103,348,166,278,325,358,223,39,55,56,57,58,59',
413
- '60,61,62,79,395,63,54,64,65,66,77,67,68,69,83,279,125,125,344,338,339',
414
- '396,397,342,340,343,321,40,41,125,341,82,70,71,72,74,76,75,337,346,347',
415
- '73,78,80,167,317,125,125,84,85,81,86,349,350,168,351,170,96,97,98,99',
416
- '2,3,4,40,41,171,348,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,172',
417
- '63,54,64,65,66,77,67,68,69,83,40,41,113,344,338,339,40,41,342,340,343',
418
- '40,41,40,41,341,82,70,71,72,74,76,75,337,346,347,73,78,80,349,350,178',
419
- '351,84,85,81,86,-4,181,-241,184,33,41,117,348,-241,40,41,40,41,113,55',
404
+ '351,352,33,353,5,113,37,33,33,42,338,394,49,33,33,350,43,245,336,393',
405
+ '40,41,55,56,57,58,59,60,61,62,355,33,63,54,64,65,66,77,67,68,69,83,33',
406
+ '32,53,346,340,341,32,32,344,342,345,305,32,32,33,343,82,70,71,72,74',
407
+ '76,75,339,348,349,73,78,80,126,32,124,48,84,85,81,86,351,352,33,353',
408
+ '32,96,97,98,99,104,49,39,33,33,33,350,205,205,32,125,40,41,55,56,57',
409
+ '58,59,60,61,62,79,185,63,54,64,65,66,77,67,68,69,83,53,32,160,346,340',
410
+ '341,53,53,344,342,345,32,32,32,125,343,82,70,71,72,74,76,75,339,348',
411
+ '349,73,78,80,40,41,161,223,84,85,81,86,351,352,120,353,180,96,97,98',
412
+ '99,164,179,101,102,165,103,350,166,280,327,360,224,39,55,56,57,58,59',
413
+ '60,61,62,79,397,63,54,64,65,66,77,67,68,69,83,281,125,125,346,340,341',
414
+ '398,399,344,342,345,323,40,41,125,343,82,70,71,72,74,76,75,339,348,349',
415
+ '73,78,80,167,319,125,125,84,85,81,86,351,352,168,353,170,96,97,98,99',
416
+ '2,3,4,40,41,171,350,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,172',
417
+ '63,54,64,65,66,77,67,68,69,83,40,41,113,346,340,341,40,41,344,342,345',
418
+ '40,41,40,41,343,82,70,71,72,74,76,75,339,348,349,73,78,80,351,352,178',
419
+ '353,84,85,81,86,-4,181,-242,184,33,41,117,350,-242,40,41,40,41,113,55',
420
420
  '56,57,58,59,60,61,62,79,187,63,54,64,65,66,77,67,68,69,83,40,41,180',
421
- '344,338,339,281,282,342,340,343,32,370,371,188,341,82,70,71,72,74,76',
422
- '75,337,346,347,73,78,80,349,350,-104,351,84,85,81,86,40,41,40,41,-105',
423
- '39,-106,348,386,387,40,41,40,41,55,56,57,58,59,60,61,62,79,-107,63,54',
424
- '64,65,66,77,67,68,69,83,40,41,-108,344,338,339,40,41,342,340,343,40',
425
- '41,40,41,341,82,70,71,72,74,76,75,337,346,347,73,78,80,40,41,-109,-110',
426
- '84,85,81,86,349,350,-111,351,-112,96,97,98,99,-113,-114,48,-129,193',
427
- '194,348,195,196,197,198,206,207,55,56,57,58,59,60,61,62,79,42,63,54',
428
- '64,65,66,77,67,68,69,83,224,238,247,344,338,339,248,250,342,340,343',
429
- '252,253,42,255,341,82,70,71,72,74,76,75,337,346,347,73,78,80,349,350',
430
- '255,351,84,85,81,86,255,261,42,224,265,269,271,348,273,274,310,269,312',
431
- '273,55,56,57,58,59,60,61,62,79,322,63,54,64,65,66,77,67,68,69,83,323',
432
- '324,327,344,338,339,327,327,342,340,343,357,359,366,367,341,82,70,71',
433
- '72,74,76,75,337,346,347,73,78,80,368,369,372,374,84,85,81,86,33,377',
434
- '377,96,97,98,99,377,390,393,22,23,21,394,26,-219,25,401,30,402,131,132',
435
- '133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,403',
436
- '32,405,410,411,28,412,156,413,157,159,410,,,,,82,70,71,72,74,76,75,',
437
- ',,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,,25,,30',
421
+ '346,340,341,283,284,344,342,345,32,372,373,188,343,82,70,71,72,74,76',
422
+ '75,339,348,349,73,78,80,351,352,-104,353,84,85,81,86,40,41,40,41,-105',
423
+ '39,-106,350,388,389,40,41,40,41,55,56,57,58,59,60,61,62,79,-107,63,54',
424
+ '64,65,66,77,67,68,69,83,40,41,-108,346,340,341,40,41,344,342,345,40',
425
+ '41,40,41,343,82,70,71,72,74,76,75,339,348,349,73,78,80,40,41,-109,-110',
426
+ '84,85,81,86,351,352,-111,353,-112,96,97,98,99,-113,-114,48,-129,193',
427
+ '194,350,195,196,197,198,206,207,55,56,57,58,59,60,61,62,79,42,63,54',
428
+ '64,65,66,77,67,68,69,83,225,239,248,346,340,341,249,250,344,342,345',
429
+ '252,254,255,42,343,82,70,71,72,74,76,75,339,348,349,73,78,80,351,352',
430
+ '257,353,84,85,81,86,257,257,263,42,225,267,271,350,273,275,276,312,271',
431
+ '314,55,56,57,58,59,60,61,62,79,275,63,54,64,65,66,77,67,68,69,83,324',
432
+ '325,326,346,340,341,329,329,344,342,345,329,359,361,368,343,82,70,71',
433
+ '72,74,76,75,339,348,349,73,78,80,369,370,371,374,84,85,81,86,33,376',
434
+ '379,96,97,98,99,379,379,392,22,23,21,395,26,-219,25,396,30,403,131,132',
435
+ '133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,404',
436
+ '32,405,407,412,28,413,156,414,157,159,415,412,,,,82,70,71,72,74,76,75',
437
+ ',,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,,25,,30',
438
438
  ',131,132,133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68',
439
439
  '69,83,,32,,,174,28,,177,,175,,,,,,,82,70,71,72,74,76,75,,,,73,78,80',
440
440
  '176,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131',
@@ -444,30 +444,30 @@ clist = [
444
444
  '135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,',
445
445
  '156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33',
446
446
  ',,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137',
447
- '138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,230,,,159,,',
447
+ '138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,231,,,159,,',
448
448
  ',,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99',
449
449
  ',,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137,138,142,16',
450
450
  '139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156,,157,159,,,,,,82,70',
451
451
  '71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23',
452
452
  '21,,26,-219,25,,30,,131,132,133,134,135,136,137,138,142,16,139,130,140',
453
- '141,66,77,67,68,69,83,,32,,,,28,,230,,,159,,,,,,82,70,71,72,74,76,75',
453
+ '141,66,77,67,68,69,83,,32,,,,28,,231,,,159,,,,,,82,70,71,72,74,76,75',
454
454
  ',,,73,78,80,,,,,84,85,81,86,96,97,98,99,,,,90,89,91,,,,,,,,55,56,57',
455
455
  '58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,,,,,,190,,191,,',
456
456
  ',,,82,70,71,72,74,76,75,,95,94,73,78,80,,,,,84,85,81,86,96,97,98,99',
457
457
  ',,,90,89,91,,,,,,40,41,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77',
458
458
  '67,68,69,83,192,,,,,,,,,,,,,,,,82,70,71,72,74,76,75,,95,94,73,78,80',
459
459
  '96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64',
460
- '65,66,77,67,68,69,83,190,,191,,,,,230,,,159,,,,,,82,70,71,72,74,76,75',
460
+ '65,66,77,67,68,69,83,190,,191,,,,,231,,,159,,,,,,82,70,71,72,74,76,75',
461
461
  '190,,191,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,40,41,55,56,57,58,59',
462
- '60,61,62,79,,63,54,64,65,66,77,67,68,69,83,192,40,41,,,,,230,,,159,',
462
+ '60,61,62,79,,63,54,64,65,66,77,67,68,69,83,192,40,41,,,,,231,,,159,',
463
463
  ',,,,82,70,71,72,74,76,75,192,,,73,78,80,96,97,98,99,84,85,81,86,,,,',
464
464
  ',,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,190,',
465
465
  '191,190,,191,190,,191,,,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84',
466
- '85,81,86,,,,,,,,40,41,,40,41,,40,41,-241,,33,,117,,-241,,,298,299,113',
467
- ',,192,,,192,,,192,,-241,,33,,117,,-241,,300,298,299,113,,,,,,295,294',
468
- ',,32,-241,,33,,117,,-241,,300,298,299,113,,,,286,,295,294,,174,32,,177',
469
- ',175,,,321,,300,,,,,,,309,,295,294,,33,32,,176,,317,318,314,315,316',
470
- '22,23,21,319,26,,25,313,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
466
+ '85,81,86,,,,,,,,40,41,,40,41,,40,41,-242,,33,,117,,-242,,,300,301,113',
467
+ ',,192,,,192,,,192,,-242,,33,,117,,-242,,302,300,301,113,,,,,,297,296',
468
+ ',,32,-242,,33,,117,,-242,,302,300,301,113,,,,288,,297,296,,174,32,,177',
469
+ ',175,,,323,,302,,,,,,,311,,297,296,,33,32,,176,,319,320,316,317,318',
470
+ '22,23,21,321,26,,25,315,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
471
471
  ',,33,,,,,32,,,,28,22,23,21,,26,,25,45,30,,8,12,19,20,9,10,13,14,15,16',
472
472
  '17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10',
473
473
  '13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12',
@@ -523,44 +523,44 @@ clist = [
523
523
  end
524
524
 
525
525
  clist = [
526
- '321,321,48,321,1,275,5,177,215,7,320,377,28,216,217,321,24,216,320,377',
527
- '44,44,321,321,321,321,321,321,321,321,321,244,321,321,321,321,321,321',
528
- '321,321,321,321,265,48,28,321,321,321,177,215,321,321,321,275,216,217',
529
- '271,321,321,321,321,321,321,321,321,321,321,321,321,321,321,47,244,46',
530
- '27,321,321,321,321,328,328,273,328,265,328,328,328,328,32,119,35,317',
531
- '318,319,328,160,206,271,46,47,47,328,328,328,328,328,328,328,328,328',
532
- '123,328,328,328,328,328,328,328,328,328,328,119,273,51,328,328,328,160',
533
- '206,328,328,328,317,318,319,123,328,328,328,328,328,328,328,328,328',
534
- '328,328,328,328,328,6,6,51,183,328,328,328,328,329,329,36,329,116,329',
535
- '329,329,329,87,116,31,31,88,31,329,89,266,302,326,183,6,329,329,329',
536
- '329,329,329,329,329,329,382,329,329,329,329,329,329,329,329,329,329',
537
- '266,302,326,329,329,329,383,384,329,329,329,308,169,169,382,329,329',
538
- '329,329,329,329,329,329,329,329,329,329,329,329,90,308,383,384,329,329',
539
- '329,329,330,330,91,330,93,330,330,330,330,0,0,0,186,186,94,330,209,209',
540
- '210,210,211,211,330,330,330,330,330,330,330,330,330,95,330,330,330,330',
541
- '330,330,330,330,330,330,212,212,113,330,330,330,213,213,330,330,330',
542
- '214,214,219,219,330,330,330,330,330,330,330,330,330,330,330,330,330',
543
- '330,354,354,115,354,330,330,330,330,34,117,34,120,34,121,34,354,34,220',
544
- '220,221,221,34,354,354,354,354,354,354,354,354,354,127,354,354,354,354',
545
- '354,354,354,354,354,354,262,262,128,354,354,354,268,268,354,354,354',
546
- '34,345,345,129,354,354,354,354,354,354,354,354,354,354,354,354,354,354',
547
- '372,372,130,372,354,354,354,354,355,355,356,356,131,34,132,372,369,369',
548
- '375,375,378,378,372,372,372,372,372,372,372,372,372,133,372,372,372',
549
- '372,372,372,372,372,372,372,380,380,134,372,372,372,389,389,372,372',
550
- '372,404,404,406,406,372,372,372,372,372,372,372,372,372,372,372,372',
551
- '372,372,407,407,135,136,372,372,372,372,385,385,137,385,138,385,385',
552
- '385,385,139,140,141,142,145,146,385,148,150,153,154,161,162,385,385',
553
- '385,385,385,385,385,385,385,163,385,385,385,385,385,385,385,385,385',
554
- '385,188,204,218,385,385,385,223,228,385,385,385,239,240,241,242,385',
555
- '385,385,385,385,385,385,385,385,385,385,385,385,385,412,412,243,412',
556
- '385,385,385,385,245,246,249,252,254,255,256,412,257,259,277,279,280',
557
- '284,412,412,412,412,412,412,412,412,412,298,412,412,412,412,412,412',
558
- '412,412,412,412,299,300,314,412,412,412,315,316,412,412,412,324,327',
559
- '331,332,412,412,412,412,412,412,412,412,412,412,412,412,412,412,333',
560
- '335,353,357,412,412,412,412,49,361,363,49,49,49,49,365,376,379,49,49',
561
- '49,381,49,49,49,386,49,387,49,49,49,49,49,49,49,49,49,49,49,49,49,49',
562
- '49,49,49,49,49,49,388,49,392,398,400,49,403,49,409,49,49,413,,,,,49',
563
- '49,49,49,49,49,49,,,,49,49,49,,,,,49,49,49,49,156,,,156,156,156,156',
526
+ '323,323,48,323,1,277,5,177,215,7,322,379,28,216,217,323,24,216,322,379',
527
+ '44,44,323,323,323,323,323,323,323,323,323,245,323,323,323,323,323,323',
528
+ '323,323,323,323,267,48,28,323,323,323,177,215,323,323,323,277,216,217',
529
+ '273,323,323,323,323,323,323,323,323,323,323,323,323,323,323,47,245,46',
530
+ '27,323,323,323,323,330,330,275,330,267,330,330,330,330,32,119,35,319',
531
+ '320,321,330,160,206,273,46,47,47,330,330,330,330,330,330,330,330,330',
532
+ '123,330,330,330,330,330,330,330,330,330,330,119,275,51,330,330,330,160',
533
+ '206,330,330,330,319,320,321,123,330,330,330,330,330,330,330,330,330',
534
+ '330,330,330,330,330,6,6,51,183,330,330,330,330,331,331,36,331,116,331',
535
+ '331,331,331,87,116,31,31,88,31,331,89,268,304,328,183,6,331,331,331',
536
+ '331,331,331,331,331,331,384,331,331,331,331,331,331,331,331,331,331',
537
+ '268,304,328,331,331,331,385,386,331,331,331,310,169,169,384,331,331',
538
+ '331,331,331,331,331,331,331,331,331,331,331,331,90,310,385,386,331,331',
539
+ '331,331,332,332,91,332,93,332,332,332,332,0,0,0,186,186,94,332,209,209',
540
+ '210,210,211,211,332,332,332,332,332,332,332,332,332,95,332,332,332,332',
541
+ '332,332,332,332,332,332,212,212,113,332,332,332,213,213,332,332,332',
542
+ '214,214,220,220,332,332,332,332,332,332,332,332,332,332,332,332,332',
543
+ '332,356,356,115,356,332,332,332,332,34,117,34,120,34,121,34,356,34,221',
544
+ '221,222,222,34,356,356,356,356,356,356,356,356,356,127,356,356,356,356',
545
+ '356,356,356,356,356,356,264,264,128,356,356,356,270,270,356,356,356',
546
+ '34,347,347,129,356,356,356,356,356,356,356,356,356,356,356,356,356,356',
547
+ '374,374,130,374,356,356,356,356,357,357,358,358,131,34,132,374,371,371',
548
+ '377,377,380,380,374,374,374,374,374,374,374,374,374,133,374,374,374',
549
+ '374,374,374,374,374,374,374,382,382,134,374,374,374,391,391,374,374',
550
+ '374,406,406,408,408,374,374,374,374,374,374,374,374,374,374,374,374',
551
+ '374,374,409,409,135,136,374,374,374,374,387,387,137,387,138,387,387',
552
+ '387,387,139,140,141,142,145,146,387,148,150,153,154,161,162,387,387',
553
+ '387,387,387,387,387,387,387,163,387,387,387,387,387,387,387,387,387',
554
+ '387,188,204,218,387,387,387,219,224,387,387,387,229,240,241,242,387',
555
+ '387,387,387,387,387,387,387,387,387,387,387,387,387,414,414,243,414',
556
+ '387,387,387,387,244,246,247,251,254,256,257,414,258,259,261,279,281',
557
+ '282,414,414,414,414,414,414,414,414,414,286,414,414,414,414,414,414',
558
+ '414,414,414,414,300,301,302,414,414,414,316,317,414,414,414,318,326',
559
+ '329,333,414,414,414,414,414,414,414,414,414,414,414,414,414,414,334',
560
+ '335,337,355,414,414,414,414,49,359,363,49,49,49,49,365,367,378,49,49',
561
+ '49,381,49,49,49,383,49,388,49,49,49,49,49,49,49,49,49,49,49,49,49,49',
562
+ '49,49,49,49,49,49,389,49,390,394,400,49,402,49,405,49,49,411,415,,,',
563
+ '49,49,49,49,49,49,49,,,,49,49,49,,,,,49,49,49,49,156,,,156,156,156,156',
564
564
  ',,,156,156,156,,156,,156,,156,,156,156,156,156,156,156,156,156,156,156',
565
565
  '156,156,156,156,156,156,156,156,156,156,,156,,,114,156,,114,,114,,,',
566
566
  ',,,156,156,156,156,156,156,156,,,,156,156,156,114,,,,156,156,156,156',
@@ -577,10 +577,10 @@ clist = [
577
577
  ',205,205,205,205,,,,205,205,205,,205,205,205,,205,,205,205,205,205,205',
578
578
  '205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,,205,,,',
579
579
  '205,,205,,205,205,,,,,,205,205,205,205,205,205,205,,,,205,205,205,,',
580
- ',,205,205,205,205,250,,,250,250,250,250,,,,250,250,250,,250,250,250',
581
- ',250,,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250',
582
- '250,250,250,250,,250,,,,250,,250,,,250,,,,,,250,250,250,250,250,250',
583
- '250,,,,250,250,250,,,,,250,250,250,250,30,30,30,30,,,,30,30,30,,,,,',
580
+ ',,205,205,205,205,252,,,252,252,252,252,,,,252,252,252,,252,252,252',
581
+ ',252,,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252',
582
+ '252,252,252,252,,252,,,,252,,252,,,252,,,,,,252,252,252,252,252,252',
583
+ '252,,,,252,252,252,,,,,252,252,252,252,30,30,30,30,,,,30,30,30,,,,,',
584
584
  ',,30,30,30,30,30,30,30,30,30,,30,30,30,30,30,30,30,30,30,30,,,,,,,,',
585
585
  '143,,143,,,,,,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,30,30,30,30,165',
586
586
  '165,165,165,,,,165,165,165,,,,,,143,143,165,165,165,165,165,165,165',
@@ -591,14 +591,14 @@ clist = [
591
591
  '197,197,197,197,201,,201,197,197,197,198,198,198,198,197,197,197,197',
592
592
  ',,,,,,,199,199,198,198,198,198,198,198,198,198,198,,198,198,198,198',
593
593
  '198,198,198,198,198,198,199,201,201,,,,,198,,,198,,,,,,198,198,198,198',
594
- '198,198,198,201,,,198,198,198,230,230,230,230,198,198,198,198,,,,,,',
595
- ',,,230,230,230,230,230,230,230,230,230,,230,230,230,230,230,230,230',
596
- '230,230,230,202,,202,203,,203,234,,234,,,,,,,,230,230,230,230,230,230',
597
- '230,,,,230,230,230,,,,,230,230,230,230,,,,,,,,202,202,,203,203,,234',
598
- '234,272,,272,,272,,272,,,272,272,272,,,202,,,203,,,234,,276,,276,,276',
599
- ',276,,272,276,276,276,,,,,,272,272,,,272,283,,283,,283,,283,,276,283',
600
- '283,283,,,,272,,276,276,,285,276,,285,,285,,,285,,283,,,,,,,276,,283',
601
- '283,,2,283,,285,,285,285,285,285,285,2,2,2,285,2,,2,283,2,,2,2,2,2,2',
594
+ '198,198,198,201,,,198,198,198,231,231,231,231,198,198,198,198,,,,,,',
595
+ ',,,231,231,231,231,231,231,231,231,231,,231,231,231,231,231,231,231',
596
+ '231,231,231,202,,202,203,,203,235,,235,,,,,,,,231,231,231,231,231,231',
597
+ '231,,,,231,231,231,,,,,231,231,231,231,,,,,,,,202,202,,203,203,,235',
598
+ '235,274,,274,,274,,274,,,274,274,274,,,202,,,203,,,235,,278,,278,,278',
599
+ ',278,,274,278,278,278,,,,,,274,274,,,274,285,,285,,285,,285,,278,285',
600
+ '285,285,,,,274,,278,278,,287,278,,287,,287,,,287,,285,,,,,,,278,,285',
601
+ '285,,2,285,,287,,287,287,287,287,287,2,2,2,287,2,,2,285,2,,2,2,2,2,2',
602
602
  '2,2,2,2,2,2,2,2,2,,,25,,,,,2,,,,2,25,25,25,,25,,25,25,25,,25,25,25,25',
603
603
  '25,25,25,25,25,25,25,25,25,25,,,26,,,,,25,,,,25,26,26,26,,26,,26,,26',
604
604
  ',26,26,26,26,26,26,26,26,26,26,26,26,26,26,,,40,,,,,26,,,,26,40,40,40',
@@ -630,31 +630,31 @@ clist = [
630
630
  '181,181,181,181,181,,,200,,,,,181,,,,181,200,200,200,,200,,200,,200',
631
631
  ',200,200,200,200,200,200,200,200,200,200,200,200,200,200,,,207,,,,,200',
632
632
  ',,,200,207,207,207,,207,,207,,207,,207,207,207,207,207,207,207,207,207',
633
- '207,207,207,207,207,,,224,,,,,207,,,,207,224,224,224,,224,,224,,224',
634
- ',224,224,224,224,224,224,224,224,224,224,224,224,224,224,,,247,,,,,224',
635
- ',,,224,247,247,247,,247,,247,,247,,247,247,247,247,247,247,247,247,247',
636
- '247,247,247,247,247,,,274,,,,,247,,,,247,274,274,274,,274,,274,,274',
637
- ',274,274,274,274,274,274,274,274,274,274,274,274,274,274,,,310,,,,,274',
638
- ',,,274,310,310,310,,310,,310,,310,,310,310,310,310,310,310,310,310,310',
639
- '310,310,310,310,310,,,322,,,,,310,,,,310,322,322,322,,322,,322,,322',
640
- ',322,322,322,322,322,322,322,322,322,322,322,322,322,322,,,323,,,,,322',
641
- ',,,322,323,323,323,,323,,323,,323,,323,323,323,323,323,323,323,323,323',
642
- '323,323,323,323,323,,,360,,,,,323,,,,323,360,360,360,,360,,360,,360',
643
- ',360,360,360,360,360,360,360,360,360,360,360,360,360,360,,,362,,,,,360',
644
- ',,,360,362,362,362,,362,,362,,362,,362,362,362,362,362,362,362,362,362',
645
- '362,362,362,362,362,,,364,,,,,362,,,,362,364,364,364,,364,,364,,364',
646
- ',364,364,364,364,364,364,364,364,364,364,364,364,364,364,,,366,,,,,364',
647
- ',,,364,366,366,366,,366,,366,,366,,366,366,366,366,366,366,366,366,366',
648
- '366,366,366,366,366,,,367,,,,,366,,,,366,367,367,367,,367,,367,,367',
649
- ',367,367,367,367,367,367,367,367,367,367,367,367,367,367,,,368,,,,,367',
650
- ',,,367,368,368,368,,368,,368,,368,,368,368,368,368,368,368,368,368,368',
651
- '368,368,368,368,368,,,374,,,,,368,,,,368,374,374,374,,374,,374,,374',
652
- ',374,374,374,374,374,374,374,374,374,374,374,374,374,374,,,390,,,,,374',
653
- ',,,374,390,390,390,,390,,390,,390,,390,390,390,390,390,390,390,390,390',
654
- '390,390,390,390,390,,,393,,,,,390,,,,390,393,393,393,,393,,393,,393',
655
- ',393,393,393,393,393,393,393,393,393,393,393,393,393,393,,,394,,,,,393',
656
- ',,,393,394,394,394,,394,,394,,394,,394,394,394,394,394,394,394,394,394',
657
- '394,394,394,394,394,,,,,,,,394,,,,394' ]
633
+ '207,207,207,207,207,,,225,,,,,207,,,,207,225,225,225,,225,,225,,225',
634
+ ',225,225,225,225,225,225,225,225,225,225,225,225,225,225,,,248,,,,,225',
635
+ ',,,225,248,248,248,,248,,248,,248,,248,248,248,248,248,248,248,248,248',
636
+ '248,248,248,248,248,,,276,,,,,248,,,,248,276,276,276,,276,,276,,276',
637
+ ',276,276,276,276,276,276,276,276,276,276,276,276,276,276,,,312,,,,,276',
638
+ ',,,276,312,312,312,,312,,312,,312,,312,312,312,312,312,312,312,312,312',
639
+ '312,312,312,312,312,,,324,,,,,312,,,,312,324,324,324,,324,,324,,324',
640
+ ',324,324,324,324,324,324,324,324,324,324,324,324,324,324,,,325,,,,,324',
641
+ ',,,324,325,325,325,,325,,325,,325,,325,325,325,325,325,325,325,325,325',
642
+ '325,325,325,325,325,,,362,,,,,325,,,,325,362,362,362,,362,,362,,362',
643
+ ',362,362,362,362,362,362,362,362,362,362,362,362,362,362,,,364,,,,,362',
644
+ ',,,362,364,364,364,,364,,364,,364,,364,364,364,364,364,364,364,364,364',
645
+ '364,364,364,364,364,,,366,,,,,364,,,,364,366,366,366,,366,,366,,366',
646
+ ',366,366,366,366,366,366,366,366,366,366,366,366,366,366,,,368,,,,,366',
647
+ ',,,366,368,368,368,,368,,368,,368,,368,368,368,368,368,368,368,368,368',
648
+ '368,368,368,368,368,,,369,,,,,368,,,,368,369,369,369,,369,,369,,369',
649
+ ',369,369,369,369,369,369,369,369,369,369,369,369,369,369,,,370,,,,,369',
650
+ ',,,369,370,370,370,,370,,370,,370,,370,370,370,370,370,370,370,370,370',
651
+ '370,370,370,370,370,,,376,,,,,370,,,,370,376,376,376,,376,,376,,376',
652
+ ',376,376,376,376,376,376,376,376,376,376,376,376,376,376,,,392,,,,,376',
653
+ ',,,376,392,392,392,,392,,392,,392,,392,392,392,392,392,392,392,392,392',
654
+ '392,392,392,392,392,,,395,,,,,392,,,,392,395,395,395,,395,,395,,395',
655
+ ',395,395,395,395,395,395,395,395,395,395,395,395,395,395,,,396,,,,,395',
656
+ ',,,395,396,396,396,,396,,396,,396,,396,396,396,396,396,396,396,396,396',
657
+ '396,396,396,396,396,,,,,,,,396,,,,396' ]
658
658
  racc_action_check = arr = ::Array.new(3008, nil)
659
659
  idx = 0
660
660
  clist.each do |str|
@@ -686,175 +686,175 @@ racc_action_pointer = [
686
686
  nil, 2310, nil, 132, nil, nil, 202, nil, 450, nil,
687
687
  nil, nil, nil, nil, 758, 835, 912, 1280, 1346, 1321,
688
688
  2346, 1344, 1453, 1456, 478, 989, 78, 2382, nil, 206,
689
- 208, 210, 232, 238, 243, 4, 9, 10, 446, 245,
690
- 278, 280, nil, 504, 2418, nil, nil, nil, 461, nil,
691
- 1412, nil, nil, nil, 1459, nil, nil, nil, nil, 492,
692
- 489, 462, 494, 511, 27, 517, 533, 2454, nil, 488,
693
- 1066, nil, 490, nil, 482, 463, 499, 499, nil, 526,
694
- nil, nil, 303, nil, nil, 38, 154, nil, 279, nil,
695
- nil, 52, 1506, 77, 2490, -8, 1528, 527, nil, 469,
696
- 547, nil, nil, 1550, 504, 1537, nil, nil, nil, nil,
697
- nil, nil, nil, nil, nil, nil, nil, nil, 516, 527,
698
- 515, nil, 155, nil, nil, nil, nil, nil, 168, nil,
699
- 2526, nil, nil, nil, 541, 545, 546, 87, 88, 89,
700
- -62, -2, 2562, 2598, 571, nil, 156, 526, 77, 156,
701
- 235, 564, 565, 580, nil, 562, nil, nil, nil, nil,
702
- nil, nil, nil, nil, nil, 311, nil, nil, nil, nil,
703
- nil, nil, nil, 545, 306, 340, 342, 559, nil, nil,
704
- 2634, 591, 2670, 592, 2706, 597, 2742, 2778, 2814, 363,
705
- nil, nil, 377, nil, 2850, 350, 572, 0, 352, 573,
706
- 374, 577, 168, 185, 186, 456, 568, 570, 616, 380,
707
- 2886, nil, 631, 2922, 2958, nil, nil, nil, 593, nil,
708
- 608, nil, nil, 597, 385, nil, 387, 403, nil, 609,
709
- nil, nil, 527, 601, nil, nil ]
689
+ 208, 210, 232, 238, 243, 4, 9, 10, 446, 503,
690
+ 245, 278, 280, nil, 505, 2418, nil, nil, nil, 465,
691
+ nil, 1412, nil, nil, nil, 1459, nil, nil, nil, nil,
692
+ 493, 490, 463, 511, 517, 27, 518, 534, 2454, nil,
693
+ nil, 489, 1066, nil, 491, nil, 483, 464, 501, 500,
694
+ nil, 527, nil, nil, 303, nil, nil, 38, 154, nil,
695
+ 279, nil, nil, 52, 1506, 77, 2490, -8, 1528, 528,
696
+ nil, 470, 548, nil, nil, 1550, 514, 1537, nil, nil,
697
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
698
+ 527, 528, 516, nil, 155, nil, nil, nil, nil, nil,
699
+ 168, nil, 2526, nil, nil, nil, 545, 546, 550, 87,
700
+ 88, 89, -62, -2, 2562, 2598, 572, nil, 156, 527,
701
+ 77, 156, 235, 565, 580, 581, nil, 563, nil, nil,
702
+ nil, nil, nil, nil, nil, nil, nil, 311, nil, nil,
703
+ nil, nil, nil, nil, nil, 546, 306, 340, 342, 565,
704
+ nil, nil, 2634, 592, 2670, 597, 2706, 598, 2742, 2778,
705
+ 2814, 363, nil, nil, 377, nil, 2850, 350, 573, 0,
706
+ 352, 577, 374, 581, 168, 185, 186, 456, 570, 591,
707
+ 618, 380, 2886, nil, 632, 2922, 2958, nil, nil, nil,
708
+ 594, nil, 610, nil, nil, 599, 385, nil, 387, 403,
709
+ nil, 612, nil, nil, 527, 602, nil, nil ]
710
710
 
711
711
  racc_action_default = [
712
- -245, -245, -241, -6, -15, -245, -4, -157, -160, -161,
712
+ -246, -246, -242, -6, -15, -246, -4, -157, -160, -161,
713
713
  -162, -163, -164, -165, -166, -167, -168, -169, -170, -171,
714
- -172, -173, -174, -175, -176, -241, -241, -245, -80, -184,
715
- -245, -245, -242, -244, -16, -4, -147, 416, -1, -5,
716
- -241, -241, -183, -241, -185, -178, -245, -245, -241, -241,
717
- -182, -245, -204, -241, -104, -105, -106, -107, -108, -109,
714
+ -172, -173, -174, -175, -176, -242, -242, -246, -80, -184,
715
+ -246, -246, -243, -245, -16, -4, -147, 418, -1, -5,
716
+ -242, -242, -183, -242, -185, -178, -246, -246, -242, -242,
717
+ -182, -246, -204, -242, -104, -105, -106, -107, -108, -109,
718
718
  -110, -111, -112, -113, -114, -115, -116, -117, -118, -119,
719
719
  -120, -121, -122, -123, -124, -125, -126, -127, -128, -129,
720
- -130, -131, -132, -133, -134, -135, -136, -245, -188, -245,
721
- -245, -245, -241, -245, -245, -245, -199, -200, -201, -202,
722
- -235, -236, -237, -238, -243, -2, -7, -8, -9, -10,
723
- -11, -12, -13, -16, -245, -245, -245, -245, -3, -80,
724
- -245, -158, -159, -245, -179, -241, -180, -245, -245, -245,
720
+ -130, -131, -132, -133, -134, -135, -136, -246, -188, -246,
721
+ -246, -246, -242, -246, -246, -246, -199, -200, -201, -202,
722
+ -235, -236, -237, -238, -244, -2, -7, -8, -9, -10,
723
+ -11, -12, -13, -16, -246, -246, -246, -246, -3, -80,
724
+ -246, -158, -159, -246, -179, -242, -180, -246, -246, -246,
725
725
  -170, -160, -164, -171, -172, -161, -162, -165, -166, -169,
726
- -163, -115, -167, -231, -197, -245, -208, -209, -211, -212,
727
- -214, -215, -218, -221, -223, -224, -241, -241, -241, -241,
728
- -245, -245, -245, -206, -187, -245, -241, -241, -241, -193,
729
- -241, -241, -241, -17, -14, -14, -14, -241, -241, -241,
730
- -240, -241, -79, -245, -149, -177, -186, -181, -81, -225,
731
- -232, -233, -234, -198, -241, -241, -241, -219, -219, -231,
732
- -241, -231, -231, -231, -245, -241, -245, -241, -189, -190,
733
- -191, -192, -194, -195, -196, -241, -241, -241, -245, -154,
734
- -155, -156, -148, -245, -241, -207, -215, -210, -217, -213,
735
- -245, -220, -222, -226, -231, -227, -228, -230, -82, -245,
736
- -245, -203, -137, -137, -241, -137, -245, -241, -150, -205,
737
- -241, -229, -245, -83, -19, -145, -24, -30, -26, -29,
738
- -57, -239, -153, -216, -30, -241, -245, -139, -142, -146,
739
- -30, -241, -16, -241, -241, -16, -16, -20, -138, -145,
740
- -245, -143, -144, -16, -25, -71, -23, -31, -32, -33,
741
- -34, -35, -36, -37, -38, -39, -40, -41, -245, -245,
742
- -245, -27, -245, -56, -58, -59, -60, -61, -71, -18,
743
- -241, -140, -141, -22, -42, -42, -42, -241, -241, -241,
744
- -68, -245, -241, -241, -245, -28, -245, -245, -245, -245,
745
- -245, -62, -64, -66, -69, -245, -72, -86, -87, -88,
746
- -89, -90, -91, -92, -93, -94, -97, -98, -99, -100,
747
- -101, -102, -103, -129, -245, -53, -54, -245, -21, -43,
748
- -241, -50, -241, -50, -241, -50, -241, -241, -241, -73,
749
- -95, -96, -245, -151, -241, -44, -245, -245, -46, -245,
750
- -48, -245, -245, -245, -245, -245, -245, -245, -245, -55,
751
- -241, -51, -245, -241, -241, -63, -65, -67, -15, -84,
752
- -245, -74, -75, -245, -45, -52, -47, -49, -70, -76,
753
- -77, -85, -245, -15, -152, -78 ]
726
+ -163, -115, -167, -231, -197, -246, -208, -209, -211, -212,
727
+ -214, -215, -218, -221, -223, -224, -242, -242, -242, -242,
728
+ -246, -246, -246, -206, -187, -246, -242, -242, -242, -193,
729
+ -242, -242, -242, -17, -14, -14, -14, -242, -242, -242,
730
+ -240, -242, -79, -246, -149, -177, -186, -181, -81, -225,
731
+ -232, -233, -234, -198, -242, -242, -242, -219, -219, -231,
732
+ -242, -231, -231, -231, -246, -242, -246, -242, -189, -190,
733
+ -191, -192, -194, -195, -196, -242, -242, -242, -246, -246,
734
+ -154, -155, -156, -148, -246, -242, -207, -215, -210, -217,
735
+ -213, -246, -220, -222, -226, -231, -227, -228, -230, -82,
736
+ -246, -246, -203, -137, -137, -242, -137, -246, -242, -241,
737
+ -150, -205, -242, -229, -246, -83, -19, -145, -24, -30,
738
+ -26, -29, -57, -239, -153, -216, -30, -242, -246, -139,
739
+ -142, -146, -30, -242, -16, -242, -242, -16, -16, -20,
740
+ -138, -145, -246, -143, -144, -16, -25, -71, -23, -31,
741
+ -32, -33, -34, -35, -36, -37, -38, -39, -40, -41,
742
+ -246, -246, -246, -27, -246, -56, -58, -59, -60, -61,
743
+ -71, -18, -242, -140, -141, -22, -42, -42, -42, -242,
744
+ -242, -242, -68, -246, -242, -242, -246, -28, -246, -246,
745
+ -246, -246, -246, -62, -64, -66, -69, -246, -72, -86,
746
+ -87, -88, -89, -90, -91, -92, -93, -94, -97, -98,
747
+ -99, -100, -101, -102, -103, -129, -246, -53, -54, -246,
748
+ -21, -43, -242, -50, -242, -50, -242, -50, -242, -242,
749
+ -242, -73, -95, -96, -246, -151, -242, -44, -246, -246,
750
+ -46, -246, -48, -246, -246, -246, -246, -246, -246, -246,
751
+ -246, -55, -242, -51, -246, -242, -242, -63, -65, -67,
752
+ -15, -84, -246, -74, -75, -246, -45, -52, -47, -49,
753
+ -70, -76, -77, -85, -246, -15, -152, -78 ]
754
754
 
755
755
  racc_goto_table = [
756
- 6, 93, 116, 46, 92, 114, 127, 163, 218, 87,
757
- 354, 200, 50, 228, 228, 129, 128, 361, 363, 365,
758
- 189, 123, 38, 204, 47, 226, 257, 229, 267, 408,
759
- 376, 1, 379, 272, 381, 215, 216, 217, 121, 122,
760
- 276, 231, 232, 373, 415, 34, 283, 143, 35, 106,
761
- 105, 118, 311, 284, 254, 256, 264, 260, 328, 329,
762
- 330, 388, 270, 301, 305, 306, 307, 245, 228, 240,
763
- 275, 304, 335, 385, 400, 259, 233, 398, 235, 236,
764
- 237, 263, 119, 162, 173, 200, 266, 280, 183, 227,
765
- 169, 100, nil, nil, nil, nil, nil, nil, nil, nil,
766
- nil, 414, 259, 182, 259, nil, nil, nil, nil, nil,
767
- nil, 251, nil, nil, nil, nil, nil, nil, nil, nil,
756
+ 6, 93, 129, 46, 92, 116, 127, 87, 114, 163,
757
+ 189, 200, 50, 204, 227, 38, 230, 259, 261, 128,
758
+ 356, 123, 229, 229, 47, 269, 410, 363, 365, 367,
759
+ 378, 1, 381, 34, 383, 215, 216, 217, 121, 122,
760
+ 35, 417, 106, 105, 118, 286, 261, 143, 261, 313,
761
+ 274, 256, 258, 375, 262, 232, 233, 278, 266, 241,
762
+ 330, 331, 332, 285, 272, 303, 234, 307, 236, 237,
763
+ 238, 390, 265, 308, 309, 246, 277, 306, 337, 229,
764
+ 387, 400, 119, 162, 402, 268, 200, 173, 282, 183,
765
+ 169, 218, 333, 334, 335, 228, 100, nil, nil, nil,
766
+ nil, nil, 253, 182, nil, nil, nil, nil, nil, nil,
767
+ nil, 416, nil, nil, nil, nil, nil, nil, nil, nil,
768
768
  nil, nil, nil, 186, nil, nil, nil, nil, nil, nil,
769
769
  nil, nil, nil, nil, nil, nil, 93, nil, nil, 92,
770
- nil, nil, nil, nil, 208, nil, nil, nil, 331, 332,
771
- 333, nil, nil, nil, 199, 201, 202, 203, nil, nil,
772
- 225, 241, nil, nil, 209, 210, 211, nil, 212, 213,
773
- 214, 239, nil, 242, 243, nil, 219, 220, 249, 221,
774
- nil, nil, nil, 128, 128, 246, nil, nil, nil, nil,
775
- nil, nil, 143, 143, 143, nil, nil, nil, 234, nil,
770
+ nil, nil, 208, nil, nil, nil, nil, 226, 219, nil,
771
+ nil, nil, nil, nil, 199, 201, 202, 203, 240, nil,
772
+ nil, nil, nil, 242, 209, 210, 211, nil, 212, 213,
773
+ 214, nil, nil, 243, 244, nil, 220, 221, nil, 222,
774
+ nil, 251, nil, nil, nil, nil, 128, 128, 247, nil,
775
+ nil, nil, 143, 143, 143, nil, nil, nil, 235, nil,
776
776
  nil, nil, nil, 143, nil, nil, nil, nil, nil, nil,
777
777
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
778
- nil, nil, nil, 277, nil, nil, nil, nil, nil, nil,
779
- nil, nil, nil, 128, nil, nil, nil, nil, nil, nil,
780
- 116, nil, nil, nil, 116, 262, 308, nil, 143, nil,
781
- nil, 116, 302, nil, nil, nil, nil, nil, nil, nil,
778
+ nil, nil, nil, nil, nil, 279, nil, nil, nil, nil,
779
+ nil, nil, nil, nil, nil, nil, nil, nil, 128, nil,
780
+ nil, nil, nil, nil, nil, 116, 264, nil, nil, 116,
781
+ 143, 310, nil, nil, 304, nil, 116, nil, nil, nil,
782
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
782
783
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
783
784
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
784
- nil, nil, nil, nil, nil, nil, nil, nil, 326, nil,
785
- nil, nil, 352, nil, nil, nil, nil, nil, nil, 352,
786
- 352, 352, 360, 362, 364, nil, nil, nil, nil, nil,
785
+ 328, nil, nil, nil, 354, nil, nil, nil, nil, nil,
786
+ nil, 354, 354, 354, 362, 364, 366, nil, nil, nil,
787
787
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
788
- 355, 356, nil, nil, nil, 352, nil, nil, nil, nil,
788
+ nil, nil, 357, 358, nil, nil, nil, 354, nil, nil,
789
789
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
790
- nil, nil, nil, 352, 382, 383, 384, nil, nil, nil,
791
- nil, nil, nil, nil, nil, nil, 352, nil, 375, 399,
792
- 378, nil, 380, nil, nil, nil, nil, nil, nil, nil,
793
- nil, nil, 389, nil, nil, nil, nil, nil, nil, nil,
794
- nil, nil, nil, 352, nil, nil, nil, nil, 404, nil,
795
- nil, 406, 407 ]
790
+ nil, nil, nil, nil, nil, 354, 384, 385, 386, nil,
791
+ nil, nil, nil, nil, nil, nil, nil, nil, 354, nil,
792
+ 377, 401, 380, nil, 382, nil, nil, nil, nil, nil,
793
+ nil, nil, nil, nil, 391, nil, nil, nil, nil, nil,
794
+ nil, nil, nil, nil, nil, 354, nil, nil, nil, nil,
795
+ 406, nil, nil, 408, 409 ]
796
796
 
797
797
  racc_goto_check = [
798
- 2, 52, 58, 20, 34, 15, 16, 59, 24, 61,
799
- 35, 63, 46, 64, 64, 48, 58, 35, 35, 35,
800
- 74, 20, 3, 50, 2, 69, 22, 69, 54, 44,
801
- 36, 1, 36, 19, 36, 13, 13, 13, 2, 2,
802
- 19, 70, 70, 35, 44, 4, 19, 2, 5, 6,
803
- 3, 3, 54, 22, 17, 17, 18, 17, 33, 33,
804
- 33, 35, 21, 23, 26, 27, 32, 37, 64, 50,
805
- 38, 39, 40, 42, 35, 24, 74, 43, 74, 74,
806
- 74, 69, 45, 49, 15, 63, 53, 56, 57, 65,
807
- 2, 75, nil, nil, nil, nil, nil, nil, nil, nil,
808
- nil, 35, 24, 46, 24, nil, nil, nil, nil, nil,
809
- nil, 74, nil, nil, nil, nil, nil, nil, nil, nil,
798
+ 2, 52, 48, 20, 34, 59, 16, 62, 15, 60,
799
+ 75, 64, 46, 50, 70, 3, 70, 22, 24, 59,
800
+ 35, 20, 65, 65, 2, 54, 44, 35, 35, 35,
801
+ 36, 1, 36, 4, 36, 13, 13, 13, 2, 2,
802
+ 5, 44, 6, 3, 3, 22, 24, 2, 24, 54,
803
+ 19, 17, 17, 35, 17, 71, 71, 19, 18, 50,
804
+ 33, 33, 33, 19, 21, 23, 75, 26, 75, 75,
805
+ 75, 35, 70, 27, 32, 37, 38, 39, 40, 65,
806
+ 42, 43, 45, 49, 35, 53, 64, 15, 56, 57,
807
+ 2, 58, 24, 24, 24, 66, 76, nil, nil, nil,
808
+ nil, nil, 75, 46, nil, nil, nil, nil, nil, nil,
809
+ nil, 35, nil, nil, nil, nil, nil, nil, nil, nil,
810
810
  nil, nil, nil, 2, nil, nil, nil, nil, nil, nil,
811
811
  nil, nil, nil, nil, nil, nil, 52, nil, nil, 34,
812
- nil, nil, nil, nil, 61, nil, nil, nil, 24, 24,
813
- 24, nil, nil, nil, 2, 2, 2, 2, nil, nil,
814
- 48, 59, nil, nil, 2, 2, 2, nil, 2, 2,
815
- 2, 48, nil, 16, 16, nil, 2, 2, 59, 2,
816
- nil, nil, nil, 58, 58, 58, nil, nil, nil, nil,
812
+ nil, nil, 62, nil, nil, nil, nil, 48, 59, nil,
813
+ nil, nil, nil, nil, 2, 2, 2, 2, 48, nil,
814
+ nil, nil, nil, 60, 2, 2, 2, nil, 2, 2,
815
+ 2, nil, nil, 16, 16, nil, 2, 2, nil, 2,
816
+ nil, 60, nil, nil, nil, nil, 59, 59, 59, nil,
817
817
  nil, nil, 2, 2, 2, nil, nil, nil, 2, nil,
818
818
  nil, nil, nil, 2, nil, nil, nil, nil, nil, nil,
819
819
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
820
- nil, nil, nil, 16, nil, nil, nil, nil, nil, nil,
821
- nil, nil, nil, 58, nil, nil, nil, nil, nil, nil,
822
- 58, nil, nil, nil, 58, 2, 15, nil, 2, nil,
823
- nil, 58, 20, nil, nil, nil, nil, nil, nil, nil,
820
+ nil, nil, nil, nil, nil, 16, nil, nil, nil, nil,
821
+ nil, nil, nil, nil, nil, nil, nil, nil, 59, nil,
822
+ nil, nil, nil, nil, nil, 59, 2, nil, nil, 59,
823
+ 2, 15, nil, nil, 20, nil, 59, nil, nil, nil,
824
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
824
825
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
825
826
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
826
- nil, nil, nil, nil, nil, nil, nil, nil, 20, nil,
827
- nil, nil, 52, nil, nil, nil, nil, nil, nil, 52,
828
- 52, 52, 34, 34, 34, nil, nil, nil, nil, nil,
827
+ 20, nil, nil, nil, 52, nil, nil, nil, nil, nil,
828
+ nil, 52, 52, 52, 34, 34, 34, nil, nil, nil,
829
829
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
830
- 2, 2, nil, nil, nil, 52, nil, nil, nil, nil,
830
+ nil, nil, 2, 2, nil, nil, nil, 52, nil, nil,
831
831
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
832
- nil, nil, nil, 52, 20, 20, 20, nil, nil, nil,
833
- nil, nil, nil, nil, nil, nil, 52, nil, 2, 34,
834
- 2, nil, 2, nil, nil, nil, nil, nil, nil, nil,
835
- nil, nil, 2, nil, nil, nil, nil, nil, nil, nil,
836
- nil, nil, nil, 52, nil, nil, nil, nil, 2, nil,
837
- nil, 2, 2 ]
832
+ nil, nil, nil, nil, nil, 52, 20, 20, 20, nil,
833
+ nil, nil, nil, nil, nil, nil, nil, nil, 52, nil,
834
+ 2, 34, 2, nil, 2, nil, nil, nil, nil, nil,
835
+ nil, nil, nil, nil, 2, nil, nil, nil, nil, nil,
836
+ nil, nil, nil, nil, nil, 52, nil, nil, nil, nil,
837
+ 2, nil, nil, 2, 2 ]
838
838
 
839
839
  racc_goto_pointer = [
840
- nil, 31, -2, 16, 42, 44, 15, nil, nil, nil,
841
- nil, nil, nil, -139, nil, -29, -42, -188, -198, -224,
842
- -22, -194, -218, -210, -169, nil, -211, -210, nil, nil,
843
- nil, nil, -209, -256, -26, -311, -331, -150, -190, -204,
844
- -248, nil, -296, -308, -369, 46, -16, nil, -34, 32,
845
- -137, nil, -29, -169, -227, nil, -181, -32, -32, -46,
846
- nil, -21, nil, -145, -182, -106, nil, nil, nil, -169,
847
- -156, nil, nil, nil, -123, 60 ]
840
+ nil, 31, -2, 9, 30, 36, 8, nil, nil, nil,
841
+ nil, nil, nil, -139, nil, -26, -42, -192, -198, -209,
842
+ -22, -194, -228, -210, -227, nil, -210, -204, nil, nil,
843
+ nil, nil, -203, -256, -26, -303, -333, -142, -186, -200,
844
+ -244, nil, -291, -306, -374, 46, -16, nil, -47, 32,
845
+ -147, nil, -29, -172, -232, nil, -182, -31, -86, -29,
846
+ -44, nil, -23, nil, -145, -173, -100, nil, nil, nil,
847
+ -180, -142, nil, nil, nil, -133, 65 ]
848
848
 
849
849
  racc_goto_default = [
850
- nil, nil, 44, nil, nil, 409, 297, 107, 108, 109,
851
- 110, 111, 112, nil, 36, 285, 115, nil, nil, nil,
852
- nil, nil, nil, 258, 24, 287, 288, 289, 290, 291,
853
- 292, 293, 296, nil, 144, nil, nil, nil, nil, nil,
854
- nil, 320, nil, nil, nil, nil, nil, 51, nil, nil,
855
- 52, 345, 145, nil, nil, 268, nil, nil, 31, 7,
856
- 29, nil, 88, 158, 146, 147, 148, 149, 150, 151,
857
- 152, 153, 154, 155, nil, nil ]
850
+ nil, nil, 44, nil, nil, 411, 299, 107, 108, 109,
851
+ 110, 111, 112, nil, 36, 287, 115, nil, nil, nil,
852
+ nil, nil, nil, 260, 24, 289, 290, 291, 292, 293,
853
+ 294, 295, 298, nil, 144, nil, nil, nil, nil, nil,
854
+ nil, 322, nil, nil, nil, nil, nil, 51, nil, nil,
855
+ 52, 347, 145, nil, nil, 270, nil, nil, nil, 31,
856
+ 7, 29, nil, 88, 158, 146, 147, 148, 149, 150,
857
+ 151, 152, 153, 154, 155, nil, nil ]
858
858
 
859
859
  racc_reduce_table = [
860
860
  0, 0, :racc_error,
@@ -1017,45 +1017,45 @@ racc_reduce_table = [
1017
1017
  1, 83, :_reduce_none,
1018
1018
  3, 83, :_reduce_158,
1019
1019
  3, 83, :_reduce_159,
1020
- 1, 140, :_reduce_160,
1021
- 1, 140, :_reduce_161,
1022
- 1, 140, :_reduce_162,
1023
- 1, 140, :_reduce_163,
1024
- 1, 140, :_reduce_164,
1025
- 1, 140, :_reduce_165,
1026
- 1, 140, :_reduce_166,
1027
- 1, 140, :_reduce_167,
1028
- 1, 140, :_reduce_168,
1029
- 1, 140, :_reduce_169,
1030
- 1, 140, :_reduce_170,
1031
- 1, 140, :_reduce_171,
1032
- 1, 140, :_reduce_172,
1033
- 1, 140, :_reduce_173,
1034
- 1, 140, :_reduce_174,
1035
- 1, 140, :_reduce_175,
1036
- 1, 140, :_reduce_176,
1037
- 4, 140, :_reduce_177,
1038
- 2, 140, :_reduce_178,
1039
- 3, 140, :_reduce_179,
1040
- 3, 140, :_reduce_180,
1041
- 4, 140, :_reduce_181,
1042
- 2, 140, :_reduce_182,
1043
- 2, 140, :_reduce_183,
1044
- 1, 140, :_reduce_none,
1020
+ 1, 141, :_reduce_160,
1021
+ 1, 141, :_reduce_161,
1022
+ 1, 141, :_reduce_162,
1023
+ 1, 141, :_reduce_163,
1024
+ 1, 141, :_reduce_164,
1025
+ 1, 141, :_reduce_165,
1026
+ 1, 141, :_reduce_166,
1027
+ 1, 141, :_reduce_167,
1028
+ 1, 141, :_reduce_168,
1029
+ 1, 141, :_reduce_169,
1030
+ 1, 141, :_reduce_170,
1031
+ 1, 141, :_reduce_171,
1032
+ 1, 141, :_reduce_172,
1033
+ 1, 141, :_reduce_173,
1034
+ 1, 141, :_reduce_174,
1035
+ 1, 141, :_reduce_175,
1036
+ 1, 141, :_reduce_176,
1037
+ 4, 141, :_reduce_177,
1038
+ 2, 141, :_reduce_178,
1039
+ 3, 141, :_reduce_179,
1040
+ 3, 141, :_reduce_180,
1041
+ 4, 141, :_reduce_181,
1042
+ 2, 141, :_reduce_182,
1043
+ 2, 141, :_reduce_183,
1044
+ 1, 141, :_reduce_none,
1045
1045
  1, 101, :_reduce_185,
1046
1046
  3, 101, :_reduce_186,
1047
- 3, 141, :_reduce_187,
1048
- 1, 142, :_reduce_188,
1049
- 3, 142, :_reduce_189,
1050
- 3, 143, :_reduce_190,
1051
- 3, 143, :_reduce_191,
1052
- 3, 143, :_reduce_192,
1053
- 2, 143, :_reduce_193,
1054
- 3, 143, :_reduce_194,
1055
- 3, 143, :_reduce_195,
1056
- 3, 143, :_reduce_196,
1057
- 1, 144, :_reduce_none,
1058
- 2, 144, :_reduce_198,
1047
+ 3, 142, :_reduce_187,
1048
+ 1, 143, :_reduce_188,
1049
+ 3, 143, :_reduce_189,
1050
+ 3, 144, :_reduce_190,
1051
+ 3, 144, :_reduce_191,
1052
+ 3, 144, :_reduce_192,
1053
+ 2, 144, :_reduce_193,
1054
+ 3, 144, :_reduce_194,
1055
+ 3, 144, :_reduce_195,
1056
+ 3, 144, :_reduce_196,
1057
+ 1, 145, :_reduce_none,
1058
+ 2, 145, :_reduce_198,
1059
1059
  1, 115, :_reduce_none,
1060
1060
  1, 115, :_reduce_none,
1061
1061
  1, 115, :_reduce_none,
@@ -1067,45 +1067,46 @@ racc_reduce_table = [
1067
1067
  3, 129, :_reduce_207,
1068
1068
  1, 129, :_reduce_208,
1069
1069
  1, 129, :_reduce_none,
1070
- 3, 146, :_reduce_210,
1071
- 1, 146, :_reduce_211,
1072
- 1, 146, :_reduce_none,
1073
- 3, 148, :_reduce_213,
1074
- 1, 148, :_reduce_214,
1075
- 1, 148, :_reduce_none,
1076
- 3, 150, :_reduce_216,
1077
- 1, 150, :_reduce_217,
1078
- 1, 150, :_reduce_none,
1079
- 0, 151, :_reduce_219,
1080
- 3, 151, :_reduce_220,
1081
- 1, 151, :_reduce_221,
1082
- 3, 151, :_reduce_222,
1083
- 1, 151, :_reduce_223,
1084
- 1, 151, :_reduce_224,
1085
- 2, 145, :_reduce_225,
1086
- 3, 147, :_reduce_226,
1087
- 3, 149, :_reduce_227,
1088
- 3, 152, :_reduce_228,
1089
- 4, 153, :_reduce_229,
1090
- 3, 154, :_reduce_230,
1091
- 0, 155, :_reduce_none,
1092
- 1, 155, :_reduce_none,
1093
- 1, 155, :_reduce_none,
1094
- 1, 155, :_reduce_none,
1095
- 2, 105, :_reduce_235,
1070
+ 3, 147, :_reduce_210,
1071
+ 1, 147, :_reduce_211,
1072
+ 1, 147, :_reduce_none,
1073
+ 3, 149, :_reduce_213,
1074
+ 1, 149, :_reduce_214,
1075
+ 1, 149, :_reduce_none,
1076
+ 3, 151, :_reduce_216,
1077
+ 1, 151, :_reduce_217,
1078
+ 1, 151, :_reduce_none,
1079
+ 0, 152, :_reduce_219,
1080
+ 3, 152, :_reduce_220,
1081
+ 1, 152, :_reduce_221,
1082
+ 3, 152, :_reduce_222,
1083
+ 1, 152, :_reduce_223,
1084
+ 1, 152, :_reduce_224,
1085
+ 2, 146, :_reduce_225,
1086
+ 3, 148, :_reduce_226,
1087
+ 3, 150, :_reduce_227,
1088
+ 3, 153, :_reduce_228,
1089
+ 4, 154, :_reduce_229,
1090
+ 3, 155, :_reduce_230,
1091
+ 0, 156, :_reduce_none,
1096
1092
  1, 156, :_reduce_none,
1097
1093
  1, 156, :_reduce_none,
1098
1094
  1, 156, :_reduce_none,
1095
+ 2, 105, :_reduce_235,
1096
+ 1, 157, :_reduce_none,
1097
+ 1, 157, :_reduce_none,
1098
+ 1, 157, :_reduce_none,
1099
1099
  2, 118, :_reduce_239,
1100
1100
  2, 97, :_reduce_240,
1101
- 0, 139, :_reduce_241,
1102
- 1, 139, :_reduce_242,
1103
- 2, 139, :_reduce_243,
1104
- 1, 139, :_reduce_244 ]
1101
+ 2, 139, :_reduce_241,
1102
+ 0, 140, :_reduce_242,
1103
+ 1, 140, :_reduce_243,
1104
+ 2, 140, :_reduce_244,
1105
+ 1, 140, :_reduce_245 ]
1105
1106
 
1106
- racc_reduce_n = 245
1107
+ racc_reduce_n = 246
1107
1108
 
1108
- racc_shift_n = 416
1109
+ racc_shift_n = 418
1109
1110
 
1110
1111
  racc_token_table = {
1111
1112
  false => 0,
@@ -1350,6 +1351,7 @@ Racc_token_to_s_table = [
1350
1351
  "type_param_check",
1351
1352
  "type_param_variance",
1352
1353
  "type_params0",
1354
+ "type_alias_name",
1353
1355
  "namespace",
1354
1356
  "simple_type",
1355
1357
  "record_type",
@@ -3179,22 +3181,34 @@ module_eval(<<'.,.,', 'parser.y', 1032)
3179
3181
 
3180
3182
  module_eval(<<'.,.,', 'parser.y', 1041)
3181
3183
  def _reduce_241(val, _values, result)
3182
- result = nil
3184
+ namespace = val[0]&.value || Namespace.empty
3185
+ name = val[1].value.to_sym
3186
+ type_name = TypeName.new(namespace: namespace, name: name)
3187
+ location = (loc0 = val[0]&.location) ? loc0 + val[1].location : val[1].location
3188
+ result = LocatedValue.new(value: type_name, location: location)
3183
3189
 
3184
3190
  result
3185
3191
  end
3186
3192
  .,.,
3187
3193
 
3188
- module_eval(<<'.,.,', 'parser.y', 1044)
3194
+ module_eval(<<'.,.,', 'parser.y', 1051)
3189
3195
  def _reduce_242(val, _values, result)
3190
- result = LocatedValue.new(value: Namespace.root, location: val[0].location)
3196
+ result = nil
3191
3197
 
3192
3198
  result
3193
3199
  end
3194
3200
  .,.,
3195
3201
 
3196
- module_eval(<<'.,.,', 'parser.y', 1047)
3202
+ module_eval(<<'.,.,', 'parser.y', 1054)
3197
3203
  def _reduce_243(val, _values, result)
3204
+ result = LocatedValue.new(value: Namespace.root, location: val[0].location)
3205
+
3206
+ result
3207
+ end
3208
+ .,.,
3209
+
3210
+ module_eval(<<'.,.,', 'parser.y', 1057)
3211
+ def _reduce_244(val, _values, result)
3198
3212
  namespace = Namespace.parse(val[1].value).absolute!
3199
3213
  result = LocatedValue.new(value: namespace, location: val[0].location + val[1].location)
3200
3214
 
@@ -3202,8 +3216,8 @@ module_eval(<<'.,.,', 'parser.y', 1047)
3202
3216
  end
3203
3217
  .,.,
3204
3218
 
3205
- module_eval(<<'.,.,', 'parser.y', 1051)
3206
- def _reduce_244(val, _values, result)
3219
+ module_eval(<<'.,.,', 'parser.y', 1061)
3220
+ def _reduce_245(val, _values, result)
3207
3221
  namespace = Namespace.parse(val[0].value)
3208
3222
  result = LocatedValue.new(value: namespace, location: val[0].location)
3209
3223