From cd0091c04541b32296cdf9eb28e5e79ba81d3151 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Thu, 17 Dec 2009 09:07:42 -0500 Subject: [PATCH] added the ability to super() --- TODO | 2 + examples/code.cs | 10 +- lib/coffee_script/grammar.y | 16 +- lib/coffee_script/lexer.rb | 3 +- lib/coffee_script/nodes.rb | 41 +- lib/coffee_script/parser.rb | 1558 ++++++++++++++++++----------------- 6 files changed, 856 insertions(+), 774 deletions(-) diff --git a/TODO b/TODO index 8fc6ae7c..9878620e 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,7 @@ TODO: +* Super in methods. (reserve it). + * Need *way* better syntax errors. * Is it possible to close blocks (functions, ifs, trys) without an explicit diff --git a/examples/code.cs b/examples/code.cs index 621e8e17..aa497f1e 100644 --- a/examples/code.cs +++ b/examples/code.cs @@ -128,4 +128,12 @@ three_to_six: zero_to_nine[3, 6] # Multiline strings with inner quotes. story: "Lorem ipsum dolor \"sit\" amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna -aliquam erat volutpat. Ut wisi enim ad." \ No newline at end of file +aliquam erat volutpat. Ut wisi enim ad." + +# Calling super from an overridden method. +Greeter: => . # Create the parent object. +Greeter.prototype.hello: name => alert('Hello ' + name). # Define a "hello" method. +Exclaimer: name => this.name: name. # Create the child object. +Exclaimer.prototype: new Greeter() # Set the child to inherit from the parent. +Exclaimer.prototype.hello: => super(this.name + "!"). # The child's "hello" calls the parent's via "super". +(new Exclaimer('Bob')).hello() # Run it. diff --git a/lib/coffee_script/grammar.y b/lib/coffee_script/grammar.y index 2ff987d3..2fb3fe7f 100644 --- a/lib/coffee_script/grammar.y +++ b/lib/coffee_script/grammar.y @@ -10,6 +10,7 @@ token TRY CATCH FINALLY THROW token BREAK CONTINUE token FOR IN WHILE token SWITCH CASE DEFAULT +token SUPER token NEWLINE token JS @@ -149,10 +150,16 @@ rule # Method definition Code: - ParamList "=>" Expressions "." { result = CodeNode.new(val[0], val[2]) } - | "=>" Expressions "." { result = CodeNode.new([], val[1]) } + ParamList "=>" CodeBody "." { result = CodeNode.new(val[0], val[2]) } + | "=>" CodeBody "." { result = CodeNode.new([], val[1]) } ; + CodeBody: + /* nothing */ { result = Nodes.new([]) } + | Expressions { result = val[0] } + ; + + ParamList: PARAM { result = val } | ParamList "," PARAM { result = val[0] << val[2] } @@ -196,12 +203,17 @@ rule Call: Invocation { result = val[0] } | NEW Invocation { result = val[1].new_instance } + | Super { result = val[0] } ; Invocation: Value "(" ArgList ")" { result = CallNode.new(val[0], val[2]) } ; + Super: + SUPER "(" ArgList ")" { result = CallNode.new(:super, val[2]) } + ; + # An Array. Array: "[" ArgList "]" { result = ArrayNode.new(val[1]) } diff --git a/lib/coffee_script/lexer.rb b/lib/coffee_script/lexer.rb index debd3aeb..7269d54c 100644 --- a/lib/coffee_script/lexer.rb +++ b/lib/coffee_script/lexer.rb @@ -7,7 +7,8 @@ class Lexer "try", "catch", "finally", "throw", "break", "continue", "for", "in", "while", - "switch", "case", "default"] + "switch", "case", "default", + "super"] IDENTIFIER = /\A([a-zA-Z$_]\w*)/ NUMBER = /\A([0-9]+(\.[0-9]+)?)/ diff --git a/lib/coffee_script/nodes.rb b/lib/coffee_script/nodes.rb index 9a9bfc09..96c1da76 100644 --- a/lib/coffee_script/nodes.rb +++ b/lib/coffee_script/nodes.rb @@ -122,6 +122,8 @@ end # receiver.method(argument1, argument2) # class CallNode < Node + LEADING_DOT = /\A\./ + def initialize(variable, arguments=[]) @variable, @arguments = variable, arguments end @@ -131,14 +133,26 @@ class CallNode < Node self end + def super? + @variable == :super + end + def compile(indent, scope, opts={}) args = @arguments.map{|a| a.compile(indent, scope, :no_paren => true) }.join(', ') + return compile_super(args, indent, scope, opts) if super? prefix = @new ? "new " : '' "#{prefix}#{@variable.compile(indent, scope)}(#{args})" end + + def compile_super(args, indent, scope, opts) + methname = opts[:last_assign].sub(LEADING_DOT, '') + "this.constructor.prototype.#{methname}.call(this, #{args})" + end end class ValueNode < Node + attr_reader :last + def initialize(name, properties=[]) @name, @properties = name, properties end @@ -153,9 +167,11 @@ class ValueNode < Node end def compile(indent, scope, opts={}) - [@name, @properties].flatten.map { |v| + parts = [@name, @properties].flatten.map do |v| v.respond_to?(:compile) ? v.compile(indent, scope) : v.to_s - }.join('') + end + @last = parts.last + parts.join('') end end @@ -200,16 +216,18 @@ class AssignNode < Node end def compile(indent, scope, opts={}) - value = @value.compile(indent + TAB, scope) + name = @variable.compile(indent, scope) if @variable.respond_to?(:compile) + last = @variable.respond_to?(:last) ? @variable.last : name + opts = opts.merge({:assign => name, :last_assign => last}) + value = @value.compile(indent, scope, opts) return "#{@variable}: #{value}" if @context == :object - name = @variable.compile(indent, scope) return "#{name} = #{value}" if @variable.properties? - defined = scope.find(name) - postfix = !defined && opts[:return] ? ";\n#{indent}return #{name}" : '' - def_part = defined ? "" : "var #{name};\n#{indent}" - return def_part + @value.compile(indent, scope, opts.merge(:assign => name)) if @value.custom_assign? - def_part = defined ? name : "var #{name}" - "#{def_part} = #{@value.compile(indent, scope)}#{postfix}" + defined = scope.find(name) + postfix = !defined && opts[:return] ? ";\n#{indent}return #{name}" : '' + def_part = defined ? "" : "var #{name};\n#{indent}" + return def_part + @value.compile(indent, scope, opts) if @value.custom_assign? + def_part = defined ? name : "var #{name}" + "#{def_part} = #{@value.compile(indent, scope, opts)}#{postfix}" end end @@ -260,7 +278,8 @@ class CodeNode < Node end def compile(indent, scope, opts={}) - code = @body.compile(indent + TAB, Scope.new(scope), {:return => true}) + opts = opts.merge(:return => true) + code = @body.compile(indent + TAB, Scope.new(scope), opts) "function(#{@params.join(', ')}) {\n#{code}\n#{indent}}" end end diff --git a/lib/coffee_script/parser.rb b/lib/coffee_script/parser.rb index 259c7e5b..bf6bac38 100644 --- a/lib/coffee_script/parser.rb +++ b/lib/coffee_script/parser.rb @@ -7,7 +7,7 @@ require 'racc/parser.rb' class Parser < Racc::Parser -module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 285) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 297) def parse(code, show_tokens=false) # @yydebug = true @tokens = Lexer.new.tokenize(code) @@ -22,145 +22,152 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 285) ##### State transition tables begin ### clist = [ -'11,6,192,69,28,35,38,42,47,4,6,171,131,18,21,27,32,166,181,46,3,8,117', -'69,16,20,23,29,187,43,69,2,7,176,108,112,120,26,125,23,29,191,23,29', -'184,23,29,69,180,172,203,23,29,41,72,1,51,10,23,29,34,167,41,11,1,166', -'10,28,35,38,42,47,4,6,72,123,18,21,27,32,64,72,46,3,8,105,107,16,20', -'177,23,29,43,51,2,7,121,122,72,51,26,196,105,84,87,89,92,94,96,97,99', -'101,77,79,83,86,88,91,93,95,,23,29,34,111,41,11,1,109,10,28,35,38,42', -'47,4,6,23,29,18,21,27,32,23,29,46,3,8,58,59,16,20,,23,29,43,154,2,7', -'84,87,89,175,26,84,87,89,92,94,96,97,99,101,77,79,83,86,23,29,,154,', -'155,198,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,23,29,18,21,27,32,23', -'29,46,3,8,,,16,20,197,23,29,43,,2,7,162,23,29,,26,84,87,89,92,94,96', -'97,99,101,77,79,83,86,84,87,89,92,94,84,87,89,,34,,41,11,1,,10,28,35', -'38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,178,23,29,43,,2,7,,,,,26', -'84,87,89,92,94,96,97,99,101,77,79,83,86,84,87,89,92,94,,,23,29,34,,41', -'11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2', -'7,,,,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,84,87,89,92,94,,,,', -'34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,', -',43,,2,7,,,,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,84,87,89,92', -'94,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8', -',,16,20,,,,43,,2,7,,,,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,,', -',,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16', -'20,,,,43,,2,7,,,,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,,,,,,,', -',,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20', -',,,43,,2,7,,,,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,,,,,,,,23', -'29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20', -',,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42', -'47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,', -',,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8', -',,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35', -'38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,', -',,,,,,,,,,,,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32', -',,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23,29,34,,41', -'11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2', -'7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,', -'18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23', -'29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20', -',,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42', -'47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,', -',,,,,,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46', -'3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10', -'28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26', -',,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27', -'32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23,29,34,', -'41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43', -',2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23,29,34,,41,11,1,,10,28,35,38,42,47', -'4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,', -',,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16', -'20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23,29,34,,41,11,1,,10,28,35', -'38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,', -',,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46', -'3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10', -'28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26', -',,,,,,,,,,,,,,,,,,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21', -'27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41', -'11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2', -'7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,', -'18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,', -',34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,', -',,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,23,29,34,,41,11,1,,10,28,35,38', -'42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,', -',,,,,,,,,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,', -'46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,', -'10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,', -'26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21', -'27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41', -'11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2', -'7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,', -'18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,', -',34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,', -',,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47', -'4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,', -',,,,,23,29,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8', -',,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35', -'38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,', -',,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46', -'3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10', -'28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26', -',,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27', -'32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11', -'1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,', -',,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18', -'21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34', -',41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43', -',2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6', -',,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,', -',,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20', -',,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42', -'47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,', -',,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8', -',,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35', -'38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,', -',,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46', -'3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10', -'28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26', -',,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27', -'32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11', -'1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,', -',,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18', -'21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34', -',41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43', -',2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42,47,4,6', -',,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,', -',,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27,32,,,46,3,8,,,16,20', -',,,43,,2,7,,,,,26,,,,,,,,,,,,,,,,,,,,,,,34,,41,11,1,,10,28,35,38,42', -'47,4,6,,,18,21,27,32,,,46,3,8,,,16,20,,,,43,,2,7,,,81,,26,90,,,,,,,', -',,,,,,,,,,,80,,,34,,41,,1,,10,,84,87,89,92,94,96,97,99,101,77,79,83', -'86,88,91,93,95,,98,100,76,78,82,85,81,,,90,,,193,,,,,,,,,,,,,,,,80,', -',,,,,,,,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100', -'76,78,82,85,81,,114,90,169,,170,,,,,,,,,,,,,,,,80,,,,,,81,,114,90,,84', -'87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100,76,78,82', -'85,,23,29,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100', -'76,78,82,85,,23,29,81,,114,90,,,,,,,,,,,,,,,,,,,80,,,,,,81,,114,90,', -'84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100,76,78', -'82,85,,23,29,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98', -'100,76,78,82,85,205,23,29,90,,,,,,,,,,,,,,,,,,,80,,,,,,194,,,90,,84', -'87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100,76,78,82', -'85,206,,,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100', -'76,78,82,85,195,81,,,90,,,,,,,,,,,,,,,,,,,80,,,,,,81,,,90,,84,87,89', -'92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100,76,78,82,85,,,', -',84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82', -'85,81,,,90,,,,,,,,,,,,,,,,,,,80,,,,,,81,,,90,,84,87,89,92,94,96,97,99', -'101,77,79,83,86,88,91,93,95,80,98,100,76,78,82,85,-110,,,,84,87,89,92', -'94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,81,,,90', -',84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100,76,78', -'82,85,-110,,,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98', -'100,76,78,82,85,81,,,,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91', -'93,95,,98,100,76,78,82,85,,,,,84,87,89,92,94,96,97,99,101,77,79,83,86', -'88,91,93,95,,98,100,76,78,82,85,81,,,90,,,,,,,,,,,,,,,,,,,80,,,,,,81', -',,90,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,80,98,100', -'76,78,82,85,-110,,,,84,87,89,92,94,96,97,99,101,77,79,83,86,88,91,93', -'95,,98,100,76,78,82,85,81,,,90,,84,87,89,92,94,96,97,99,101,77,79,83', -'86,88,91,93,95,80,98,100,76,78,82,85,,,,,84,87,89,92,94,96,97,99,101', -'77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89,92,94,96,97,99', -'101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89,92,94,96,97', -'99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89,92,94,96', -'97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89,92,94', -'96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89,92', -'94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,84,87,89', -'92,94,96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85' ] - racc_action_table = arr = Array.new(4821, nil) +'10,6,199,53,26,33,39,43,48,2,6,178,125,18,21,25,30,174,188,46,1,8,27', +'34,17,20,27,34,37,53,49,123,7,12,53,53,27,34,32,162,170,183,198,27,34', +'177,185,27,34,187,179,93,96,99,47,57,5,112,14,27,34,38,202,47,10,5,119', +'14,26,33,39,43,48,2,6,56,128,18,21,25,30,57,193,46,1,8,57,57,17,20,54', +'54,37,60,49,78,7,12,184,27,34,74,32,129,130,93,96,99,101,103,105,106', +'108,84,86,90,92,95,98,100,102,104,132,27,34,38,118,47,10,5,116,14,26', +'33,39,43,48,2,6,27,34,18,21,25,30,27,34,46,1,8,27,34,17,20,27,34,37', +'162,49,60,7,12,138,163,27,34,32,93,96,99,101,103,105,106,108,84,86,90', +'92,95,27,34,60,162,174,160,175,27,34,38,,47,10,5,,14,26,33,39,43,48', +'2,6,67,68,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,203,27,34,,32', +'93,96,99,101,103,105,106,108,84,86,90,92,95,93,96,99,101,103,93,96,99', +',38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,', +',37,,49,,7,12,191,27,34,,32,93,96,99,101,103,105,106,108,84,86,90,92', +'95,93,96,99,101,103,204,27,34,,38,,47,10,5,,14,26,33,39,43,48,2,6,,', +'18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,209,27,34,,32,93,96,99,101', +'103,105,106,108,84,86,90,92,95,93,96,99,101,103,,,,,38,,47,10,5,,14', +'26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,', +',32,93,96,99,101,103,105,106,108,84,86,90,92,95,93,96,99,101,103,,,27', +'34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20', +',,37,,49,,7,12,,,,,32,93,96,99,101,103,105,106,108,84,86,90,92,95,,', +',,,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8', +',,17,20,,,37,,49,,7,12,,,,,32,93,96,99,101,103,105,106,108,84,86,90', +'92,95,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46', +'1,8,,,17,20,,,37,,49,,7,12,,,,,32,93,96,99,101,103,105,106,108,84,86', +'90,92,95,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,', +',46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10', +'5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7', +'12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,', +',18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,', +',,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17', +'20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,27,34,38,,47,10,5,,14,26', +'33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32', +',,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25', +'30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,27,34', +'38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,', +'37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43', +'48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,', +',,,,,,,,,,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,', +',46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,27,34,38,', +'47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,', +'49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,27,34,38,,47,10,5,,14,26,33,39,43', +'48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,', +',,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46', +'1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5', +',14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12', +',,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18', +'21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,', +',,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20', +',,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39', +'43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,', +',,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,', +'46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10', +'5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7', +'12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,', +',18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,', +',,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8', +',,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14', +'26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,', +',32,,,,,,,,,,,,,,,,,,,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18', +'21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,', +'27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17', +'20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,27,34,38,,47,10,5,,14,26', +'33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32', +',,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25', +'30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,', +'47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,', +'49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48', +'2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,', +',,,,,,,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46', +'1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5', +',14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12', +',,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18', +'21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,', +',,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20', +',,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39', +'43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,', +',,,,,,,,,,,,,,,27,34,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30', +',,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47', +'10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49', +',7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2', +'6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,', +',,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,', +',17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26', +'33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32', +',,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25', +'30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,', +'47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,', +'49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48', +'2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,', +',,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8', +',,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14', +'26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,', +',32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21', +'25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38', +',47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37', +',49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48', +'2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,', +',,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8', +',,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14', +'26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,', +',32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21', +'25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38', +',47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37', +',49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48', +'2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,', +',,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8', +',,17,20,,,37,,49,,7,12,,,,,32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14', +'26,33,39,43,48,2,6,,,18,21,25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,,,', +',32,,,,,,,,,,,,,,,,,,,,,,,38,,47,10,5,,14,26,33,39,43,48,2,6,,,18,21', +'25,30,,,46,1,8,,,17,20,,,37,,49,,7,12,88,,,97,32,,,,,,,,,,,,,,,,,,87', +',,,,38,,47,,5,,14,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100', +'102,104,,107,83,85,89,91,94,88,,,97,,,194,,,,,,,,,,,,,,,,87,,,,,,,,', +',,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,,107,83', +'85,89,91,94,88,,121,97,165,,164,,,,,,,,,,,,,,,,87,,,,,,,88,,121,97,', +'93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,87,107,83', +'85,89,91,94,,27,34,88,,93,96,99,101,103,105,106,108,84,86,90,92,95,98', +'100,102,104,,107,83,85,89,91,94,,27,34,88,,121,97,,93,96,99,101,103', +'105,106,108,84,86,90,92,95,98,100,102,104,87,107,83,85,89,91,94,88,', +'121,97,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,87', +'107,83,85,89,91,94,200,27,34,97,,93,96,99,101,103,105,106,108,84,86', +'90,92,95,98,100,102,104,87,107,83,85,89,91,94,211,27,34,97,,93,96,99', +'101,103,105,106,108,84,86,90,92,95,98,100,102,104,87,107,83,85,89,91', +'94,201,-114,,,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102', +'104,,107,83,85,89,91,94,212,88,,,97,,93,96,99,101,103,105,106,108,84', +'86,90,92,95,98,100,102,104,87,107,83,85,89,91,94,88,,,97,,93,96,99,101', +'103,105,106,108,84,86,90,92,95,98,100,102,104,87,107,83,85,89,91,94', +'88,,,97,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104', +'87,107,83,85,89,91,94,88,,,97,,93,96,99,101,103,105,106,108,84,86,90', +'92,95,98,100,102,104,87,107,83,85,89,91,94,88,,,97,,93,96,99,101,103', +'105,106,108,84,86,90,92,95,98,100,102,104,87,107,83,85,89,91,94,88,', +',97,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,87,107', +'83,85,89,91,94,-114,,,,,93,96,99,101,103,105,106,108,84,86,90,92,95', +'98,100,102,104,,107,83,85,89,91,94,88,,,97,,93,96,99,101,103,105,106', +'108,84,86,90,92,95,98,100,102,104,87,107,83,85,89,91,94,88,,,97,,93', +'96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,87,107,83,85', +'89,91,94,-114,,,,,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100', +'102,104,,107,83,85,89,91,94,,,,,,93,96,99,101,103,105,106,108,84,86', +'90,92,95,98,100,102,104,,107,83,85,89,91,94,93,96,99,101,103,105,106', +'108,84,86,90,92,95,98,100,102,104,,107,83,85,89,91,94,93,96,99,101,103', +'105,106,108,84,86,90,92,95,98,100,102,104,,107,83,85,89,91,94,93,96', +'99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,,107,83,85,89,91', +'94,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104,,107,83', +'85,89,91,94,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100,102,104', +',107,83,85,89,91,94,93,96,99,101,103,105,106,108,84,86,90,92,95,98,100', +'102,104,,107,83,85,89,91,94' ] + racc_action_table = arr = Array.new(4817, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -170,166 +177,171 @@ clist = [ end clist = [ -'0,21,183,62,0,0,0,0,0,0,0,131,80,0,0,0,0,164,164,0,0,0,59,33,0,0,56', -'56,172,0,63,0,0,161,51,56,64,0,74,74,74,183,183,183,168,168,168,49,164', -'131,200,200,200,21,62,21,110,21,0,0,0,121,0,205,0,119,0,205,205,205', -'205,205,205,205,33,69,205,205,205,205,25,63,205,205,205,63,49,205,205', -'161,161,161,205,111,205,205,68,68,49,1,205,187,49,157,157,157,157,157', -'157,157,157,157,157,157,157,157,157,157,157,157,,52,52,205,52,205,2', -'205,52,205,2,2,2,2,2,2,2,68,68,2,2,2,2,67,67,2,2,2,12,12,2,2,,156,156', -'2,156,2,2,143,143,143,156,2,146,146,146,146,146,146,146,146,146,146', -'146,146,146,102,102,,102,,102,189,189,189,2,,2,7,2,,2,7,7,7,7,7,7,7', -'199,199,7,7,7,7,37,37,7,7,7,,,7,7,188,188,188,7,,7,7,116,116,116,,7', -'128,128,128,128,128,128,128,128,128,128,128,128,128,148,148,148,148', -'148,145,145,145,,7,,7,10,7,,7,10,10,10,10,10,10,10,,,10,10,10,10,,,10', -'10,10,,,10,10,163,163,163,10,,10,10,,,,,10,130,130,130,130,130,130,130', -'130,130,130,130,130,130,150,150,150,150,150,,,10,10,10,,10,11,10,,10', -'11,11,11,11,11,11,11,,,11,11,11,11,,,11,11,11,,,11,11,,,,11,,11,11,', -',,,11,134,134,134,134,134,134,134,134,134,134,134,134,134,147,147,147', -'147,147,,,,,11,,11,122,11,,11,122,122,122,122,122,122,122,,,122,122', -'122,122,,,122,122,122,,,122,122,,,,122,,122,122,,,,,122,137,137,137', -'137,137,137,137,137,137,137,137,137,137,152,152,152,152,152,,,122,122', -'122,,122,16,122,,122,16,16,16,16,16,16,16,,,16,16,16,16,,,16,16,16,', -',16,16,,,,16,,16,16,,,,,16,144,144,144,144,144,144,144,144,144,144,144', -'144,144,,,,,,,,,,16,,16,20,16,,16,20,20,20,20,20,20,20,,,20,20,20,20', -',,20,20,20,,,20,20,,,,20,,20,20,,,,,20,142,142,142,142,142,142,142,142', -'142,142,142,142,142,,,,,,,,,,20,,20,118,20,,20,118,118,118,118,118,118', -'118,,,118,118,118,118,,,118,118,118,,,118,118,,,,118,,118,118,,,,,118', -'139,139,139,139,139,139,139,139,139,139,139,139,139,,,,,,,,118,118,118', -',118,153,118,,118,153,153,153,153,153,153,153,,,153,153,153,153,,,153', -'153,153,,,153,153,,,,153,,153,153,,,,,153,,,,,,,,,,,,,,,,,,,,,,,153', -',153,26,153,,153,26,26,26,26,26,26,26,,,26,26,26,26,,,26,26,26,,,26', -'26,,,,26,,26,26,,,,,26,,,,,,,,,,,,,,,,,,,,,,,26,,26,27,26,,26,27,27', -'27,27,27,27,27,,,27,27,27,27,,,27,27,27,,,27,27,,,,27,,27,27,,,,,27', -',,,,,,,,,,,,,,,,,,,,,,27,,27,31,27,,27,31,31,31,31,31,31,31,,,31,31', -'31,31,,,31,31,31,,,31,31,,,,31,,31,31,,,,,31,,,,,,,,,,,,,,,,,,,,,31', -'31,31,,31,32,31,,31,32,32,32,32,32,32,32,,,32,32,32,32,,,32,32,32,,', -'32,32,,,,32,,32,32,,,,,32,,,,,,,,,,,,,,,,,,,,,32,32,32,,32,196,32,,32', -'196,196,196,196,196,196,196,,,196,196,196,196,,,196,196,196,,,196,196', -',,,196,,196,196,,,,,196,,,,,,,,,,,,,,,,,,,,,,,196,,196,34,196,,196,34', -'34,34,34,34,34,34,,,34,34,34,34,,,34,34,34,,,34,34,,,,34,,34,34,,,,', -'34,,,,,,,,,,,,,,,,,,,,,34,34,34,,34,194,34,,34,194,194,194,194,194,194', -'194,,,194,194,194,194,,,194,194,194,,,194,194,,,,194,,194,194,,,,,194', -',,,,,,,,,,,,,,,,,,,,,,194,,194,113,194,,194,113,113,113,113,113,113', -'113,,,113,113,113,113,,,113,113,113,,,113,113,,,,113,,113,113,,,,,113', -',,,,,,,,,,,,,,,,,,,,113,113,113,,113,41,113,,113,41,41,41,41,41,41,41', -',,41,41,41,41,,,41,41,41,,,41,41,,,,41,,41,41,,,,,41,,,,,,,,,,,,,,,', -',,,,,,,41,,41,46,41,,41,46,46,46,46,46,46,46,,,46,46,46,46,,,46,46,46', -',,46,46,,,,46,,46,46,,,,,46,,,,,,,,,,,,,,,,,,,,,,,46,,46,192,46,,46', -'192,192,192,192,192,192,192,,,192,192,192,192,,,192,192,192,,,192,192', -',,,192,,192,192,,,,,192,,,,,,,,,,,,,,,,,,,,,192,192,192,,192,190,192', -',192,190,190,190,190,190,190,190,,,190,190,190,190,,,190,190,190,,,190', -'190,,,,190,,190,190,,,,,190,,,,,,,,,,,,,,,,,,,,,190,190,190,,190,154', -'190,,190,154,154,154,154,154,154,154,,,154,154,154,154,,,154,154,154', -',,154,154,,,,154,,154,154,,,,,154,,,,,,,,,,,,,,,,,,,,,,,154,,154,55', -'154,,154,55,55,55,55,55,55,55,,,55,55,55,55,,,55,55,55,,,55,55,,,,55', -',55,55,,,,,55,,,,,,,,,,,,,,,,,,,,,55,55,55,,55,108,55,,55,108,108,108', -'108,108,108,108,,,108,108,108,108,,,108,108,108,,,108,108,,,,108,,108', -'108,,,,,108,,,,,,,,,,,,,,,,,,,,,,,108,,108,107,108,,108,107,107,107', -'107,107,107,107,,,107,107,107,107,,,107,107,107,,,107,107,,,,107,,107', -'107,,,,,107,,,,,,,,,,,,,,,,,,,,,,,107,,107,58,107,,107,58,58,58,58,58', -'58,58,,,58,58,58,58,,,58,58,58,,,58,58,,,,58,,58,58,,,,,58,,,,,,,,,', -',,,,,,,,,,,58,58,58,,58,105,58,,58,105,105,105,105,105,105,105,,,105', -'105,105,105,,,105,105,105,,,105,105,,,,105,,105,105,,,,,105,,,,,,,,', -',,,,,,,,,,,,,,105,,105,101,105,,105,101,101,101,101,101,101,101,,,101', -'101,101,101,,,101,101,101,,,101,101,,,,101,,101,101,,,,,101,,,,,,,,', -',,,,,,,,,,,,,,101,,101,100,101,,101,100,100,100,100,100,100,100,,,100', -'100,100,100,,,100,100,100,,,100,100,,,,100,,100,100,,,,,100,,,,,,,,', -',,,,,,,,,,,,,,100,,100,181,100,,100,181,181,181,181,181,181,181,,,181', -'181,181,181,,,181,181,181,,,181,181,,,,181,,181,181,,,,,181,,,,,,,,', -',,,,,,,,,,,,181,181,181,,181,176,181,,181,176,176,176,176,176,176,176', -',,176,176,176,176,,,176,176,176,,,176,176,,,,176,,176,176,,,,,176,,', -',,,,,,,,,,,,,,,,,,176,176,176,,176,99,176,,176,99,99,99,99,99,99,99', -',,99,99,99,99,,,99,99,99,,,99,99,,,,99,,99,99,,,,,99,,,,,,,,,,,,,,,', -',,,,,,,99,,99,98,99,,99,98,98,98,98,98,98,98,,,98,98,98,98,,,98,98,98', -',,98,98,,,,98,,98,98,,,,,98,,,,,,,,,,,,,,,,,,,,,,,98,,98,97,98,,98,97', -'97,97,97,97,97,97,,,97,97,97,97,,,97,97,97,,,97,97,,,,97,,97,97,,,,', -'97,,,,,,,,,,,,,,,,,,,,,,,97,,97,171,97,,97,171,171,171,171,171,171,171', -',,171,171,171,171,,,171,171,171,,,171,171,,,,171,,171,171,,,,,171,,', -',,,,,,,,,,,,,,,,,,,,171,,171,169,171,,171,169,169,169,169,169,169,169', -',,169,169,169,169,,,169,169,169,,,169,169,,,,169,,169,169,,,,,169,,', -',,,,,,,,,,,,,,,,,,,,169,,169,72,169,,169,72,72,72,72,72,72,72,,,72,72', -'72,72,,,72,72,72,,,72,72,,,,72,,72,72,,,,,72,,,,,,,,,,,,,,,,,,,,,,,72', -',72,167,72,,72,167,167,167,167,167,167,167,,,167,167,167,167,,,167,167', -'167,,,167,167,,,,167,,167,167,,,,,167,,,,,,,,,,,,,,,,,,,,,167,167,167', -',167,75,167,,167,75,75,75,75,75,75,75,,,75,75,75,75,,,75,75,75,,,75', -'75,,,,75,,75,75,,,,,75,,,,,,,,,,,,,,,,,,,,,,,75,,75,76,75,,75,76,76', -'76,76,76,76,76,,,76,76,76,76,,,76,76,76,,,76,76,,,,76,,76,76,,,,,76', -',,,,,,,,,,,,,,,,,,,,,,76,,76,77,76,,76,77,77,77,77,77,77,77,,,77,77', -'77,77,,,77,77,77,,,77,77,,,,77,,77,77,,,,,77,,,,,,,,,,,,,,,,,,,,,,,77', -',77,78,77,,77,78,78,78,78,78,78,78,,,78,78,78,78,,,78,78,78,,,78,78', -',,,78,,78,78,,,,,78,,,,,,,,,,,,,,,,,,,,,,,78,,78,79,78,,78,79,79,79', -'79,79,79,79,,,79,79,79,79,,,79,79,79,,,79,79,,,,79,,79,79,,,,,79,,,', -',,,,,,,,,,,,,,,,,,,79,,79,166,79,,79,166,166,166,166,166,166,166,,,166', -'166,166,166,,,166,166,166,,,166,166,,,,166,,166,166,,,,,166,,,,,,,,', -',,,,,,,,,,,,,,166,,166,81,166,,166,81,81,81,81,81,81,81,,,81,81,81,81', -',,81,81,81,,,81,81,,,,81,,81,81,,,,,81,,,,,,,,,,,,,,,,,,,,,,,81,,81', -'82,81,,81,82,82,82,82,82,82,82,,,82,82,82,82,,,82,82,82,,,82,82,,,,82', -',82,82,,,,,82,,,,,,,,,,,,,,,,,,,,,,,82,,82,83,82,,82,83,83,83,83,83', -'83,83,,,83,83,83,83,,,83,83,83,,,83,83,,,,83,,83,83,,,,,83,,,,,,,,,', -',,,,,,,,,,,,,83,,83,84,83,,83,84,84,84,84,84,84,84,,,84,84,84,84,,,84', -'84,84,,,84,84,,,,84,,84,84,,,,,84,,,,,,,,,,,,,,,,,,,,,,,84,,84,85,84', -',84,85,85,85,85,85,85,85,,,85,85,85,85,,,85,85,85,,,85,85,,,,85,,85', -'85,,,,,85,,,,,,,,,,,,,,,,,,,,,,,85,,85,86,85,,85,86,86,86,86,86,86,86', -',,86,86,86,86,,,86,86,86,,,86,86,,,,86,,86,86,,,,,86,,,,,,,,,,,,,,,', -',,,,,,,86,,86,87,86,,86,87,87,87,87,87,87,87,,,87,87,87,87,,,87,87,87', -',,87,87,,,,87,,87,87,,,,,87,,,,,,,,,,,,,,,,,,,,,,,87,,87,88,87,,87,88', -'88,88,88,88,88,88,,,88,88,88,88,,,88,88,88,,,88,88,,,,88,,88,88,,,,', -'88,,,,,,,,,,,,,,,,,,,,,,,88,,88,89,88,,88,89,89,89,89,89,89,89,,,89', -'89,89,89,,,89,89,89,,,89,89,,,,89,,89,89,,,,,89,,,,,,,,,,,,,,,,,,,,', -',,89,,89,90,89,,89,90,90,90,90,90,90,90,,,90,90,90,90,,,90,90,90,,,90', -'90,,,,90,,90,90,,,,,90,,,,,,,,,,,,,,,,,,,,,,,90,,90,91,90,,90,91,91', -'91,91,91,91,91,,,91,91,91,91,,,91,91,91,,,91,91,,,,91,,91,91,,,,,91', -',,,,,,,,,,,,,,,,,,,,,,91,,91,92,91,,91,92,92,92,92,92,92,92,,,92,92', -'92,92,,,92,92,92,,,92,92,,,,92,,92,92,,,,,92,,,,,,,,,,,,,,,,,,,,,,,92', -',92,93,92,,92,93,93,93,93,93,93,93,,,93,93,93,93,,,93,93,93,,,93,93', -',,,93,,93,93,,,,,93,,,,,,,,,,,,,,,,,,,,,,,93,,93,94,93,,93,94,94,94', -'94,94,94,94,,,94,94,94,94,,,94,94,94,,,94,94,,,,94,,94,94,,,,,94,,,', -',,,,,,,,,,,,,,,,,,,94,,94,95,94,,94,95,95,95,95,95,95,95,,,95,95,95', -'95,,,95,95,95,,,95,95,,,,95,,95,95,,,,,95,,,,,,,,,,,,,,,,,,,,,,,95,', -'95,96,95,,95,96,96,96,96,96,96,96,,,96,96,96,96,,,96,96,96,,,96,96,', -',,96,,96,96,,,185,,96,185,,,,,,,,,,,,,,,,,,,185,,,96,,96,,96,,96,,185', -'185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,,185', -'185,185,185,185,185,124,,,124,,,185,,,,,,,,,,,,,,,,124,,,,,,,,,,,124', -'124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,,124', -'124,124,124,124,124,60,,60,60,124,,124,,,,,,,,,,,,,,,,60,,,,,,61,,61', -'61,,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,61,60,60,60,60', -'60,60,,60,60,,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,,61', -'61,61,61,61,61,,61,61,57,,57,57,,,,,,,,,,,,,,,,,,,57,,,,,,182,,182,182', -',57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,182,57,57,57,57', -'57,57,,57,57,,182,182,182,182,182,182,182,182,182,182,182,182,182,182', -'182,182,182,,182,182,182,182,182,182,202,182,182,202,,,,,,,,,,,,,,,', -',,,202,,,,,,186,,,186,,202,202,202,202,202,202,202,202,202,202,202,202', -'202,202,202,202,202,186,202,202,202,202,202,202,202,,,,186,186,186,186', -'186,186,186,186,186,186,186,186,186,186,186,186,186,,186,186,186,186', -'186,186,186,173,,,173,,,,,,,,,,,,,,,,,,,173,,,,,,104,,,104,,173,173', -'173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,104,173', -'173,173,173,173,173,,,,,104,104,104,104,104,104,104,104,104,104,104', -'104,104,104,104,104,104,,104,104,104,104,104,104,158,,,158,,,,,,,,,', -',,,,,,,,,158,,,,,,103,,,103,,158,158,158,158,158,158,158,158,158,158', -'158,158,158,158,158,158,158,103,158,158,158,158,158,158,201,,,,103,103', -'103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,,103,103', -'103,103,103,103,40,,,40,,201,201,201,201,201,201,201,201,201,201,201', -'201,201,201,201,201,201,40,201,201,201,201,201,201,132,,,,40,40,40,40', -'40,40,40,40,40,40,40,40,40,40,40,40,40,,40,40,40,40,40,40,141,,,,,132', -'132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,,132', -'132,132,132,132,132,,,,,141,141,141,141,141,141,141,141,141,141,141', -'141,141,141,141,141,141,,141,141,141,141,141,141,174,,,174,,,,,,,,,', -',,,,,,,,,174,,,,,,66,,,66,,174,174,174,174,174,174,174,174,174,174,174', -'174,174,174,174,174,174,66,174,174,174,174,174,174,207,,,,66,66,66,66', -'66,66,66,66,66,66,66,66,66,66,66,66,66,,66,66,66,66,66,66,126,,,126', -',207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', -'126,207,207,207,207,207,207,,,,,126,126,126,126,126,126,126,126,126', -'126,126,126,126,126,126,126,126,,126,126,126,126,126,126,136,136,136', +'0,21,190,42,0,0,0,0,0,0,0,138,68,0,0,0,0,172,172,0,0,0,66,66,0,0,41', +'41,0,72,0,66,0,0,71,4,131,131,0,131,124,169,190,190,190,131,171,171', +'171,172,138,154,154,154,21,42,21,53,21,0,0,0,193,0,211,0,60,0,211,211', +'211,211,211,211,211,4,74,211,211,211,211,72,179,211,211,211,71,4,211', +'211,71,4,211,118,211,37,211,211,169,169,169,29,211,75,75,114,114,114', +'114,114,114,114,114,114,114,114,114,114,114,114,114,114,79,59,59,211', +'59,211,126,211,59,211,126,126,126,126,126,126,126,77,77,126,126,126', +'126,75,75,126,126,126,205,205,126,126,113,113,126,113,126,117,126,126', +'87,113,80,80,126,151,151,151,151,151,151,151,151,151,151,151,151,151', +'110,110,5,110,127,110,129,126,126,126,,126,7,126,,126,7,7,7,7,7,7,7', +'15,15,7,7,7,7,,,7,7,7,,,7,7,,,7,,7,,7,7,195,195,195,,7,137,137,137,137', +'137,137,137,137,137,137,137,137,137,159,159,159,159,159,152,152,152', +',7,,7,10,7,,7,10,10,10,10,10,10,10,,,10,10,10,10,,,10,10,10,,,10,10', +',,10,,10,,10,10,176,176,176,,10,149,149,149,149,149,149,149,149,149', +'149,149,149,149,157,157,157,157,157,196,196,196,,10,,10,12,10,,10,12', +'12,12,12,12,12,12,,,12,12,12,12,,,12,12,12,,,12,12,,,12,,12,,12,12,206', +'206,206,,12,155,155,155,155,155,155,155,155,155,155,155,155,155,135', +'135,135,135,135,,,,,12,,12,14,12,,12,14,14,14,14,14,14,14,,,14,14,14', +'14,,,14,14,14,,,14,14,,,14,,14,,14,14,,,,,14,143,143,143,143,143,143', +'143,143,143,143,143,143,143,156,156,156,156,156,,,14,14,14,,14,120,14', +',14,120,120,120,120,120,120,120,,,120,120,120,120,,,120,120,120,,,120', +'120,,,120,,120,,120,120,,,,,120,153,153,153,153,153,153,153,153,153', +'153,153,153,153,,,,,,,,120,120,120,,120,17,120,,120,17,17,17,17,17,17', +'17,,,17,17,17,17,,,17,17,17,,,17,17,,,17,,17,,17,17,,,,,17,141,141,141', +'141,141,141,141,141,141,141,141,141,141,,,,,,,,,,17,,17,20,17,,17,20', +'20,20,20,20,20,20,,,20,20,20,20,,,20,20,20,,,20,20,,,20,,20,,20,20,', +',,,20,146,146,146,146,146,146,146,146,146,146,146,146,146,,,,,,,,,,20', +',20,119,20,,20,119,119,119,119,119,119,119,,,119,119,119,119,,,119,119', +'119,,,119,119,,,119,,119,,119,119,,,,,119,,,,,,,,,,,,,,,,,,,,,,,119', +',119,25,119,,119,25,25,25,25,25,25,25,,,25,25,25,25,,,25,25,25,,,25', +'25,,,25,,25,,25,25,,,,,25,,,,,,,,,,,,,,,,,,,,,,,25,,25,202,25,,25,202', +'202,202,202,202,202,202,,,202,202,202,202,,,202,202,202,,,202,202,,', +'202,,202,,202,202,,,,,202,,,,,,,,,,,,,,,,,,,,,,,202,,202,30,202,,202', +'30,30,30,30,30,30,30,,,30,30,30,30,,,30,30,30,,,30,30,,,30,,30,,30,30', +',,,,30,,,,,,,,,,,,,,,,,,,,,30,30,30,,30,32,30,,30,32,32,32,32,32,32', +'32,,,32,32,32,32,,,32,32,32,,,32,32,,,32,,32,,32,32,,,,,32,,,,,,,,,', +',,,,,,,,,,,,,32,,32,36,32,,32,36,36,36,36,36,36,36,,,36,36,36,36,,,36', +'36,36,,,36,36,,,36,,36,,36,36,,,,,36,,,,,,,,,,,,,,,,,,,,,36,36,36,,36', +'200,36,,36,200,200,200,200,200,200,200,,,200,200,200,200,,,200,200,200', +',,200,200,,,200,,200,,200,200,,,,,200,,,,,,,,,,,,,,,,,,,,,,,200,,200', +'38,200,,200,38,38,38,38,38,38,38,,,38,38,38,38,,,38,38,38,,,38,38,,', +'38,,38,,38,38,,,,,38,,,,,,,,,,,,,,,,,,,,,38,38,38,,38,199,38,,38,199', +'199,199,199,199,199,199,,,199,199,199,199,,,199,199,199,,,199,199,,', +'199,,199,,199,199,,,,,199,,,,,,,,,,,,,,,,,,,,,199,199,199,,199,197,199', +',199,197,197,197,197,197,197,197,,,197,197,197,197,,,197,197,197,,,197', +'197,,,197,,197,,197,197,,,,,197,,,,,,,,,,,,,,,,,,,,,197,197,197,,197', +'161,197,,197,161,161,161,161,161,161,161,,,161,161,161,161,,,161,161', +'161,,,161,161,,,161,,161,,161,161,,,,,161,,,,,,,,,,,,,,,,,,,,,,,161', +',161,46,161,,161,46,46,46,46,46,46,46,,,46,46,46,46,,,46,46,46,,,46', +'46,,,46,,46,,46,46,,,,,46,,,,,,,,,,,,,,,,,,,,,,,46,,46,47,46,,46,47', +'47,47,47,47,47,47,,,47,47,47,47,,,47,47,47,,,47,47,,,47,,47,,47,47,', +',,,47,,,,,,,,,,,,,,,,,,,,,,,47,,47,162,47,,47,162,162,162,162,162,162', +'162,,,162,162,162,162,,,162,162,162,,,162,162,,,162,,162,,162,162,,', +',,162,,,,,,,,,,,,,,,,,,,,,,,162,,162,54,162,,162,54,54,54,54,54,54,54', +',,54,54,54,54,,,54,54,54,,,54,54,,,54,,54,,54,54,,,,,54,,,,,,,,,,,,', +',,,,,,,,,,54,,54,56,54,,54,56,56,56,56,56,56,56,,,56,56,56,56,,,56,56', +'56,,,56,56,,,56,,56,,56,56,,,,,56,,,,,,,,,,,,,,,,,,,,,,,56,,56,57,56', +',56,57,57,57,57,57,57,57,,,57,57,57,57,,,57,57,57,,,57,57,,,57,,57,', +'57,57,,,,,57,,,,,,,,,,,,,,,,,,,,,,,57,,57,165,57,,57,165,165,165,165', +'165,165,165,,,165,165,165,165,,,165,165,165,,,165,165,,,165,,165,,165', +'165,,,,,165,,,,,,,,,,,,,,,,,,,,,,,165,,165,188,165,,165,188,188,188', +'188,188,188,188,,,188,188,188,188,,,188,188,188,,,188,188,,,188,,188', +',188,188,,,,,188,,,,,,,,,,,,,,,,,,,,,188,188,188,,188,108,188,,188,108', +'108,108,108,108,108,108,,,108,108,108,108,,,108,108,108,,,108,108,,', +'108,,108,,108,108,,,,,108,,,,,,,,,,,,,,,,,,,,,,,108,,108,65,108,,108', +'65,65,65,65,65,65,65,,,65,65,65,65,,,65,65,65,,,65,65,,,65,,65,,65,65', +',,,,65,,,,,,,,,,,,,,,,,,,,,65,65,65,,65,183,65,,65,183,183,183,183,183', +'183,183,,,183,183,183,183,,,183,183,183,,,183,183,,,183,,183,,183,183', +',,,,183,,,,,,,,,,,,,,,,,,,,,183,183,183,,183,67,183,,183,67,67,67,67', +'67,67,67,,,67,67,67,67,,,67,67,67,,,67,67,,,67,,67,,67,67,,,,,67,,,', +',,,,,,,,,,,,,,,,,67,67,67,,67,107,67,,67,107,107,107,107,107,107,107', +',,107,107,107,107,,,107,107,107,,,107,107,,,107,,107,,107,107,,,,,107', +',,,,,,,,,,,,,,,,,,,,,,107,,107,106,107,,107,106,106,106,106,106,106', +'106,,,106,106,106,106,,,106,106,106,,,106,106,,,106,,106,,106,106,,', +',,106,,,,,,,,,,,,,,,,,,,,,,,106,,106,105,106,,106,105,105,105,105,105', +'105,105,,,105,105,105,105,,,105,105,105,,,105,105,,,105,,105,,105,105', +',,,,105,,,,,,,,,,,,,,,,,,,,,,,105,,105,130,105,,105,130,130,130,130', +'130,130,130,,,130,130,130,130,,,130,130,130,,,130,130,,,130,,130,,130', +'130,,,,,130,,,,,,,,,,,,,,,,,,,,,130,130,130,,130,104,130,,130,104,104', +'104,104,104,104,104,,,104,104,104,104,,,104,104,104,,,104,104,,,104', +',104,,104,104,,,,,104,,,,,,,,,,,,,,,,,,,,,,,104,,104,103,104,,104,103', +'103,103,103,103,103,103,,,103,103,103,103,,,103,103,103,,,103,103,,', +'103,,103,,103,103,,,,,103,,,,,,,,,,,,,,,,,,,,,,,103,,103,102,103,,103', +'102,102,102,102,102,102,102,,,102,102,102,102,,,102,102,102,,,102,102', +',,102,,102,,102,102,,,,,102,,,,,,,,,,,,,,,,,,,,,,,102,,102,178,102,', +'102,178,178,178,178,178,178,178,,,178,178,178,178,,,178,178,178,,,178', +'178,,,178,,178,,178,178,,,,,178,,,,,,,,,,,,,,,,,,,,,,,178,,178,175,178', +',178,175,175,175,175,175,175,175,,,175,175,175,175,,,175,175,175,,,175', +'175,,,175,,175,,175,175,,,,,175,,,,,,,,,,,,,,,,,,,,,175,175,175,,175', +'78,175,,175,78,78,78,78,78,78,78,,,78,78,78,78,,,78,78,78,,,78,78,,', +'78,,78,,78,78,,,,,78,,,,,,,,,,,,,,,,,,,,,,,78,,78,174,78,,78,174,174', +'174,174,174,174,174,,,174,174,174,174,,,174,174,174,,,174,174,,,174', +',174,,174,174,,,,,174,,,,,,,,,,,,,,,,,,,,,,,174,,174,101,174,,174,101', +'101,101,101,101,101,101,,,101,101,101,101,,,101,101,101,,,101,101,,', +'101,,101,,101,101,,,,,101,,,,,,,,,,,,,,,,,,,,,,,101,,101,81,101,,101', +'81,81,81,81,81,81,81,,,81,81,81,81,,,81,81,81,,,81,81,,,81,,81,,81,81', +',,,,81,,,,,,,,,,,,,,,,,,,,,,,81,,81,83,81,,81,83,83,83,83,83,83,83,', +',83,83,83,83,,,83,83,83,,,83,83,,,83,,83,,83,83,,,,,83,,,,,,,,,,,,,', +',,,,,,,,,83,,83,84,83,,83,84,84,84,84,84,84,84,,,84,84,84,84,,,84,84', +'84,,,84,84,,,84,,84,,84,84,,,,,84,,,,,,,,,,,,,,,,,,,,,,,84,,84,85,84', +',84,85,85,85,85,85,85,85,,,85,85,85,85,,,85,85,85,,,85,85,,,85,,85,', +'85,85,,,,,85,,,,,,,,,,,,,,,,,,,,,,,85,,85,86,85,,85,86,86,86,86,86,86', +'86,,,86,86,86,86,,,86,86,86,,,86,86,,,86,,86,,86,86,,,,,86,,,,,,,,,', +',,,,,,,,,,,,,86,,86,99,86,,86,99,99,99,99,99,99,99,,,99,99,99,99,,,99', +'99,99,,,99,99,,,99,,99,,99,99,,,,,99,,,,,,,,,,,,,,,,,,,,,,,99,,99,88', +'99,,99,88,88,88,88,88,88,88,,,88,88,88,88,,,88,88,88,,,88,88,,,88,,88', +',88,88,,,,,88,,,,,,,,,,,,,,,,,,,,,,,88,,88,89,88,,88,89,89,89,89,89', +'89,89,,,89,89,89,89,,,89,89,89,,,89,89,,,89,,89,,89,89,,,,,89,,,,,,', +',,,,,,,,,,,,,,,,89,,89,90,89,,89,90,90,90,90,90,90,90,,,90,90,90,90', +',,90,90,90,,,90,90,,,90,,90,,90,90,,,,,90,,,,,,,,,,,,,,,,,,,,,,,90,', +'90,91,90,,90,91,91,91,91,91,91,91,,,91,91,91,91,,,91,91,91,,,91,91,', +',91,,91,,91,91,,,,,91,,,,,,,,,,,,,,,,,,,,,,,91,,91,92,91,,91,92,92,92', +'92,92,92,92,,,92,92,92,92,,,92,92,92,,,92,92,,,92,,92,,92,92,,,,,92', +',,,,,,,,,,,,,,,,,,,,,,92,,92,93,92,,92,93,93,93,93,93,93,93,,,93,93', +'93,93,,,93,93,93,,,93,93,,,93,,93,,93,93,,,,,93,,,,,,,,,,,,,,,,,,,,', +',,93,,93,94,93,,93,94,94,94,94,94,94,94,,,94,94,94,94,,,94,94,94,,,94', +'94,,,94,,94,,94,94,,,,,94,,,,,,,,,,,,,,,,,,,,,,,94,,94,95,94,,94,95', +'95,95,95,95,95,95,,,95,95,95,95,,,95,95,95,,,95,95,,,95,,95,,95,95,', +',,,95,,,,,,,,,,,,,,,,,,,,,,,95,,95,96,95,,95,96,96,96,96,96,96,96,,', +'96,96,96,96,,,96,96,96,,,96,96,,,96,,96,,96,96,,,,,96,,,,,,,,,,,,,,', +',,,,,,,,96,,96,97,96,,96,97,97,97,97,97,97,97,,,97,97,97,97,,,97,97', +'97,,,97,97,,,97,,97,,97,97,,,,,97,,,,,,,,,,,,,,,,,,,,,,,97,,97,98,97', +',97,98,98,98,98,98,98,98,,,98,98,98,98,,,98,98,98,,,98,98,,,98,,98,', +'98,98,,,,,98,,,,,,,,,,,,,,,,,,,,,,,98,,98,100,98,,98,100,100,100,100', +'100,100,100,,,100,100,100,100,,,100,100,100,,,100,100,,,100,,100,,100', +'100,182,,,182,100,,,,,,,,,,,,,,,,,,182,,,,,100,,100,,100,,100,182,182', +'182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,,182,182', +'182,182,182,182,115,,,115,,,182,,,,,,,,,,,,,,,,115,,,,,,,,,,,,115,115', +'115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,,115,115', +'115,115,115,115,63,,63,63,115,,115,,,,,,,,,,,,,,,,63,,,,,,,189,,189', +'189,,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,189,63,63,63', +'63,63,63,,63,63,148,,189,189,189,189,189,189,189,189,189,189,189,189', +'189,189,189,189,189,,189,189,189,189,189,189,,189,189,69,,69,69,,148', +'148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,69,148', +'148,148,148,148,148,70,,70,70,,69,69,69,69,69,69,69,69,69,69,69,69,69', +'69,69,69,69,70,69,69,69,69,69,69,192,69,69,192,,70,70,70,70,70,70,70', +'70,70,70,70,70,70,70,70,70,70,192,70,70,70,70,70,70,208,70,70,208,,192', +'192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,208', +'192,192,192,192,192,192,192,139,,,,208,208,208,208,208,208,208,208,208', +'208,208,208,208,208,208,208,208,,208,208,208,208,208,208,208,109,,,109', +',139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139', +'109,139,139,139,139,139,139,181,,,181,,109,109,109,109,109,109,109,109', +'109,109,109,109,109,109,109,109,109,181,109,109,109,109,109,109,111', +',,111,,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181', +'181,111,181,181,181,181,181,181,73,,,73,,111,111,111,111,111,111,111', +'111,111,111,111,111,111,111,111,111,111,73,111,111,111,111,111,111,45', +',,45,,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,45,73,73,73', +'73,73,73,180,,,180,,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45', +'45,180,45,45,45,45,45,45,207,,,,,180,180,180,180,180,180,180,180,180', +'180,180,180,180,180,180,180,180,,180,180,180,180,180,180,133,,,133,', +'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', +'133,207,207,207,207,207,207,168,,,168,,133,133,133,133,133,133,133,133', +'133,133,133,133,133,133,133,133,133,168,133,133,133,133,133,133,213', +',,,,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168', +'168,,168,168,168,168,168,168,,,,,,213,213,213,213,213,213,213,213,213', +'213,213,213,213,213,213,213,213,,213,213,213,213,213,213,136,136,136', '136,136,136,136,136,136,136,136,136,136,136,136,136,136,,136,136,136', -'136,136,136,149,149,149,149,149,149,149,149,149,149,149,149,149,149', -'149,149,149,,149,149,149,149,149,149,133,133,133,133,133,133,133,133', -'133,133,133,133,133,133,133,133,133,,133,133,133,133,133,133,127,127', -'127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,,127,127', -'127,127,127,127,151,151,151,151,151,151,151,151,151,151,151,151,151', -'151,151,151,151,,151,151,151,151,151,151,129,129,129,129,129,129,129', -'129,129,129,129,129,129,129,129,129,129,,129,129,129,129,129,129' ] - racc_action_check = arr = Array.new(4821, nil) +'136,136,136,134,134,134,134,134,134,134,134,134,134,134,134,134,134', +'134,134,134,,134,134,134,134,134,134,140,140,140,140,140,140,140,140', +'140,140,140,140,140,140,140,140,140,,140,140,140,140,140,140,145,145', +'145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,,145,145', +'145,145,145,145,142,142,142,142,142,142,142,142,142,142,142,142,142', +'142,142,142,142,,142,142,142,142,142,142,158,158,158,158,158,158,158', +'158,158,158,158,158,158,158,158,158,158,,158,158,158,158,158,158' ] + racc_action_check = arr = Array.new(4817, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -339,236 +351,232 @@ clist = [ end racc_action_pointer = [ - -2, 87, 124, nil, nil, nil, nil, 187, nil, nil, - 250, 313, 86, nil, nil, nil, 439, nil, nil, nil, - 502, -11, nil, nil, nil, 80, 691, 754, nil, nil, - nil, 817, 880, 10, 1006, nil, nil, 146, nil, nil, - 4419, 1195, nil, nil, nil, nil, 1258, nil, nil, 34, - nil, -18, 61, nil, nil, 1510, -34, 4078, 1699, 7, - 3990, 4018, -10, 17, 36, nil, 4561, 83, 77, 63, - nil, nil, 2392, nil, -21, 2518, 2581, 2644, 2707, 2770, - 0, 2896, 2959, 3022, 3085, 3148, 3211, 3274, 3337, 3400, - 3463, 3526, 3589, 3652, 3715, 3778, 3841, 2203, 2140, 2077, - 1888, 1825, 117, 4362, 4277, 1762, nil, 1636, 1573, nil, - 44, 81, nil, 1132, nil, nil, 163, nil, 565, 37, - nil, 49, 376, nil, 3933, nil, 4618, 4714, 192, 4762, - 255, -14, 4448, 4690, 318, nil, 4642, 381, nil, 570, - nil, 4476, 507, 124, 444, 210, 129, 331, 205, 4666, - 268, 4738, 394, 628, 1447, nil, 93, 68, 4334, nil, - nil, 30, nil, 219, -11, nil, 2833, 2455, -15, 2329, - nil, 2266, 16, 4249, 4533, nil, 2014, nil, nil, nil, - nil, 1951, 4106, -18, nil, 3876, 4191, 76, 156, 124, - 1384, nil, 1321, nil, 1069, nil, 943, nil, nil, 140, - -9, 4391, 4163, nil, nil, 61, nil, 4590, nil ] + -2, nil, nil, nil, 22, 170, nil, 190, nil, nil, + 254, nil, 318, nil, 382, 140, nil, 510, nil, nil, + 574, -11, nil, nil, nil, 702, nil, nil, nil, 101, + 830, nil, 894, nil, nil, nil, 958, 26, 1086, nil, + nil, -35, -10, nil, nil, 4468, 1342, 1406, nil, nil, + nil, nil, nil, 45, 1534, nil, 1598, 1662, nil, 62, + 13, nil, nil, 4116, nil, 1918, -39, 2046, -3, 4206, + 4235, 21, 16, 4439, 76, 84, nil, 78, 2686, 62, + 103, 2878, nil, 2942, 3006, 3070, 3134, 150, 3262, 3326, + 3390, 3454, 3518, 3582, 3646, 3710, 3774, 3838, 3902, 3198, + 3966, 2814, 2494, 2430, 2366, 2238, 2174, 2110, 1854, 4352, + 119, 4410, nil, 93, 69, 4058, nil, 147, 81, 638, + 446, nil, nil, nil, -20, nil, 126, 156, nil, 174, + 2302, -25, nil, 4555, 4661, 336, 4637, 195, -14, 4323, + 4685, 515, 4733, 387, nil, 4709, 579, nil, 4177, 259, + nil, 131, 213, 451, 15, 323, 400, 272, 4757, 208, + nil, 1278, 1470, nil, nil, 1726, nil, nil, 4584, 38, + nil, -14, -11, nil, 2750, 2622, 230, nil, 2558, 70, + 4497, 4381, 4000, 1982, nil, nil, nil, nil, 1790, 4145, + -18, nil, 4264, 37, nil, 166, 253, 1214, nil, 1150, + 1022, nil, 766, nil, nil, 89, 294, 4526, 4293, nil, + nil, 62, nil, 4613, nil ] racc_action_default = [ - -1, -79, -110, -32, -31, -10, -67, -110, -33, -11, - -110, -110, -110, -12, -68, -13, -110, -69, -65, -14, - -110, -110, -70, -21, -15, -110, -110, -110, -25, -22, - -16, -2, -110, -83, -110, -26, -17, -3, -28, -18, - -4, -87, -29, -27, -19, -8, -110, -30, -20, -9, - -80, -110, -110, -39, -37, -110, -110, -110, -110, -110, - -110, -110, -84, -110, -110, -38, -36, -7, -110, -110, - -72, -74, -110, -75, -110, -6, -110, -110, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -88, -98, -87, -71, -110, -110, -78, - -110, -110, -99, -110, -23, -24, -110, -66, -110, -110, - 209, -110, -110, -73, -110, -64, -5, -59, -49, -60, - -50, -110, -93, -61, -51, -40, -62, -52, -41, -53, - -42, -94, -54, -43, -55, -44, -56, -45, -46, -57, - -47, -58, -48, -110, -110, -86, -110, -34, -35, -82, - -81, -110, -63, -110, -110, -107, -110, -110, -110, -110, - -76, -110, -110, -90, -89, -85, -110, -91, -100, -108, - -105, -110, -110, -110, -96, -110, -110, -110, -110, -110, - -110, -95, -110, -77, -110, -101, -110, -92, -106, -109, - -110, -93, -110, -97, -103, -110, -102, -93, -104 ] + -1, -32, -31, -20, -9, -81, -69, -114, -33, -10, + -114, -87, -114, -11, -114, -114, -12, -114, -67, -13, + -114, -114, -70, -14, -71, -114, -25, -21, -15, -114, + -114, -72, -114, -26, -22, -16, -2, -114, -65, -28, + -17, -3, -85, -29, -18, -4, -114, -91, -30, -27, + -19, -8, -77, -114, -91, -73, -114, -114, -76, -114, + -114, -82, -39, -114, -37, -114, -114, -65, -114, -114, + -114, -114, -86, -36, -114, -114, -38, -7, -91, -114, + -66, -6, -74, -114, -114, -114, -114, -114, -114, -114, + -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, + -114, -114, -114, -114, -114, -114, -114, -114, -114, -102, + -114, -92, -75, -114, -34, -114, -80, -114, -114, -114, + -114, -23, -24, -103, -114, -68, -114, -114, 215, -114, + -114, -114, -64, -5, -58, -48, -59, -49, -114, -97, + -60, -50, -61, -51, -40, -62, -52, -41, -98, -53, + -42, -54, -43, -55, -44, -56, -45, -46, -57, -47, + -90, -114, -114, -88, -78, -114, -84, -83, -35, -114, + -63, -114, -114, -111, -114, -114, -114, -89, -114, -114, + -94, -93, -114, -114, -95, -104, -112, -109, -114, -114, + -114, -100, -114, -114, -79, -114, -114, -114, -99, -114, + -114, -105, -114, -96, -110, -113, -114, -97, -114, -101, + -107, -114, -106, -97, -108 ] racc_goto_table = [ - 53, 50, 102, 113, 165, 54, 118, 119, 106, 57, - 63, 52, 62, 164, 60, 25, nil, nil, 61, nil, - 37, nil, 106, nil, 65, 66, nil, nil, nil, nil, - 56, nil, nil, nil, nil, nil, nil, nil, nil, 103, - nil, nil, nil, nil, 104, nil, nil, nil, nil, 179, - nil, nil, 68, nil, 74, nil, nil, nil, nil, nil, - nil, nil, nil, 31, nil, nil, 156, nil, nil, nil, - 124, nil, nil, 126, 127, 128, 129, 130, 116, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 75, nil, nil, 103, nil, 157, 158, nil, nil, nil, - 159, 160, nil, nil, nil, 110, nil, nil, nil, 75, - 115, nil, nil, 115, 115, nil, nil, nil, 190, nil, - 75, 75, nil, 161, nil, nil, nil, 75, 163, nil, - nil, nil, 168, nil, nil, nil, nil, nil, nil, nil, - nil, 173, 174, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 182, 153, nil, 185, nil, 186, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 75, - nil, nil, nil, nil, nil, nil, nil, 183, nil, nil, - nil, nil, 201, nil, 202, nil, 188, nil, nil, nil, - nil, 189, nil, 207, nil, nil, nil, nil, nil, nil, - 199, nil, 200, nil, nil, nil, nil, nil, nil, 153, - nil, nil, nil, nil, 75, nil, 75, nil, nil, nil, - nil, 75, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 115, 75, nil, nil, nil, - nil, 75, 75, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 75, 75 ] + 36, 82, 120, 61, 41, 173, 110, 62, 126, 127, + 63, 79, 64, 113, 72, 59, 71, 69, 66, 172, + 70, 29, nil, nil, nil, 73, nil, nil, nil, nil, + nil, 82, 76, nil, 75, nil, nil, 131, nil, nil, + 124, 81, 80, nil, nil, nil, 109, 111, nil, nil, + 186, nil, nil, nil, 111, nil, 114, 115, nil, 117, + nil, nil, nil, 122, nil, nil, 81, nil, nil, 122, + 122, 80, nil, nil, nil, 81, nil, 81, 111, nil, + 81, 133, nil, 134, 135, 136, 137, nil, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, nil, + 161, nil, nil, 161, nil, 166, 167, nil, nil, 168, + nil, nil, nil, nil, 169, nil, nil, nil, 197, nil, + 171, 161, nil, nil, 176, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 180, 181, nil, nil, 182, nil, nil, nil, 81, + nil, 81, nil, nil, 189, nil, 81, nil, 192, 190, + nil, nil, nil, nil, nil, nil, nil, 195, nil, 122, + 81, nil, 196, nil, nil, 81, 81, nil, nil, nil, + 207, 205, 208, 206, nil, 81, 81, nil, nil, nil, + nil, 213 ] racc_goto_check = [ - 4, 19, 29, 18, 31, 4, 18, 18, 24, 4, - 6, 28, 25, 30, 4, 1, nil, nil, 4, nil, - 3, nil, 24, nil, 4, 4, nil, nil, nil, nil, - 3, nil, nil, nil, nil, nil, nil, nil, nil, 4, - nil, nil, nil, nil, 4, nil, nil, nil, nil, 31, - nil, nil, 3, nil, 3, nil, nil, nil, nil, nil, - nil, nil, nil, 2, nil, nil, 29, nil, nil, nil, - 4, nil, nil, 4, 4, 4, 4, 4, 3, 4, + 2, 25, 18, 19, 3, 33, 31, 4, 18, 18, + 4, 21, 4, 31, 26, 29, 6, 4, 3, 32, + 4, 1, nil, nil, nil, 4, nil, nil, nil, nil, + nil, 25, 4, nil, 3, nil, nil, 31, nil, nil, + 21, 2, 3, nil, nil, nil, 4, 4, nil, nil, + 33, nil, nil, nil, 4, nil, 4, 4, nil, 2, + nil, nil, nil, 2, nil, nil, 2, nil, nil, 2, + 2, 3, nil, nil, nil, 2, nil, 2, 4, nil, + 2, 4, nil, 4, 4, 4, 4, nil, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 2, nil, nil, 4, nil, 4, 4, nil, nil, nil, - 19, 19, nil, nil, nil, 2, nil, nil, nil, 2, - 2, nil, nil, 2, 2, nil, nil, nil, 18, nil, - 2, 2, nil, 3, nil, nil, nil, 2, 3, nil, - nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, - nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 4, 2, nil, 4, nil, 4, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 2, - nil, nil, nil, nil, nil, nil, nil, 3, nil, nil, - nil, nil, 4, nil, 4, nil, 3, nil, nil, nil, - nil, 3, nil, 4, nil, nil, nil, nil, nil, nil, - 3, nil, 3, nil, nil, nil, nil, nil, nil, 2, - nil, nil, nil, nil, 2, nil, 2, nil, nil, nil, - nil, 2, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 2, 2, nil, nil, nil, - nil, 2, 2, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 2, 2 ] + 4, 4, 4, 4, 4, 4, 4, 4, 4, nil, + 2, nil, nil, 2, nil, 19, 19, nil, nil, 4, + nil, nil, nil, nil, 3, nil, nil, nil, 18, nil, + 3, 2, nil, nil, 3, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 4, 4, nil, nil, 4, nil, nil, nil, 2, + nil, 2, nil, nil, 4, nil, 2, nil, 4, 3, + nil, nil, nil, nil, nil, nil, nil, 3, nil, 2, + 2, nil, 3, nil, nil, 2, 2, nil, nil, nil, + 4, 3, 4, 3, nil, 2, 2, nil, nil, nil, + nil, 4 ] racc_goto_pointer = [ - nil, 15, 63, 20, -2, nil, -11, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -54, 0, - nil, nil, nil, nil, -41, -9, nil, nil, 10, -39, - -106, -115 ] + nil, 21, 0, 4, 0, nil, -5, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, -61, -2, + nil, -27, nil, nil, nil, -41, -7, nil, nil, 10, + nil, -41, -108, -122 ] racc_goto_default = [ - nil, nil, 55, 67, 40, 45, 49, 5, 9, 13, - 15, 19, 24, 30, 36, 39, 44, 48, nil, nil, - 12, 14, 17, 22, 70, 33, 71, 73, nil, nil, - nil, nil ] + nil, nil, 65, 77, 45, 51, 4, 9, 13, 16, + 19, 23, 28, 35, 40, 44, 50, 3, nil, nil, + 15, nil, 22, 24, 31, 55, 42, 58, 52, nil, + 11, nil, nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, - 0, 71, :_reduce_1, - 1, 71, :_reduce_2, - 1, 71, :_reduce_3, - 1, 73, :_reduce_4, - 3, 73, :_reduce_5, - 2, 73, :_reduce_6, - 2, 73, :_reduce_7, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 74, :_reduce_none, - 1, 72, :_reduce_none, - 1, 72, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 75, :_reduce_25, - 1, 75, :_reduce_26, - 1, 75, :_reduce_27, - 1, 75, :_reduce_28, - 1, 75, :_reduce_29, - 1, 75, :_reduce_30, - 1, 75, :_reduce_31, - 1, 75, :_reduce_32, - 1, 75, :_reduce_33, - 3, 78, :_reduce_34, - 3, 89, :_reduce_35, - 2, 84, :_reduce_36, - 2, 80, :_reduce_37, - 2, 80, :_reduce_38, - 2, 80, :_reduce_39, - 3, 80, :_reduce_40, - 3, 80, :_reduce_41, - 3, 80, :_reduce_42, - 3, 80, :_reduce_43, - 3, 80, :_reduce_44, - 3, 80, :_reduce_45, - 3, 80, :_reduce_46, - 3, 80, :_reduce_47, - 3, 80, :_reduce_48, - 3, 80, :_reduce_49, - 3, 80, :_reduce_50, - 3, 80, :_reduce_51, - 3, 80, :_reduce_52, - 3, 80, :_reduce_53, - 3, 80, :_reduce_54, - 3, 80, :_reduce_55, - 3, 80, :_reduce_56, - 3, 80, :_reduce_57, - 3, 80, :_reduce_58, - 3, 80, :_reduce_59, - 3, 80, :_reduce_60, - 3, 80, :_reduce_61, - 3, 80, :_reduce_62, - 4, 79, :_reduce_63, - 3, 79, :_reduce_64, - 1, 90, :_reduce_65, - 3, 90, :_reduce_66, - 1, 76, :_reduce_67, - 1, 76, :_reduce_68, - 1, 76, :_reduce_69, - 1, 76, :_reduce_70, - 2, 76, :_reduce_71, - 2, 76, :_reduce_72, - 2, 94, :_reduce_73, - 1, 94, :_reduce_74, - 1, 94, :_reduce_75, - 3, 96, :_reduce_76, - 5, 97, :_reduce_77, - 3, 92, :_reduce_78, - 0, 98, :_reduce_79, - 1, 98, :_reduce_80, - 3, 98, :_reduce_81, - 3, 98, :_reduce_82, - 1, 77, :_reduce_83, - 2, 77, :_reduce_84, - 4, 95, :_reduce_85, - 3, 91, :_reduce_86, - 0, 99, :_reduce_87, - 1, 99, :_reduce_88, - 3, 99, :_reduce_89, - 3, 99, :_reduce_90, - 5, 81, :_reduce_91, - 7, 81, :_reduce_92, - 3, 81, :_reduce_93, - 3, 81, :_reduce_94, - 6, 82, :_reduce_95, - 5, 82, :_reduce_96, - 8, 82, :_reduce_97, - 2, 83, :_reduce_98, - 3, 93, :_reduce_99, - 5, 85, :_reduce_100, - 6, 86, :_reduce_101, - 8, 86, :_reduce_102, - 8, 86, :_reduce_103, - 10, 86, :_reduce_104, - 5, 87, :_reduce_105, - 7, 87, :_reduce_106, - 1, 100, :_reduce_107, - 2, 100, :_reduce_108, - 4, 101, :_reduce_109 ] + 0, 72, :_reduce_1, + 1, 72, :_reduce_2, + 1, 72, :_reduce_3, + 1, 74, :_reduce_4, + 3, 74, :_reduce_5, + 2, 74, :_reduce_6, + 2, 74, :_reduce_7, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 76, :_reduce_25, + 1, 76, :_reduce_26, + 1, 76, :_reduce_27, + 1, 76, :_reduce_28, + 1, 76, :_reduce_29, + 1, 76, :_reduce_30, + 1, 76, :_reduce_31, + 1, 76, :_reduce_32, + 1, 76, :_reduce_33, + 3, 79, :_reduce_34, + 3, 90, :_reduce_35, + 2, 85, :_reduce_36, + 2, 81, :_reduce_37, + 2, 81, :_reduce_38, + 2, 81, :_reduce_39, + 3, 81, :_reduce_40, + 3, 81, :_reduce_41, + 3, 81, :_reduce_42, + 3, 81, :_reduce_43, + 3, 81, :_reduce_44, + 3, 81, :_reduce_45, + 3, 81, :_reduce_46, + 3, 81, :_reduce_47, + 3, 81, :_reduce_48, + 3, 81, :_reduce_49, + 3, 81, :_reduce_50, + 3, 81, :_reduce_51, + 3, 81, :_reduce_52, + 3, 81, :_reduce_53, + 3, 81, :_reduce_54, + 3, 81, :_reduce_55, + 3, 81, :_reduce_56, + 3, 81, :_reduce_57, + 3, 81, :_reduce_58, + 3, 81, :_reduce_59, + 3, 81, :_reduce_60, + 3, 81, :_reduce_61, + 3, 81, :_reduce_62, + 4, 80, :_reduce_63, + 3, 80, :_reduce_64, + 0, 92, :_reduce_65, + 1, 92, :_reduce_66, + 1, 91, :_reduce_67, + 3, 91, :_reduce_68, + 1, 77, :_reduce_69, + 1, 77, :_reduce_70, + 1, 77, :_reduce_71, + 1, 77, :_reduce_72, + 2, 77, :_reduce_73, + 2, 77, :_reduce_74, + 2, 96, :_reduce_75, + 1, 96, :_reduce_76, + 1, 96, :_reduce_77, + 3, 98, :_reduce_78, + 5, 99, :_reduce_79, + 3, 94, :_reduce_80, + 0, 100, :_reduce_81, + 1, 100, :_reduce_82, + 3, 100, :_reduce_83, + 3, 100, :_reduce_84, + 1, 78, :_reduce_85, + 2, 78, :_reduce_86, + 1, 78, :_reduce_87, + 4, 97, :_reduce_88, + 4, 101, :_reduce_89, + 3, 93, :_reduce_90, + 0, 102, :_reduce_91, + 1, 102, :_reduce_92, + 3, 102, :_reduce_93, + 3, 102, :_reduce_94, + 5, 82, :_reduce_95, + 7, 82, :_reduce_96, + 3, 82, :_reduce_97, + 3, 82, :_reduce_98, + 6, 83, :_reduce_99, + 5, 83, :_reduce_100, + 8, 83, :_reduce_101, + 2, 84, :_reduce_102, + 3, 95, :_reduce_103, + 5, 86, :_reduce_104, + 6, 87, :_reduce_105, + 8, 87, :_reduce_106, + 8, 87, :_reduce_107, + 10, 87, :_reduce_108, + 5, 88, :_reduce_109, + 7, 88, :_reduce_110, + 1, 103, :_reduce_111, + 2, 103, :_reduce_112, + 4, 104, :_reduce_113 ] -racc_reduce_n = 110 +racc_reduce_n = 114 -racc_shift_n = 209 +racc_shift_n = 215 racc_token_table = { false => 0, @@ -601,48 +609,49 @@ racc_token_table = { :SWITCH => 27, :CASE => 28, :DEFAULT => 29, - :NEWLINE => 30, - :JS => 31, - :UMINUS => 32, - :NOT => 33, - "!" => 34, - "*" => 35, - "/" => 36, - "%" => 37, - "+" => 38, - "-" => 39, - "<=" => 40, - "<" => 41, - ">" => 42, - ">=" => 43, - "==" => 44, - "!=" => 45, - :IS => 46, - :AINT => 47, - "&&" => 48, - "||" => 49, - :AND => 50, - :OR => 51, - ":" => 52, - "-=" => 53, - "+=" => 54, - "/=" => 55, - "*=" => 56, - "||=" => 57, - "&&=" => 58, - "." => 59, - "\n" => 60, - ";" => 61, - "=>" => 62, - "," => 63, - "[" => 64, - "]" => 65, - "{" => 66, - "}" => 67, - "(" => 68, - ")" => 69 } + :SUPER => 30, + :NEWLINE => 31, + :JS => 32, + :UMINUS => 33, + :NOT => 34, + "!" => 35, + "*" => 36, + "/" => 37, + "%" => 38, + "+" => 39, + "-" => 40, + "<=" => 41, + "<" => 42, + ">" => 43, + ">=" => 44, + "==" => 45, + "!=" => 46, + :IS => 47, + :AINT => 48, + "&&" => 49, + "||" => 50, + :AND => 51, + :OR => 52, + ":" => 53, + "-=" => 54, + "+=" => 55, + "/=" => 56, + "*=" => 57, + "||=" => 58, + "&&=" => 59, + "." => 60, + "\n" => 61, + ";" => 62, + "=>" => 63, + "," => 64, + "[" => 65, + "]" => 66, + "{" => 67, + "}" => 68, + "(" => 69, + ")" => 70 } -racc_nt_base = 70 +racc_nt_base = 71 racc_use_result_var = true @@ -693,6 +702,7 @@ Racc_token_to_s_table = [ "SWITCH", "CASE", "DEFAULT", + "SUPER", "NEWLINE", "JS", "UMINUS", @@ -754,6 +764,7 @@ Racc_token_to_s_table = [ "Then", "AssignObj", "ParamList", + "CodeBody", "Array", "Object", "Parenthetical", @@ -762,6 +773,7 @@ Racc_token_to_s_table = [ "Index", "Slice", "AssignList", + "Super", "ArgList", "Cases", "Case" ] @@ -772,49 +784,49 @@ Racc_debug_parser = false # reduce 0 omitted -module_eval(<<'.,.,', 'grammar.y', 39) +module_eval(<<'.,.,', 'grammar.y', 40) def _reduce_1(val, _values, result) result = Nodes.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 40) +module_eval(<<'.,.,', 'grammar.y', 41) def _reduce_2(val, _values, result) result = Nodes.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 41) +module_eval(<<'.,.,', 'grammar.y', 42) def _reduce_3(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 46) +module_eval(<<'.,.,', 'grammar.y', 47) def _reduce_4(val, _values, result) result = Nodes.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 47) +module_eval(<<'.,.,', 'grammar.y', 48) def _reduce_5(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 48) +module_eval(<<'.,.,', 'grammar.y', 49) def _reduce_6(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 49) +module_eval(<<'.,.,', 'grammar.y', 50) def _reduce_7(val, _values, result) result = val[1] result @@ -855,596 +867,624 @@ module_eval(<<'.,.,', 'grammar.y', 49) # reduce 24 omitted -module_eval(<<'.,.,', 'grammar.y', 83) +module_eval(<<'.,.,', 'grammar.y', 84) def _reduce_25(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 84) +module_eval(<<'.,.,', 'grammar.y', 85) def _reduce_26(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 85) +module_eval(<<'.,.,', 'grammar.y', 86) def _reduce_27(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 86) +module_eval(<<'.,.,', 'grammar.y', 87) def _reduce_28(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 87) +module_eval(<<'.,.,', 'grammar.y', 88) def _reduce_29(val, _values, result) result = LiteralNode.new(true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 88) +module_eval(<<'.,.,', 'grammar.y', 89) def _reduce_30(val, _values, result) result = LiteralNode.new(false) result end .,., -module_eval(<<'.,.,', 'grammar.y', 89) +module_eval(<<'.,.,', 'grammar.y', 90) def _reduce_31(val, _values, result) result = LiteralNode.new(nil) result end .,., -module_eval(<<'.,.,', 'grammar.y', 90) +module_eval(<<'.,.,', 'grammar.y', 91) def _reduce_32(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 91) +module_eval(<<'.,.,', 'grammar.y', 92) def _reduce_33(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 96) +module_eval(<<'.,.,', 'grammar.y', 97) def _reduce_34(val, _values, result) result = AssignNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 101) +module_eval(<<'.,.,', 'grammar.y', 102) def _reduce_35(val, _values, result) result = AssignNode.new(val[0], val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 106) +module_eval(<<'.,.,', 'grammar.y', 107) def _reduce_36(val, _values, result) result = ReturnNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 113) +module_eval(<<'.,.,', 'grammar.y', 114) def _reduce_37(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 114) +module_eval(<<'.,.,', 'grammar.y', 115) def _reduce_38(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 115) +module_eval(<<'.,.,', 'grammar.y', 116) def _reduce_39(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 118) +module_eval(<<'.,.,', 'grammar.y', 119) def _reduce_40(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 119) +module_eval(<<'.,.,', 'grammar.y', 120) def _reduce_41(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 120) +module_eval(<<'.,.,', 'grammar.y', 121) def _reduce_42(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 122) +module_eval(<<'.,.,', 'grammar.y', 123) def _reduce_43(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 123) +module_eval(<<'.,.,', 'grammar.y', 124) def _reduce_44(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 125) +module_eval(<<'.,.,', 'grammar.y', 126) def _reduce_45(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 126) +module_eval(<<'.,.,', 'grammar.y', 127) def _reduce_46(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 127) +module_eval(<<'.,.,', 'grammar.y', 128) def _reduce_47(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 128) +module_eval(<<'.,.,', 'grammar.y', 129) def _reduce_48(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 130) +module_eval(<<'.,.,', 'grammar.y', 131) def _reduce_49(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 131) +module_eval(<<'.,.,', 'grammar.y', 132) def _reduce_50(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 132) +module_eval(<<'.,.,', 'grammar.y', 133) def _reduce_51(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 133) +module_eval(<<'.,.,', 'grammar.y', 134) def _reduce_52(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 135) +module_eval(<<'.,.,', 'grammar.y', 136) def _reduce_53(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 136) +module_eval(<<'.,.,', 'grammar.y', 137) def _reduce_54(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 137) +module_eval(<<'.,.,', 'grammar.y', 138) def _reduce_55(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 138) +module_eval(<<'.,.,', 'grammar.y', 139) def _reduce_56(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 140) +module_eval(<<'.,.,', 'grammar.y', 141) def _reduce_57(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 141) +module_eval(<<'.,.,', 'grammar.y', 142) def _reduce_58(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 142) +module_eval(<<'.,.,', 'grammar.y', 143) def _reduce_59(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 143) +module_eval(<<'.,.,', 'grammar.y', 144) def _reduce_60(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 144) +module_eval(<<'.,.,', 'grammar.y', 145) def _reduce_61(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 145) +module_eval(<<'.,.,', 'grammar.y', 146) def _reduce_62(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 151) +module_eval(<<'.,.,', 'grammar.y', 152) def _reduce_63(val, _values, result) result = CodeNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 152) +module_eval(<<'.,.,', 'grammar.y', 153) def _reduce_64(val, _values, result) result = CodeNode.new([], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 156) - def _reduce_65(val, _values, result) - result = val - result - end -.,., - module_eval(<<'.,.,', 'grammar.y', 157) + def _reduce_65(val, _values, result) + result = Nodes.new([]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 158) def _reduce_66(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 161) - def _reduce_67(val, _values, result) - result = ValueNode.new(val) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 162) - def _reduce_68(val, _values, result) - result = ValueNode.new(val) + result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 163) + def _reduce_67(val, _values, result) + result = val + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 164) + def _reduce_68(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 168) def _reduce_69(val, _values, result) result = ValueNode.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 164) +module_eval(<<'.,.,', 'grammar.y', 169) def _reduce_70(val, _values, result) result = ValueNode.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 165) - def _reduce_71(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 166) - def _reduce_72(val, _values, result) - result = ValueNode.new(val[0], [val[1]]) - result - end -.,., - module_eval(<<'.,.,', 'grammar.y', 170) - def _reduce_73(val, _values, result) - result = AccessorNode.new(val[1]) + def _reduce_71(val, _values, result) + result = ValueNode.new(val) result end .,., module_eval(<<'.,.,', 'grammar.y', 171) - def _reduce_74(val, _values, result) - result = val[0] + def _reduce_72(val, _values, result) + result = ValueNode.new(val) result end .,., module_eval(<<'.,.,', 'grammar.y', 172) + def _reduce_73(val, _values, result) + result = val[0] << val[1] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 173) + def _reduce_74(val, _values, result) + result = ValueNode.new(val[0], [val[1]]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 177) def _reduce_75(val, _values, result) + result = AccessorNode.new(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 178) + def _reduce_76(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 176) - def _reduce_76(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 179) + def _reduce_77(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 183) + def _reduce_78(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 180) - def _reduce_77(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 187) + def _reduce_79(val, _values, result) result = SliceNode.new(val[1], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 184) - def _reduce_78(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 191) + def _reduce_80(val, _values, result) result = ObjectNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 188) - def _reduce_79(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 195) + def _reduce_81(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 189) - def _reduce_80(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 190) - def _reduce_81(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 191) - def _reduce_82(val, _values, result) - result = val[0] << val[2] - result - end -.,., - module_eval(<<'.,.,', 'grammar.y', 196) - def _reduce_83(val, _values, result) - result = val[0] + def _reduce_82(val, _values, result) + result = val result end .,., module_eval(<<'.,.,', 'grammar.y', 197) + def _reduce_83(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 198) def _reduce_84(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 203) + def _reduce_85(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 204) + def _reduce_86(val, _values, result) result = val[1].new_instance result end .,., -module_eval(<<'.,.,', 'grammar.y', 201) - def _reduce_85(val, _values, result) - result = CallNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 206) - def _reduce_86(val, _values, result) - result = ArrayNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 211) +module_eval(<<'.,.,', 'grammar.y', 205) def _reduce_87(val, _values, result) - result = [] + result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 212) +module_eval(<<'.,.,', 'grammar.y', 209) def _reduce_88(val, _values, result) - result = val + result = CallNode.new(val[0], val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 213) def _reduce_89(val, _values, result) - result = val[0] << val[2] + result = CallNode.new(:super, val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 214) +module_eval(<<'.,.,', 'grammar.y', 218) def _reduce_90(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 219) - def _reduce_91(val, _values, result) - result = IfNode.new(val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 222) - def _reduce_92(val, _values, result) - result = IfNode.new(val[1], val[3], val[5]) + result = ArrayNode.new(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 223) - def _reduce_93(val, _values, result) - result = IfNode.new(val[2], Nodes.new([val[0]])) + def _reduce_91(val, _values, result) + result = [] result end .,., module_eval(<<'.,.,', 'grammar.y', 224) - def _reduce_94(val, _values, result) - result = IfNode.new(val[2], Nodes.new([val[0]]), nil, :invert) + def _reduce_92(val, _values, result) + result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 229) - def _reduce_95(val, _values, result) - result = TryNode.new(val[1], val[3], val[4]) +module_eval(<<'.,.,', 'grammar.y', 225) + def _reduce_93(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 226) + def _reduce_94(val, _values, result) + result = val[0] << val[2] result end .,., module_eval(<<'.,.,', 'grammar.y', 231) - def _reduce_96(val, _values, result) - result = TryNode.new(val[1], nil, nil, val[3]) + def _reduce_95(val, _values, result) + result = IfNode.new(val[1], val[3]) result end .,., module_eval(<<'.,.,', 'grammar.y', 234) + def _reduce_96(val, _values, result) + result = IfNode.new(val[1], val[3], val[5]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 235) def _reduce_97(val, _values, result) + result = IfNode.new(val[2], Nodes.new([val[0]])) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 236) + def _reduce_98(val, _values, result) + result = IfNode.new(val[2], Nodes.new([val[0]]), nil, :invert) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 241) + def _reduce_99(val, _values, result) + result = TryNode.new(val[1], val[3], val[4]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 243) + def _reduce_100(val, _values, result) + result = TryNode.new(val[1], nil, nil, val[3]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 246) + def _reduce_101(val, _values, result) result = TryNode.new(val[1], val[3], val[4], val[6]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 238) - def _reduce_98(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 250) + def _reduce_102(val, _values, result) result = ThrowNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 242) - def _reduce_99(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 254) + def _reduce_103(val, _values, result) result = ParentheticalNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 247) - def _reduce_100(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 259) + def _reduce_104(val, _values, result) result = WhileNode.new(val[1], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 252) - def _reduce_101(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 264) + def _reduce_105(val, _values, result) result = ForNode.new(val[0], val[4], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 255) - def _reduce_102(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 267) + def _reduce_106(val, _values, result) result = ForNode.new(val[0], val[6], val[2], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 258) - def _reduce_103(val, _values, result) - result = ForNode.new(IfNode.new(val[6], Nodes.new([val[0]])), val[4], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 262) - def _reduce_104(val, _values, result) - result = ForNode.new(IfNode.new(val[8], Nodes.new([val[0]])), val[6], val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 267) - def _reduce_105(val, _values, result) - result = val[3].rewrite_condition(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 269) - def _reduce_106(val, _values, result) - result = val[3].rewrite_condition(val[1]).add_default(val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 273) +module_eval(<<'.,.,', 'grammar.y', 270) def _reduce_107(val, _values, result) - result = val[0] + result = ForNode.new(IfNode.new(val[6], Nodes.new([val[0]])), val[4], val[2]) result end .,., module_eval(<<'.,.,', 'grammar.y', 274) def _reduce_108(val, _values, result) + result = ForNode.new(IfNode.new(val[8], Nodes.new([val[0]])), val[6], val[2], val[4]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 279) + def _reduce_109(val, _values, result) + result = val[3].rewrite_condition(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 281) + def _reduce_110(val, _values, result) + result = val[3].rewrite_condition(val[1]).add_default(val[5]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 285) + def _reduce_111(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 286) + def _reduce_112(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 278) - def _reduce_109(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 290) + def _reduce_113(val, _values, result) result = IfNode.new(val[1], val[3]) result end