From e48d49df3b65ecd7f99c4e5ffc44efccda4e53eb Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Tue, 15 Dec 2009 22:30:27 -0500 Subject: [PATCH] got case statements wokring --- code.jaa | 14 +- grammar.y | 18 + lexer.rb | 3 +- nodes.rb | 23 +- parser.rb | 1555 +++++++++++++++++++++++++++-------------------------- 5 files changed, 853 insertions(+), 760 deletions(-) diff --git a/code.jaa b/code.jaa index 701098ab..aaa0bcdf 100644 --- a/code.jaa +++ b/code.jaa @@ -1,5 +1,4 @@ -# TODO: switch/case statements -# Think of a name for this crazy thing. +# TODO: Think of a name for this crazy thing. # Functions: square: x => x * x. @@ -100,3 +99,14 @@ b: 20 supper: food.capitalize() for food in ['toast', 'cheese', 'wine']. drink(bottle) for bottle, i in ['soda', 'wine', 'lemonade'] if even(i). + +# Switch statements. +switch day +case "Tuesday" then eat_breakfast() +case "Sunday" then go_to_church() +case "Saturday" then go_to_the_park(). +case "Wednesday" + eat_breakfast() + go_to_work() + eat_dinner() +default go_to_work(). diff --git a/grammar.y b/grammar.y index 8d0b2856..fd4b1c5a 100644 --- a/grammar.y +++ b/grammar.y @@ -9,6 +9,7 @@ token CODE PARAM NEW RETURN token TRY CATCH FINALLY THROW token BREAK CONTINUE token FOR IN WHILE +token SWITCH CASE DEFAULT token NEWLINE token JS @@ -66,6 +67,7 @@ rule | Return | While | For + | Switch ; # All tokens that can terminate an expression @@ -260,6 +262,22 @@ rule IF Expression "." { result = ForNode.new(IfNode.new(val[8], Nodes.new([val[0]])), val[6], val[2], val[4]) } ; + Switch: + SWITCH Expression Then + Cases "." { result = val[3].rewrite_condition(val[1]) } + | SWITCH Expression Then + Cases DEFAULT Expressions "." { result = val[3].rewrite_condition(val[1]).add_default(val[5]) } + ; + + Cases: + Case { result = val[0] } + | Cases Case { result = val[0] << val[1] } + ; + + Case: + CASE Expression Then Expressions { result = IfNode.new(val[1], val[3]) } + ; + ObjectStart: "{" { result = nil } | "{" "\n" { result = nil } diff --git a/lexer.rb b/lexer.rb index 3d685a30..acef6687 100644 --- a/lexer.rb +++ b/lexer.rb @@ -6,7 +6,8 @@ class Lexer "new", "return", "try", "catch", "finally", "throw", "break", "continue", - "for", "in", "while"] + "for", "in", "while", + "switch", "case", "default"] IDENTIFIER = /\A([a-zA-Z$_]\w*)/ NUMBER = /\A([0-9]+(\.[0-9]+)?)/ diff --git a/nodes.rb b/nodes.rb index 1466d0a9..5fd6ba82 100644 --- a/nodes.rb +++ b/nodes.rb @@ -35,6 +35,7 @@ class Node # Tabs are two spaces for pretty-printing. TAB = ' ' + def flatten; self; end def line_ending; ';'; end def statement?; false; end def custom_return?; false; end @@ -280,7 +281,7 @@ end # "if-else" control structure. Look at this node if you want to implement other control # structures like while, for, loop, etc. class IfNode < Node - FORCE_STATEMENT = [Nodes, ReturnNode, AssignNode] + FORCE_STATEMENT = [Nodes, ReturnNode, AssignNode, IfNode] def initialize(condition, body, else_body=nil, tag=nil) @condition = condition @@ -290,10 +291,28 @@ class IfNode < Node end def <<(else_body) - @else_body = else_body && else_body.flatten + eb = else_body.flatten + @else_body ? @else_body << eb : @else_body = eb self end + # Rewrite a chain of IfNodes with their switch condition for equality. + def rewrite_condition(expression) + @condition = OpNode.new("is", expression, @condition) + @else_body.rewrite_condition(expression) if chain? + self + end + + # Rewrite a chain of IfNodes to add a default case as the final else. + def add_default(expressions) + chain? ? @else_body.add_default(expressions) : @else_body = expressions + self + end + + def chain? + @chain ||= @else_body && @else_body.is_a?(IfNode) + end + def statement? @is_statement ||= (FORCE_STATEMENT.include?(@body.class) || FORCE_STATEMENT.include?(@else_body.class)) end diff --git a/parser.rb b/parser.rb index df4533b3..a34d50a4 100644 --- a/parser.rb +++ b/parser.rb @@ -11,7 +11,7 @@ require 'racc/parser.rb' class Parser < Racc::Parser -module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 300) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 318) def parse(code, show_tokens=false) # @yydebug = true @tokens = Lexer.new.tokenize(code) @@ -26,143 +26,134 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 300) ##### State transition tables begin ### clist = [ -'11,196,55,87,30,34,39,43,48,4,8,159,160,20,23,28,33,49,5,46,3,9,78,55', -'19,188,29,177,38,42,108,184,109,182,16,49,5,117,5,167,195,105,8,115', -'55,116,49,5,67,55,58,121,49,5,75,80,15,67,87,27,11,36,178,45,30,34,39', -'43,48,4,8,58,99,20,23,28,33,78,194,46,3,9,49,5,19,103,29,185,38,42,72', -'27,58,36,16,45,45,58,67,87,71,45,165,5,111,165,5,127,115,75,80,179,87', -'132,163,170,15,163,78,27,11,36,132,45,30,34,39,43,48,4,8,78,122,20,23', -'28,33,131,5,46,3,9,54,129,19,138,29,71,38,42,75,80,49,5,16,49,5,124', -',87,190,49,5,75,80,,197,,49,5,49,5,87,204,,183,15,,78,27,11,36,,45,30', -'34,39,43,48,4,8,78,,20,23,28,33,49,5,46,3,9,186,,19,,29,,38,42,75,80', -'49,5,16,,,,,,,,,75,80,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4', -'8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,', -',15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29', -',38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39,43', -'48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,', -',,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,', -'19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34', -'39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,', -',,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46', -'3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30', -'34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,', -',,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33', -',,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,', -'45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16', -',,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28', -'33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36', -',45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16', -',,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28', -'33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11', -'36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,', -',16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15', -',,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38', -'42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39,43,48,4', -'8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,', -',15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29', -',38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48', -'4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,', -',,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19', -',29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39', -'43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,', -',,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9', -',,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34', -'39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,', -',,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46', -'3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45', -'30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,', -',,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33', -',,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36', -',45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16', -',,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23,28', -'33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11', -'36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,', -',16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20,23', -'28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11', -'36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42,,,', -',16,,,,,,,,,,,,,,,,,,49,5,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27', -'11,36,,45,30,34,39,43,48,4,8,,,20,23,28,33,,,46,3,9,,,19,,29,,38,42', -',,,,16,,,,,,,,,,,,,,,,,,,,,,15,,,27,11,36,,45,30,34,39,43,48,4,8,,,20', -'23,28,33,,,46,3,9,,,19,,29,,38,42,,,,,16,79,,,87,,,,,,,,,,,,,,,,,,15', -'78,,27,,36,,45,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,', -'89,91,93,95,,-115,75,80,87,,,,172,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82', -'84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,,192,75,80,87,201', -',,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76', -'81,83,85,,89,91,93,95,,202,75,80,87,193,,,,,,,,,,,,,,,,,,78,,,,,,,,98', -'74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,,-115,75', -'80,87,203,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96', -'97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,206,,,,,,,,,,,,,,,,,,78', -',,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93', -'95,,-115,75,80,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90', -'92,94,96,97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,,,,,,,,,,,,,,,', -',,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89', -'91,93,95,,79,75,80,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86', -'88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,,,,,,,,,', -',,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85', -',89,91,93,95,,79,75,80,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84', -'86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,,,,,,', -',,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83', -'85,,89,91,93,95,,,75,80,79,,119,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74', -'77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,49,5,75,80', -'79,,,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96', -'97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,,,,,,,,,,,,,,,,,,,78,,,', -',,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95', -',79,75,80,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92', -'94,96,97,73,76,81,83,85,,89,91,93,95,,79,75,80,87,,,,,,,,,,,,,,,,,,', -'78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,,89,91', -'93,95,,,75,80,79,,119,87,,,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84', -'86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,49,5,75,80,79,,,87', -',,,,,,,,,,,,,,,,,,78,,,,,,,,98,74,77,82,84,86,88,90,92,94,96,97,73,76', -'81,83,85,87,89,91,93,95,,,75,80,,,,,,,,,,,78,,87,,,,,87,98,74,77,82', -'84,86,88,90,92,94,96,97,73,78,,,,,78,,,98,74,77,75,80,98,74,77,82,84', -'86,88,90,92,94,96,97,73,87,,,,,,75,80,,,,75,80,,,,,,,78,,,,,,,87,98', -'74,77,82,84,86,88,90,92,94,96,97,73,,,,,,78,,,,,,75,80,98,74,77,82,84', -'86,88,90,92,94,96,97,73,76,81,83,85,87,89,91,93,95,,,75,80,,,,,,,,,', -',78,,,,,,,87,98,74,77,82,84,86,88,90,92,94,96,97,73,,,,,,78,,,,,,75', -'80,98,74,77,82,84,86,88,90,92,94,96,97,73,76,81,83,85,87,89,91,93,95', -'87,,75,80,,,,,,,,,,,78,,,,,78,,,98,74,77,82,84,98,74,77,82,84,86,88', -'90,92,94,96,97,73,87,,,,,,75,80,,,,75,80,,,,,,,78,,,,,,,87,98,74,77', -'82,84,86,88,90,92,94,96,97,73,76,81,83,85,,78,,,,,,75,80,98,74,77,82', -'84,86,88,90,92,94,96,97,73,87,,,,,,,,,,,75,80,,,,,,,78,,87,,,,,87,98', -'74,77,82,84,86,88,90,92,94,96,97,73,78,,,,,78,,,98,74,77,75,80,98,74', -'77,82,84,86,88,90,92,94,96,97,73,87,,,,,87,75,80,,,,75,80,,,,,,87,78', -',,,,78,,,98,74,77,82,84,98,74,77,82,84,78,,,,,,,87,98,74,77,82,84,,75', -'80,,,,75,80,,,,,,78,,,,,,75,80,98,74,77,82,84,86,88,90,92,94,96,97,73', -'76,81,83,85,87,89,91,93,95,,,75,80,,,,,,,,,,,78,,,,,,,,98,74,77,82,84', -'86,88,90,92,94,96,97,73,76,81,83,85,,89,91,93,95,,,75,80' ] - racc_action_table = arr = Array.new(4932, nil) +'12,74,109,74,32,37,40,45,50,4,7,206,185,22,25,31,35,179,196,49,3,9,116', +'17,19,24,191,116,17,46,131,2,8,128,117,74,182,30,74,117,14,17,92,179', +'60,193,61,110,14,17,186,197,77,205,77,14,17,107,11,29,105,83,43,12,1', +'176,11,32,37,40,45,50,4,7,115,172,22,25,31,35,14,17,49,3,9,192,77,19', +'24,77,11,209,46,123,2,8,89,93,109,12,30,14,17,32,37,40,45,50,4,7,14', +'17,22,25,31,35,169,7,49,3,9,168,29,19,24,43,68,1,46,11,2,8,201,92,169', +'12,30,135,92,32,37,40,45,50,4,7,133,134,22,25,31,35,83,109,49,3,9,83', +'29,19,24,43,58,1,46,11,2,8,53,43,92,1,30,11,125,17,142,92,14,17,128', +',129,132,14,17,,89,93,83,14,17,89,93,29,,83,43,12,1,,11,32,37,40,45', +'50,4,7,14,17,22,25,31,35,14,17,49,3,9,212,,19,24,89,93,,46,,2,8,89,93', +'92,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,83,49,3,9,,29,19,24,43', +',1,46,11,2,8,14,17,,12,30,174,,32,37,40,45,50,4,7,,,22,25,31,35,89,93', +'49,3,9,,29,19,24,43,,1,46,11,2,8,14,17,,12,30,216,,32,37,40,45,50,4', +'7,,,22,25,31,35,14,17,49,3,9,210,29,19,24,43,,1,46,11,2,8,14,17,,12', +'30,199,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46', +'11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24', +'43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9', +',29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35', +',,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22', +'25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,92,32,37,40,45', +'50,4,7,,,22,25,31,35,,,49,3,9,83,29,19,24,43,,1,46,11,2,8,86,88,91,', +'30,164,17,,,,,166,,,,107,,,,,,,14,17,89,93,29,,,43,12,1,,11,32,37,40', +'45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,12,30,,,32,37', +'40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12', +'30,,92,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,83,29,19,24,43,,1,46', +'11,2,8,86,88,91,,30,,,,,,,,,,,,,,,,,,14,17,89,93,29,,,43,12,1,,11,32', +'37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,,30,,,', +',,,,,,,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4,7,,,22,25,31', +'35,,,49,3,9,,,19,24,,,,46,,2,8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,', +'43,12,1,,11,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46', +',2,8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50', +'4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,12,30,,,32,37,40,45', +'50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,,30,,,,,', +',,,,,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4,7,,,22,25,31,35', +',,49,3,9,,,19,24,,,,46,,2,8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43', +'12,1,,11,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2', +'8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43', +',1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29', +'19,24,43,,1,46,11,2,8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43,12,1,', +'11,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,', +'30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4,7,,,22', +'25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,12,30,,,32,37,40,45,50,4,7,', +',22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40', +'45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30', +',,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2', +'8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4', +'7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,,12,30,,,32,37,40,45,50', +'4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,,30,,,,,,,,', +',,,,,,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4,7,,,22,25,31,35,', +',49,3,9,,,19,24,,,,46,,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31', +'35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7', +',,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,,30,,,,,,,,,,,,', +',,,,,14,17,,,29,,,43,12,1,,11,32,37,40,45,50,4,7,,,22,25,31,35,,,49', +'3,9,,,19,24,,,,46,,2,8,,,,,30,,,,,,,,,,,,,,,,,,14,17,,,29,,,43,12,1', +',11,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,,19,24,,,,46,,2,8,,,', +'12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46', +'11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24', +'43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9', +',29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35', +',,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22', +'25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50', +'4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37', +'40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12', +'30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11', +'2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43', +',1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29', +'19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,', +'49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22', +'25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50', +'4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37', +'40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12', +'30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11', +'2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43', +',1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29', +'19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,', +'49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22', +'25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37,40,45,50', +'4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12,30,,,32,37', +'40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11,2,8,,,,12', +'30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43,,1,46,11', +'2,8,,,,12,30,,,32,37,40,45,50,4,7,,,22,25,31,35,,,49,3,9,,29,19,24,43', +',1,46,11,2,8,,,84,,30,92,,,,,,,,,,,,,,,,,,,83,,29,,,43,,1,,11,,86,88', +'91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,,101,103,79,81,,-121', +'89,93,92,,,,184,,,,,,,,,,,,,,,83,,,,,,207,,,92,,86,88,91,95,97,99,100', +'102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,,218,89,93,92,217,86', +'88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81', +',-121,89,93,92,208,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96', +'98,83,101,103,79,81,,84,89,93,92,219,86,88,91,95,97,99,100,102,104,80', +'82,85,87,90,94,96,98,83,101,103,79,81,,84,89,93,92,221,86,88,91,95,97', +'99,100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,,,89,93,,,86', +'88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,,101,103,79,81,,', +'89,93,84,,120,92,,,,,,,,,,,,,,,,,,,83,,,,,,84,,,92,,86,88,91,95,97,99', +'100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,14,17,89,93,,,86', +'88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,,101,103,79,81,,84', +'89,93,92,,,,,,,,,,,,,,,,,,,83,,,,,,84,,120,92,,86,88,91,95,97,99,100', +'102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,,84,89,93,92,,86,88', +'91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,14', +'17,89,93,,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,,101', +'103,79,81,,84,89,93,92,,,,,,,,,,,,,,,,,,,83,,,,,,84,,120,92,,86,88,91', +'95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,,84,89', +'93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101', +'103,79,81,14,17,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87', +'90,94,96,98,83,101,103,79,81,,84,89,93,92,,86,88,91,95,97,,,,,,,,,,', +',,83,,,,,,84,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90', +'94,96,98,83,101,103,79,81,,84,89,93,92,,86,88,91,95,97,99,100,102,104', +'80,82,85,87,90,94,96,98,83,101,103,79,81,,,89,93,,,86,88,91,95,97,99', +'100,102,104,80,82,85,87,90,94,96,98,,101,103,79,81,,,89,93,84,,120,92', +',,,,,,,,,,,,,,,,,,83,,,,,,84,,,92,,86,88,91,95,97,99,100,102,104,80', +'82,85,87,90,94,96,98,83,101,103,79,81,14,17,89,93,92,,86,88,91,95,97', +'99,100,102,104,80,82,85,87,90,94,96,98,83,101,103,79,81,,-121,89,93', +'92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101,103', +'79,81,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96', +'98,83,101,103,79,81,,,89,93,92,,86,88,91,95,97,,,,,,,,,,,,,83,,,,,,', +'89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94,96,98,83,101', +'103,79,81,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85,87,90,94', +'96,98,83,101,103,79,81,,,89,93,92,,86,88,91,95,97,99,100,102,104,80', +'82,85,87,,,,,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82', +'85,87,90,94,96,98,83,101,103,79,81,,,89,93,92,,86,88,91,95,97,99,100', +'102,104,80,82,85,87,,,,92,83,,,,,,,89,93,92,,86,88,91,95,97,,,83,,,', +',,,,,,83,86,88,91,95,97,,89,93,92,,86,88,91,95,97,99,100,102,104,80', +'82,85,87,,89,93,,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80', +'82,85,87,,,,,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82', +'85,87,,,,,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85', +'87,90,94,96,98,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82', +'85,87,,,,,83,,,,,,,89,93,92,,86,88,91,95,97,99,100,102,104,80,82,85', +'87,,,,,83,,,,,,,89,93,,,86,88,91,95,97,99,100,102,104,80,82,85,87,,', +',,,,,,,,,89,93' ] + racc_action_table = arr = Array.new(3813, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -172,162 +163,154 @@ clist = [ end clist = [ -'0,189,65,158,0,0,0,0,0,0,0,101,101,0,0,0,0,62,62,0,0,0,158,14,0,178', -'0,138,0,0,41,171,41,165,0,189,189,52,52,109,189,36,23,52,66,52,101,101', -'24,35,65,54,0,0,158,158,0,128,110,0,1,0,138,0,1,1,1,1,1,1,1,14,27,1', -'1,1,1,110,188,1,1,1,171,171,1,35,1,171,1,1,24,23,66,23,1,23,66,35,129', -'107,24,35,162,162,45,106,106,67,162,110,110,159,134,72,162,117,1,106', -'107,1,11,1,131,1,11,11,11,11,11,11,11,134,55,11,11,11,11,69,69,11,11', -'11,13,69,11,78,11,69,11,11,107,107,60,60,11,180,180,60,,137,180,191', -'191,134,134,,191,,200,200,166,166,61,200,,166,11,,137,11,202,11,,11', -'202,202,202,202,202,202,202,61,,202,202,202,202,173,173,202,202,202', -'173,,202,,202,,202,202,137,137,22,22,202,,,,,,,,,61,61,,,,,,,,,,,,202', -',,202,92,202,,202,92,92,92,92,92,92,92,,,92,92,92,92,,,92,92,92,,,92', -',92,,92,92,,,,,92,,,,,,,,,,,,,,,,,,,,,,92,,,92,15,92,,92,15,15,15,15', -'15,15,15,,,15,15,15,15,,,15,15,15,,,15,,15,,15,15,,,,,15,,,,,,,,,,,', -',,,,,,15,15,,,15,,,15,16,15,,15,16,16,16,16,16,16,16,,,16,16,16,16,', -',16,16,16,,,16,,16,,16,16,,,,,16,,,,,,,,,,,,,,,,,,,,,,16,,,16,18,16', -',16,18,18,18,18,18,18,18,,,18,18,18,18,,,18,18,18,,,18,,18,,18,18,,', -',,18,,,,,,,,,,,,,,,,,,18,18,,,18,,,18,19,18,,18,19,19,19,19,19,19,19', -',,19,19,19,19,,,19,19,19,,,19,,19,,19,19,,,,,19,,,,,,,,,,,,,,,,,,,,', -',19,,,19,91,19,,19,91,91,91,91,91,91,91,,,91,91,91,91,,,91,91,91,,,91', -',91,,91,91,,,,,91,,,,,,,,,,,,,,,,,,,,,,91,,,91,196,91,,91,196,196,196', -'196,196,196,196,,,196,196,196,196,,,196,196,196,,,196,,196,,196,196', -',,,,196,,,,,,,,,,,,,,,,,,196,196,,,196,,,196,194,196,,196,194,194,194', -'194,194,194,194,,,194,194,194,194,,,194,194,194,,,194,,194,,194,194', -',,,,194,,,,,,,,,,,,,,,,,,,,,,194,,,194,192,194,,194,192,192,192,192', -'192,192,192,,,192,192,192,192,,,192,192,192,,,192,,192,,192,192,,,,', -'192,,,,,,,,,,,,,,,,,,,,,,192,,,192,90,192,,192,90,90,90,90,90,90,90', -',,90,90,90,90,,,90,90,90,,,90,,90,,90,90,,,,,90,,,,,,,,,,,,,,,,,,,,', -',90,,,90,28,90,,90,28,28,28,28,28,28,28,,,28,28,28,28,,,28,28,28,,,28', -',28,,28,28,,,,,28,,,,,,,,,,,,,,,,,,,,,,28,,,28,33,28,,28,33,33,33,33', -'33,33,33,,,33,33,33,33,,,33,33,33,,,33,,33,,33,33,,,,,33,,,,,,,,,,,', -',,,,,,33,33,,,33,,,33,184,33,,33,184,184,184,184,184,184,184,,,184,184', -'184,184,,,184,184,184,,,184,,184,,184,184,,,,,184,,,,,,,,,,,,,,,,,,184', -'184,,,184,,,184,179,184,,184,179,179,179,179,179,179,179,,,179,179,179', -'179,,,179,179,179,,,179,,179,,179,179,,,,,179,,,,,,,,,,,,,,,,,,179,179', -',,179,,,179,37,179,,179,37,37,37,37,37,37,37,,,37,37,37,37,,,37,37,37', -',,37,,37,,37,37,,,,,37,,,,,,,,,,,,,,,,,,37,37,,,37,,,37,38,37,,37,38', -'38,38,38,38,38,38,,,38,38,38,38,,,38,38,38,,,38,,38,,38,38,,,,,38,,', -',,,,,,,,,,,,,,,,,,,38,,,38,177,38,,38,177,177,177,177,177,177,177,,', -'177,177,177,177,,,177,177,177,,,177,,177,,177,177,,,,,177,,,,,,,,,,', -',,,,,,,,,,,177,,,177,42,177,,177,42,42,42,42,42,42,42,,,42,42,42,42', -',,42,42,42,,,42,,42,,42,42,,,,,42,,,,,,,,,,,,,,,,,,,,,,42,,,42,160,42', -',42,160,160,160,160,160,160,160,,,160,160,160,160,,,160,160,160,,,160', -',160,,160,160,,,,,160,,,,,,,,,,,,,,,,,,160,160,,,160,,,160,46,160,,160', -'46,46,46,46,46,46,46,,,46,46,46,46,,,46,46,46,,,46,,46,,46,46,,,,,46', -',,,,,,,,,,,,,,,,,,,,,46,,,46,93,46,,46,93,93,93,93,93,93,93,,,93,93', -'93,93,,,93,93,93,,,93,,93,,93,93,,,,,93,,,,,,,,,,,,,,,,,,,,,,93,,,93', -'127,93,,93,127,127,127,127,127,127,127,,,127,127,127,127,,,127,127,127', -',,127,,127,,127,127,,,,,127,,,,,,,,,,,,,,,,,,,,,,127,,,127,125,127,', -'127,125,125,125,125,125,125,125,,,125,125,125,125,,,125,125,125,,,125', -',125,,125,125,,,,,125,,,,,,,,,,,,,,,,,,125,125,,,125,,,125,89,125,,125', -'89,89,89,89,89,89,89,,,89,89,89,89,,,89,89,89,,,89,,89,,89,89,,,,,89', -',,,,,,,,,,,,,,,,,,,,,89,,,89,120,89,,89,120,120,120,120,120,120,120', -',,120,120,120,120,,,120,120,120,,,120,,120,,120,120,,,,,120,,,,,,,,', -',,,,,,,,,120,120,,,120,,,120,58,120,,120,58,58,58,58,58,58,58,,,58,58', -'58,58,,,58,58,58,,,58,,58,,58,58,,,,,58,,,,,,,,,,,,,,,,,,,,,,58,,,58', -'59,58,,58,59,59,59,59,59,59,59,,,59,59,59,59,,,59,59,59,,,59,,59,,59', -'59,,,,,59,,,,,,,,,,,,,,,,,,59,59,,,59,,,59,115,59,,59,115,115,115,115', -'115,115,115,,,115,115,115,115,,,115,115,115,,,115,,115,,115,115,,,,', -'115,,,,,,,,,,,,,,,,,,,,,,115,,,115,114,115,,115,114,114,114,114,114', -'114,114,,,114,114,114,114,,,114,114,114,,,114,,114,,114,114,,,,,114', -',,,,,,,,,,,,,,,,,,,,,114,,,114,108,114,,114,108,108,108,108,108,108', -'108,,,108,108,108,108,,,108,108,108,,,108,,108,,108,108,,,,,108,,,,', -',,,,,,,,,,,,,108,108,,,108,,,108,104,108,,108,104,104,104,104,104,104', -'104,,,104,104,104,104,,,104,104,104,,,104,,104,,104,104,,,,,104,,,,', -',,,,,,,,,,,,,,,,,104,,,104,64,104,,104,64,64,64,64,64,64,64,,,64,64', -'64,64,,,64,64,64,,,64,,64,,64,64,,,,,64,,,,,,,,,,,,,,,,,,,,,,64,,,64', -'103,64,,64,103,103,103,103,103,103,103,,,103,103,103,103,,,103,103,103', -',,103,,103,,103,103,,,,,103,,,,,,,,,,,,,,,,,,,,,,103,,,103,98,103,,103', -'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', -'96,97,,97,96,96,96,96,96,96,96,,,96,96,96,96,,,96,96,96,,,96,,96,,96', -'96,,,,,96,,,,,,,,,,,,,,,,,,,,,,96,,,96,95,96,,96,95,95,95,95,95,95,95', -',,95,95,95,95,,,95,95,95,,,95,,95,,95,95,,,,,95,,,,,,,,,,,,,,,,,,,,', -',95,,,95,73,95,,95,73,73,73,73,73,73,73,,,73,73,73,73,,,73,73,73,,,73', -',73,,73,73,,,,,73,,,,,,,,,,,,,,,,,,,,,,73,,,73,74,73,,73,74,74,74,74', -'74,74,74,,,74,74,74,74,,,74,74,74,,,74,,74,,74,74,,,,,74,,,,,,,,,,,', -',,,,,,,,,,74,,,74,75,74,,74,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,88,76,,76,88,88,88,88,88,88,88,,,88,88', -'88,88,,,88,88,88,,,88,,88,,88,88,,,,,88,,,,,,,,,,,,,,,,,,,,,,88,,,88', -'94,88,,88,94,94,94,94,94,94,94,,,94,94,94,94,,,94,94,94,,,94,,94,,94', -'94,,,,,94,,,,,,,,,,,,,,,,,,,,,,94,,,94,79,94,,94,79,79,79,79,79,79,79', -',,79,79,79,79,,,79,79,79,,,79,,79,,79,79,,,,,79,,,,,,,,,,,,,,,,,,,,', -',79,,,79,80,79,,79,80,80,80,80,80,80,80,,,80,80,80,80,,,80,80,80,,,80', -',80,,80,80,,,,,80,,,,,,,,,,,,,,,,,,,,,,80,,,80,81,80,,80,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,83,82,,82', -'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', -'85,84,,84,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,87,86,,86,87,87,87,87,87,87,87,,,87,87,87,87,,,87,87,87,,,87', -',87,,87,87,,,,,87,,,,,,,,,,,,,,,,,,,,,,87,,,87,77,87,,87,77,77,77,77', -'77,77,77,,,77,77,77,77,,,77,77,77,,,77,,77,,77,77,,,,,77,123,,,123,', -',,,,,,,,,,,,,,,,77,123,,77,,77,,77,,123,123,123,123,123,123,123,123', -'123,123,123,123,123,123,123,123,123,,123,123,123,123,,198,123,123,198', -',,,123,,,,,,,,,,,,,,,198,,,,,,,,198,198,198,198,198,198,198,198,198', -'198,198,198,198,198,198,198,198,,198,198,198,198,,187,198,198,187,198', -',,,,,,,,,,,,,,,,,187,,,,,,,,187,187,187,187,187,187,187,187,187,187', -'187,187,187,187,187,187,187,,187,187,187,187,,199,187,187,199,187,,', -',,,,,,,,,,,,,,,199,,,,,,,,199,199,199,199,199,199,199,199,199,199,199', -'199,199,199,199,199,199,,199,199,199,199,,205,199,199,205,199,,,,,,', -',,,,,,,,,,,205,,,,,,,,205,205,205,205,205,205,205,205,205,205,205,205', -'205,205,205,205,205,,205,205,205,205,,174,205,205,174,205,,,,,,,,,,', -',,,,,,,174,,,,,,,,174,174,174,174,174,174,174,174,174,174,174,174,174', -'174,174,174,174,,174,174,174,174,,139,174,174,139,,,,,,,,,,,,,,,,,,', -'139,,,,,,,,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139', -'139,139,,139,139,139,139,,26,139,139,26,,,,,,,,,,,,,,,,,,,26,,,,,,,', -'26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,,26,26,26,26,,51', -'26,26,51,,,,,,,,,,,,,,,,,,,51,,,,,,,,51,51,51,51,51,51,51,51,51,51,51', -'51,51,51,51,51,51,,51,51,51,51,,100,51,51,100,,,,,,,,,,,,,,,,,,,100', -',,,,,,,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100', -'100,,100,100,100,100,,135,100,100,135,,,,,,,,,,,,,,,,,,,135,,,,,,,,135', -'135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,,135', -'135,135,135,,140,135,135,140,,,,,,,,,,,,,,,,,,,140,,,,,,,,140,140,140', -'140,140,140,140,140,140,140,140,140,140,140,140,140,140,,140,140,140', -'140,,,140,140,63,,63,63,,,,,,,,,,,,,,,,,,,63,,,,,,,,63,63,63,63,63,63', -'63,63,63,63,63,63,63,63,63,63,63,,63,63,63,63,63,63,63,63,147,,,147', -',,,,,,,,,,,,,,,,,,147,,,,,,,,147,147,147,147,147,147,147,147,147,147', -'147,147,147,147,147,147,147,,147,147,147,147,,112,147,147,112,,,,,,', -',,,,,,,,,,,,112,,,,,,,,112,112,112,112,112,112,112,112,112,112,112,112', -'112,112,112,112,112,,112,112,112,112,,169,112,112,169,,,,,,,,,,,,,,', -',,,,169,,,,,,,,169,169,169,169,169,169,169,169,169,169,169,169,169,169', -'169,169,169,,169,169,169,169,,168,169,169,168,,,,,,,,,,,,,,,,,,,168', -',,,,,,,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168', -'168,,168,168,168,168,,,168,168,53,,53,53,,,,,,,,,,,,,,,,,,,53,,,,,,', -',53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,,53,53,53,53,53', -'53,53,53,126,,,126,,,,,,,,,,,,,,,,,,,126,,,,,,,,126,126,126,126,126', -'126,126,126,126,126,126,126,126,126,126,126,126,136,126,126,126,126', -',,126,126,,,,,,,,,,,136,,142,,,,,157,136,136,136,136,136,136,136,136', -'136,136,136,136,136,142,,,,,157,,,142,142,142,136,136,157,157,157,157', -'157,157,157,157,157,157,157,157,157,156,,,,,,142,142,,,,157,157,,,,', -',,156,,,,,,,155,156,156,156,156,156,156,156,156,156,156,156,156,156', -',,,,,155,,,,,,156,156,155,155,155,155,155,155,155,155,155,155,155,155', -'155,155,155,155,155,154,155,155,155,155,,,155,155,,,,,,,,,,,154,,,,', -',,153,154,154,154,154,154,154,154,154,154,154,154,154,154,,,,,,153,', -',,,,154,154,153,153,153,153,153,153,153,153,153,153,153,153,153,153', -'153,153,153,152,153,153,153,153,133,,153,153,,,,,,,,,,,152,,,,,133,', -',152,152,152,152,152,133,133,133,133,133,133,133,133,133,133,133,133', -'133,161,,,,,,152,152,,,,133,133,,,,,,,161,,,,,,,141,161,161,161,161', -'161,161,161,161,161,161,161,161,161,161,161,161,161,,141,,,,,,161,161', -'141,141,141,141,141,141,141,141,141,141,141,141,141,143,,,,,,,,,,,141', -'141,,,,,,,143,,144,,,,,145,143,143,143,143,143,143,143,143,143,143,143', -'143,143,144,,,,,145,,,144,144,144,143,143,145,145,145,145,145,145,145', -'145,145,145,145,145,145,146,,,,,150,144,144,,,,145,145,,,,,,148,146', -',,,,150,,,146,146,146,146,146,150,150,150,150,150,148,,,,,,,149,148', -'148,148,148,148,,146,146,,,,150,150,,,,,,149,,,,,,148,148,149,149,149', -'149,149,149,149,149,149,149,149,149,149,149,149,149,149,151,149,149', -'149,149,,,149,149,,,,,,,,,,,151,,,,,,,,151,151,151,151,151,151,151,151', -'151,151,151,151,151,151,151,151,151,,151,151,151,151,,,151,151' ] - racc_action_check = arr = Array.new(4932, nil) +'0,36,44,67,0,0,0,0,0,0,0,198,142,0,0,0,0,180,180,0,0,0,56,56,0,0,173', +'170,170,0,68,0,0,170,56,52,133,0,66,170,175,175,54,130,13,175,13,44', +'198,198,142,180,36,198,67,0,0,44,67,0,43,54,0,218,0,125,0,218,218,218', +'218,218,218,218,52,116,218,218,218,218,173,173,218,218,218,173,52,218', +'218,66,52,201,218,61,218,218,54,54,166,2,218,211,211,2,2,2,2,2,2,2,39', +'39,2,2,2,2,110,25,2,2,2,109,218,2,2,218,28,218,2,218,2,2,186,145,164', +'6,2,74,147,6,6,6,6,6,6,6,73,73,6,6,6,6,145,165,6,6,6,147,2,6,6,2,11', +'2,6,2,6,6,1,25,57,25,6,25,63,63,83,150,69,69,63,,63,69,73,73,,145,145', +'57,6,6,147,147,6,,150,6,8,6,,6,8,8,8,8,8,8,8,72,72,8,8,8,8,204,204,8', +'8,8,204,,8,8,57,57,,8,,8,8,150,150,70,96,8,,,96,96,96,96,96,96,96,,', +'96,96,96,96,,70,96,96,96,,8,96,96,8,,8,96,8,96,96,122,122,,12,96,122', +',12,12,12,12,12,12,12,,,12,12,12,12,70,70,12,12,12,,96,12,12,96,,96', +'12,96,12,12,213,213,,95,12,213,,95,95,95,95,95,95,95,,,95,95,95,95,202', +'202,95,95,95,202,12,95,95,12,,12,95,12,95,95,183,183,,19,95,183,,19', +'19,19,19,19,19,19,,,19,19,19,19,,,19,19,19,,95,19,19,95,,95,19,95,19', +'19,,,,20,19,,,20,20,20,20,20,20,20,,,20,20,20,20,,,20,20,20,,19,20,20', +'19,,19,20,19,20,20,,,,24,20,,,24,24,24,24,24,24,24,,,24,24,24,24,,,24', +'24,24,,20,24,24,20,,20,24,20,24,24,,,,209,24,,,209,209,209,209,209,209', +'209,,,209,209,209,209,,,209,209,209,,24,209,209,24,,24,209,24,209,209', +',,,207,209,,,207,207,207,207,207,207,207,,,207,207,207,207,,,207,207', +'207,,209,207,207,209,,209,207,209,207,207,,,,29,207,,154,29,29,29,29', +'29,29,29,,,29,29,29,29,,,29,29,29,154,207,29,29,207,,207,29,207,29,29', +'154,154,154,,29,106,106,,,,,106,,,,106,,,,,,,29,29,154,154,29,,,29,30', +'29,,29,30,30,30,30,30,30,30,,,30,30,30,30,,,30,30,30,,,30,30,,,,30,', +'30,30,,,,31,30,,,31,31,31,31,31,31,31,,,31,31,31,31,,,31,31,31,,30,31', +'31,30,,30,31,30,31,31,,,,34,31,,156,34,34,34,34,34,34,34,,,34,34,34', +'34,,,34,34,34,156,31,34,34,31,,31,34,31,34,34,156,156,156,,34,,,,,,', +',,,,,,,,,,,34,34,156,156,34,,,34,35,34,,34,35,35,35,35,35,35,35,,,35', +'35,35,35,,,35,35,35,,,35,35,,,,35,,35,35,,,,,35,,,,,,,,,,,,,,,,,,35', +'35,,,35,,,35,206,35,,35,206,206,206,206,206,206,206,,,206,206,206,206', +',,206,206,206,,,206,206,,,,206,,206,206,,,,,206,,,,,,,,,,,,,,,,,,206', +'206,,,206,,,206,203,206,,206,203,203,203,203,203,203,203,,,203,203,203', +'203,,,203,203,203,,,203,203,,,,203,,203,203,,,,,203,,,,,,,,,,,,,,,,', +',203,203,,,203,,,203,94,203,,203,94,94,94,94,94,94,94,,,94,94,94,94', +',,94,94,94,,,94,94,,,,94,,94,94,,,,196,94,,,196,196,196,196,196,196', +'196,,,196,196,196,196,,,196,196,196,,94,196,196,94,,94,196,94,196,196', +',,,,196,,,,,,,,,,,,,,,,,,196,196,,,196,,,196,191,196,,196,191,191,191', +'191,191,191,191,,,191,191,191,191,,,191,191,191,,,191,191,,,,191,,191', +'191,,,,,191,,,,,,,,,,,,,,,,,,191,191,,,191,,,191,49,191,,191,49,49,49', +'49,49,49,49,,,49,49,49,49,,,49,49,49,,,49,49,,,,49,,49,49,,,,185,49', +',,185,185,185,185,185,185,185,,,185,185,185,185,,,185,185,185,,49,185', +'185,49,,49,185,49,185,185,,,,182,185,,,182,182,182,182,182,182,182,', +',182,182,182,182,,,182,182,182,,185,182,182,185,,185,182,185,182,182', +',,,,182,,,,,,,,,,,,,,,,,,182,182,,,182,,,182,55,182,,182,55,55,55,55', +'55,55,55,,,55,55,55,55,,,55,55,55,,,55,55,,,,55,,55,55,,,,,55,,,,,,', +',,,,,,,,,,,55,55,,,55,,,55,179,55,,55,179,179,179,179,179,179,179,,', +'179,179,179,179,,,179,179,179,,,179,179,,,,179,,179,179,,,,168,179,', +',168,168,168,168,168,168,168,,,168,168,168,168,,,168,168,168,,179,168', +'168,179,,179,168,179,168,168,,,,97,168,,,97,97,97,97,97,97,97,,,97,97', +'97,97,,,97,97,97,,168,97,97,168,,168,97,168,97,97,,,,60,97,,,60,60,60', +'60,60,60,60,,,60,60,60,60,,,60,60,60,,97,60,60,97,,97,60,97,60,60,,', +',,60,,,,,,,,,,,,,,,,,,60,60,,,60,,,60,93,60,,60,93,93,93,93,93,93,93', +',,93,93,93,93,,,93,93,93,,,93,93,,,,93,,93,93,,,,134,93,,,134,134,134', +'134,134,134,134,,,134,134,134,134,,,134,134,134,,93,134,134,93,,93,134', +'93,134,134,,,,,134,,,,,,,,,,,,,,,,,,134,134,,,134,,,134,128,134,,134', +'128,128,128,128,128,128,128,,,128,128,128,128,,,128,128,128,,,128,128', +',,,128,,128,128,,,,127,128,,,127,127,127,127,127,127,127,,,127,127,127', +'127,,,127,127,127,,128,127,127,128,,128,127,128,127,127,,,,124,127,', +',124,124,124,124,124,124,124,,,124,124,124,124,,,124,124,124,,127,124', +'124,127,,127,124,127,124,124,,,,,124,,,,,,,,,,,,,,,,,,124,124,,,124', +',,124,119,124,,124,119,119,119,119,119,119,119,,,119,119,119,119,,,119', +'119,119,,,119,119,,,,119,,119,119,,,,,119,,,,,,,,,,,,,,,,,,119,119,', +',119,,,119,115,119,,119,115,115,115,115,115,115,115,,,115,115,115,115', +',,115,115,115,,,115,115,,,,115,,115,115,,,,113,115,,,113,113,113,113', +'113,113,113,,,113,113,113,113,,,113,113,113,,115,113,113,115,,115,113', +'115,113,113,,,,104,113,,,104,104,104,104,104,104,104,,,104,104,104,104', +',,104,104,104,,113,104,104,113,,113,104,113,104,104,,,,103,104,,,103', +'103,103,103,103,103,103,,,103,103,103,103,,,103,103,103,,104,103,103', +'104,,104,103,104,103,103,,,,102,103,,,102,102,102,102,102,102,102,,', +'102,102,102,102,,,102,102,102,,103,102,102,103,,103,102,103,102,102', +',,,101,102,,,101,101,101,101,101,101,101,,,101,101,101,101,,,101,101', +'101,,102,101,101,102,,102,101,102,101,101,,,,100,101,,,100,100,100,100', +'100,100,100,,,100,100,100,100,,,100,100,100,,101,100,100,101,,101,100', +'101,100,100,,,,99,100,,,99,99,99,99,99,99,99,,,99,99,99,99,,,99,99,99', +',100,99,99,100,,100,99,100,99,99,,,,77,99,,,77,77,77,77,77,77,77,,,77', +'77,77,77,,,77,77,77,,99,77,77,99,,99,77,99,77,77,,,,78,77,,,78,78,78', +'78,78,78,78,,,78,78,78,78,,,78,78,78,,77,78,78,77,,77,78,77,78,78,,', +',79,78,,,79,79,79,79,79,79,79,,,79,79,79,79,,,79,79,79,,78,79,79,78', +',78,79,78,79,79,,,,92,79,,,92,92,92,92,92,92,92,,,92,92,92,92,,,92,92', +'92,,79,92,92,79,,79,92,79,92,92,,,,81,92,,,81,81,81,81,81,81,81,,,81', +'81,81,81,,,81,81,81,,92,81,81,92,,92,81,92,81,81,,,,82,81,,,82,82,82', +'82,82,82,82,,,82,82,82,82,,,82,82,82,,81,82,82,81,,81,82,81,82,82,,', +',98,82,,,98,98,98,98,98,98,98,,,98,98,98,98,,,98,98,98,,82,98,98,82', +',82,98,82,98,98,,,,84,98,,,84,84,84,84,84,84,84,,,84,84,84,84,,,84,84', +'84,,98,84,84,98,,98,84,98,84,84,,,,85,84,,,85,85,85,85,85,85,85,,,85', +'85,85,85,,,85,85,85,,84,85,85,84,,84,85,84,85,85,,,,86,85,,,86,86,86', +'86,86,86,86,,,86,86,86,86,,,86,86,86,,85,86,86,85,,85,86,85,86,86,,', +',87,86,,,87,87,87,87,87,87,87,,,87,87,87,87,,,87,87,87,,86,87,87,86', +',86,87,86,87,87,,,,88,87,,,88,88,88,88,88,88,88,,,88,88,88,88,,,88,88', +'88,,87,88,88,87,,87,88,87,88,88,,,,89,88,,,89,89,89,89,89,89,89,,,89', +'89,89,89,,,89,89,89,,88,89,89,88,,88,89,88,89,89,,,,90,89,,,90,90,90', +'90,90,90,90,,,90,90,90,90,,,90,90,90,,89,90,90,89,,89,90,89,90,90,,', +',91,90,,,91,91,91,91,91,91,91,,,91,91,91,91,,,91,91,91,,90,91,91,90', +',90,91,90,91,91,,,,80,91,,,80,80,80,80,80,80,80,,,80,80,80,80,,,80,80', +'80,,91,80,80,91,,91,80,91,80,80,,,136,,80,136,,,,,,,,,,,,,,,,,,,136', +',80,,,80,,80,,80,,136,136,136,136,136,136,136,136,136,136,136,136,136', +'136,136,136,136,,136,136,136,136,,214,136,136,214,,,,136,,,,,,,,,,,', +',,,214,,,,,,200,,,200,,214,214,214,214,214,214,214,214,214,214,214,214', +'214,214,214,214,214,200,214,214,214,214,,215,214,214,215,214,200,200', +'200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,215,200', +'200,200,200,,220,200,200,220,200,215,215,215,215,215,215,215,215,215', +'215,215,215,215,215,215,215,215,220,215,215,215,215,,148,215,215,148', +'215,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220', +'220,148,220,220,220,220,,177,220,220,177,220,148,148,148,148,148,148', +'148,148,148,148,148,148,148,148,148,148,148,177,148,148,148,148,,,148', +'148,,,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177', +'177,,177,177,177,177,,,177,177,59,,59,59,,,,,,,,,,,,,,,,,,,59,,,,,,71', +',,71,,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,71,59,59,59', +'59,59,59,59,59,,,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71', +',71,71,71,71,,152,71,71,152,,,,,,,,,,,,,,,,,,,152,,,,,,62,,62,62,,152', +'152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,62,152', +'152,152,152,,151,152,152,151,,62,62,62,62,62,62,62,62,62,62,62,62,62', +'62,62,62,62,151,62,62,62,62,62,62,62,62,,,151,151,151,151,151,151,151', +'151,151,151,151,151,151,151,151,151,151,,151,151,151,151,,178,151,151', +'178,,,,,,,,,,,,,,,,,,,178,,,,,,65,,65,65,,178,178,178,178,178,178,178', +'178,178,178,178,178,178,178,178,178,178,65,178,178,178,178,,112,178', +'178,112,,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,112,65,65', +'65,65,65,65,65,65,161,,112,112,112,112,112,112,112,112,112,112,112,112', +'112,112,112,112,112,161,112,112,112,112,,137,112,112,137,,161,161,161', +'161,161,,,,,,,,,,,,,137,,,,,,189,161,161,189,,137,137,137,137,137,137', +'137,137,137,137,137,137,137,137,137,137,137,189,137,137,137,137,,42', +'137,137,42,,189,189,189,189,189,189,189,189,189,189,189,189,189,189', +'189,189,189,42,189,189,189,189,,,189,189,,,42,42,42,42,42,42,42,42,42', +'42,42,42,42,42,42,42,42,,42,42,42,42,,,42,42,194,,194,194,,,,,,,,,,', +',,,,,,,,194,,,,,,64,,,64,,194,194,194,194,194,194,194,194,194,194,194', +'194,194,194,194,194,194,64,194,194,194,194,194,194,194,194,160,,64,64', +'64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,160,64,64,64,64,,143,64', +'64,143,,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160', +'160,160,143,160,160,160,160,,,160,160,163,,143,143,143,143,143,143,143', +'143,143,143,143,143,143,143,143,143,143,163,143,143,143,143,,,143,143', +'162,,163,163,163,163,163,,,,,,,,,,,,,162,,,,,,,163,163,138,,162,162', +'162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,138,162', +'162,162,162,,,162,162,139,,138,138,138,138,138,138,138,138,138,138,138', +'138,138,138,138,138,138,139,138,138,138,138,,,138,138,140,,139,139,139', +'139,139,139,139,139,139,139,139,139,139,,,,,140,,,,,,,139,139,141,,140', +'140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,141', +'140,140,140,140,,,140,140,158,,141,141,141,141,141,141,141,141,141,141', +'141,141,141,,,,159,158,,,,,,,141,141,144,,158,158,158,158,158,,,159', +',,,,,,,,,144,159,159,159,159,159,,158,158,146,,144,144,144,144,144,144', +'144,144,144,144,144,144,144,,159,159,,146,,,,,,,144,144,149,,146,146', +'146,146,146,146,146,146,146,146,146,146,146,,,,,149,,,,,,,146,146,171', +',149,149,149,149,149,149,149,149,149,149,149,149,149,,,,,171,,,,,,,149', +'149,153,,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171', +'171,171,153,,,,,,,171,171,155,,153,153,153,153,153,153,153,153,153,153', +'153,153,153,,,,,155,,,,,,,153,153,157,,155,155,155,155,155,155,155,155', +'155,155,155,155,155,,,,,157,,,,,,,155,155,,,157,157,157,157,157,157', +'157,157,157,157,157,157,157,,,,,,,,,,,,157,157' ] + racc_action_check = arr = Array.new(3813, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -337,237 +320,253 @@ clist = [ end racc_action_pointer = [ - -2, 58, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 118, nil, 142, 10, 298, 358, nil, 418, 478, - nil, nil, 158, 30, 36, nil, 3764, 18, 838, nil, - nil, nil, nil, 898, nil, 36, -13, 1078, 1138, nil, - nil, -28, 1258, nil, nil, 50, 1378, nil, nil, nil, - nil, 3817, -17, 4303, 51, 120, nil, nil, 1738, 1798, - 98, 167, -37, 4032, 2098, -11, 31, 58, nil, 83, - nil, nil, 49, 2458, 2518, 2578, 2638, 3358, 133, 2818, - 2878, 2938, 2998, 3058, 3118, 3178, 3238, 3298, 2698, 1618, - 778, 538, 238, 1438, 2758, 2398, 2338, 2278, 2218, nil, - 3870, -8, nil, 2158, 2038, nil, 51, 94, 1978, 24, - 53, nil, 4141, nil, 1918, 1858, nil, 53, nil, nil, - 1678, nil, nil, 3393, nil, 1558, 4359, 1498, 45, 86, - nil, 58, nil, 4614, 107, 3923, 4403, 154, 2, 3711, - 3976, 4680, 4424, 4720, 4741, 4746, 4786, 4088, 4804, 4830, - 4791, 4874, 4609, 4565, 4539, 4495, 4469, 4429, -2, 99, - 1318, 4654, 48, nil, nil, -33, 116, nil, 4247, 4194, - nil, 28, nil, 143, 3658, nil, nil, 1198, 13, 1018, - 101, nil, nil, nil, 958, nil, nil, 3499, 53, -19, - nil, 107, 718, nil, 658, nil, 598, nil, 3446, 3552, - 114, nil, 178, nil, nil, 3605, nil ] + -2, 111, 97, nil, nil, nil, 133, nil, 196, nil, + nil, 105, 268, -17, nil, nil, nil, nil, nil, 340, + 376, nil, nil, nil, 412, 105, nil, nil, 126, 520, + 583, 619, nil, nil, 655, 718, -12, nil, nil, 53, + nil, nil, 3217, 3, -10, nil, nil, nil, nil, 1069, + nil, nil, 22, nil, 37, 1204, -35, 165, nil, 2853, + 1375, 78, 2965, 117, 3304, 3077, 25, -10, 30, 121, + 228, 2881, 152, 127, 125, nil, nil, 2023, 2059, 2095, + 2563, 2167, 2203, 164, 2275, 2311, 2347, 2383, 2419, 2455, + 2491, 2527, 2131, 1438, 907, 304, 232, 1339, 2239, 1987, + 1951, 1915, 1879, 1843, 1807, nil, 503, nil, nil, 69, + 49, nil, 3105, 1771, nil, 1735, 6, nil, nil, 1672, + nil, nil, 210, nil, 1609, 0, nil, 1573, 1537, nil, + 15, nil, nil, 24, 1474, nil, 2598, 3161, 3444, 3472, + 3500, 3528, -13, 3360, 3584, 128, 3612, 133, 2766, 3640, + 172, 2993, 2937, 3696, 520, 3724, 655, 3752, 3556, 3574, + 3332, 3133, 3416, 3388, 67, 141, 86, nil, 1303, nil, + -30, 3668, nil, 23, nil, -17, nil, 2794, 3049, 1267, + -11, nil, 1141, 282, nil, 1105, 120, nil, nil, 3189, + nil, 1006, nil, nil, 3276, nil, 943, nil, -9, nil, + 2682, 66, 266, 844, 158, nil, 781, 484, nil, 448, + nil, 44, nil, 246, 2654, 2710, nil, nil, 61, nil, + 2738, nil ] racc_action_default = [ - -1, -85, -68, -31, -30, -21, -13, -69, -66, -32, - -14, -115, -15, -115, -81, -115, -115, -16, -2, -115, - -64, -17, -3, -115, -77, -18, -4, -111, -115, -26, - -24, -19, -8, -115, -25, -9, -103, -115, -115, -27, - -10, -115, -115, -28, -11, -107, -115, -67, -29, -20, - -12, -86, -115, -115, -115, -115, -71, -73, -115, -115, - -115, -37, -7, -115, -6, -82, -115, -115, -75, -115, - -78, -105, -115, -115, -115, -115, -115, -115, -115, -115, - -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, - -115, -115, -115, -115, -115, -115, -115, -115, -115, -112, - -35, -115, -70, -115, -85, -104, -115, -38, -115, -115, - -36, -108, -96, -84, -115, -115, -113, -20, -23, -22, - -115, 207, -72, -115, -63, -115, -5, -115, -115, -115, - -76, -20, -106, -51, -40, -60, -52, -41, -115, -91, - -61, -53, -42, -54, -43, -55, -44, -92, -45, -56, - -46, -57, -47, -58, -48, -59, -49, -50, -39, -115, - -115, -33, -115, -109, -97, -20, -115, -65, -88, -87, - -114, -115, -74, -115, -34, -80, -79, -115, -115, -115, - -115, -83, -110, -62, -115, -89, -98, -115, -115, -115, - -94, -115, -115, -99, -115, -93, -115, -90, -115, -115, - -115, -101, -115, -100, -95, -115, -102 ] + -1, -109, -121, -32, -31, -10, -121, -67, -121, -33, + -11, -113, -121, -121, -21, -12, -68, -22, -13, -121, + -86, -69, -65, -14, -121, -121, -70, -15, -121, -121, + -121, -121, -25, -16, -2, -121, -82, -26, -17, -3, + -28, -18, -4, -117, -78, -29, -27, -19, -8, -121, + -30, -20, -9, -110, -39, -121, -121, -37, -114, -121, + -121, -121, -121, -121, -87, -121, -83, -121, -121, -121, + -38, -36, -7, -121, -121, -72, -74, -121, -6, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -118, -121, -111, -79, -121, + -121, -76, -97, -86, -71, -121, -21, -115, -98, -121, + -23, -24, -121, -66, -121, -21, -85, -121, -121, -119, + -121, 222, -64, -121, -121, -73, -121, -5, -59, -49, + -60, -50, -121, -92, -51, -40, -52, -41, -61, -53, + -42, -93, -62, -54, -43, -55, -44, -56, -45, -46, + -57, -47, -58, -48, -21, -121, -121, -77, -121, -112, + -121, -34, -116, -121, -63, -121, -120, -89, -88, -121, + -121, -106, -121, -121, -75, -121, -121, -81, -80, -35, + -84, -121, -90, -99, -121, -107, -121, -104, -121, -95, + -121, -121, -121, -121, -121, -94, -121, -121, -100, -121, + -91, -108, -105, -121, -121, -121, -96, -102, -121, -101, + -121, -103 ] racc_goto_table = [ - 51, 52, 22, 164, 68, 104, 120, 70, 13, 102, - 53, 65, 69, 66, 113, 61, 125, 60, 63, nil, - nil, nil, nil, nil, nil, nil, nil, 100, nil, nil, - nil, nil, nil, nil, nil, 101, 104, 107, nil, 106, - 102, 110, nil, nil, nil, 112, 18, nil, nil, 130, - nil, nil, nil, nil, nil, nil, nil, 123, nil, 181, - nil, nil, nil, 126, nil, nil, nil, nil, 64, nil, - nil, nil, 133, 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, 114, 118, - nil, nil, 161, 51, 162, nil, 64, nil, 64, 118, - 166, 175, 176, 168, 169, 128, nil, nil, nil, nil, - nil, nil, 171, nil, nil, nil, 174, 173, nil, nil, + 54, 119, 118, 181, 124, 111, 57, 130, 114, 113, + 59, 108, 63, 66, 106, 67, 126, 62, 64, 180, + 28, 39, 65, 114, 113, nil, nil, 56, 70, 71, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 64, nil, nil, - nil, nil, 64, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 180, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 187, nil, nil, nil, - nil, 189, nil, nil, nil, nil, 191, nil, nil, nil, - nil, 198, nil, 199, nil, nil, nil, nil, 200, nil, - nil, 205, nil, nil, nil, nil, nil, nil, 114, nil, - nil, nil, 64, nil, nil, nil, nil, 64, nil, 64, - nil, nil, nil, nil, nil, nil, 64, nil, nil, nil, - nil, nil, nil, nil, nil, 64, nil, 64, nil, nil, - nil, nil, nil, nil, nil, nil, 64 ] + nil, nil, nil, nil, nil, nil, nil, 112, nil, nil, + 69, nil, nil, 195, nil, nil, 73, nil, nil, nil, + nil, nil, nil, nil, nil, 34, nil, 167, nil, nil, + nil, nil, nil, nil, nil, 136, 137, 138, 139, 140, + 141, 122, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, nil, 78, 170, nil, nil, nil, nil, + nil, 64, nil, 171, nil, nil, 190, nil, nil, nil, + nil, 78, nil, nil, 121, 177, 178, 121, 127, nil, + 121, nil, 187, 188, 78, nil, 203, 78, 78, nil, + 173, nil, nil, nil, nil, 175, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 183, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 189, nil, nil, nil, + nil, 165, nil, nil, nil, nil, nil, 194, nil, nil, + nil, nil, nil, 200, nil, nil, nil, 78, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 198, nil, 214, nil, 215, nil, nil, + nil, nil, 202, nil, nil, nil, 220, 204, nil, nil, + nil, nil, nil, nil, 211, nil, nil, 213, nil, nil, + nil, nil, nil, nil, nil, 127, nil, nil, 78, nil, + 78, nil, nil, nil, nil, nil, nil, nil, 78, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 121, + nil, nil, nil, 78, nil, nil, nil, 78, nil, 78, + nil, nil, nil, nil, nil, nil, 78, nil, 78 ] racc_goto_check = [ - 4, 30, 3, 31, 27, 29, 17, 18, 1, 23, - 4, 24, 28, 6, 33, 4, 17, 3, 4, nil, - nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, - nil, nil, nil, nil, nil, 3, 29, 4, nil, 3, - 23, 4, nil, nil, nil, 4, 2, nil, nil, 27, - nil, nil, nil, nil, nil, nil, nil, 4, nil, 31, - nil, nil, nil, 4, nil, nil, nil, nil, 2, nil, - nil, nil, 4, 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, 2, 2, - nil, nil, 4, 4, 30, nil, 2, nil, 2, 2, - 3, 18, 18, 4, 4, 2, nil, nil, nil, nil, - nil, nil, 3, nil, nil, nil, 4, 3, nil, nil, + 4, 18, 32, 36, 18, 28, 4, 18, 24, 30, + 4, 19, 31, 25, 29, 6, 34, 4, 4, 35, + 1, 3, 4, 24, 30, nil, nil, 3, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, nil, nil, - nil, nil, 2, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, + 3, nil, nil, 36, nil, nil, 3, nil, nil, nil, + nil, nil, nil, nil, nil, 2, nil, 28, nil, nil, + nil, nil, nil, nil, nil, 4, 4, 4, 4, 4, + 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, nil, 2, 31, nil, nil, nil, nil, + nil, 4, nil, 4, nil, nil, 32, nil, nil, nil, + nil, 2, nil, nil, 2, 4, 4, 2, 2, nil, + 2, nil, 19, 19, 2, nil, 18, 2, 2, nil, + 3, nil, nil, nil, nil, 3, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, - nil, 3, nil, nil, nil, nil, 3, nil, nil, nil, - nil, 4, nil, 4, nil, nil, nil, nil, 3, nil, - nil, 4, nil, nil, nil, nil, nil, nil, 2, nil, - nil, nil, 2, nil, nil, nil, nil, 2, nil, 2, - nil, nil, nil, nil, nil, nil, 2, nil, nil, nil, - nil, nil, nil, nil, nil, 2, nil, 2, nil, nil, - nil, nil, nil, nil, nil, nil, 2 ] + nil, 2, nil, nil, nil, nil, nil, 4, nil, nil, + nil, nil, nil, 4, nil, nil, nil, 2, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 3, nil, 4, nil, 4, nil, nil, + nil, nil, 3, nil, nil, nil, 4, 3, nil, nil, + nil, nil, nil, nil, 3, nil, nil, 3, nil, nil, + nil, nil, nil, nil, nil, 2, nil, nil, 2, nil, + 2, nil, nil, nil, nil, nil, nil, nil, 2, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 2, + nil, nil, nil, 2, nil, nil, nil, 2, nil, 2, + nil, nil, nil, nil, nil, nil, 2, nil, 2 ] racc_goto_pointer = [ - nil, 8, 46, 2, -1, nil, -10, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -47, -17, nil, - nil, nil, nil, -26, -12, nil, nil, -20, -12, -30, - 0, -103, nil, -38 ] + nil, 20, 65, 21, -2, nil, -10, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, -58, -33, + nil, nil, nil, nil, -44, -12, nil, nil, -39, -30, + -43, -8, -54, nil, -47, -111, -127 ] racc_goto_default = [ - nil, nil, 59, 62, 26, 32, 35, 40, 44, 50, - 6, 10, 12, 17, 21, 25, 31, nil, nil, 41, - 47, 2, 7, 56, 14, 57, 24, nil, nil, 37, - nil, nil, 1, nil ] + nil, nil, 55, 72, 42, 48, 52, 5, 10, 15, + 18, 23, 27, 33, 38, 41, 47, 51, nil, nil, + 13, 16, 21, 26, 75, 36, 76, 44, nil, nil, + 6, nil, nil, 20, nil, nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, - 0, 68, :_reduce_1, - 1, 68, :_reduce_2, - 1, 68, :_reduce_3, - 1, 70, :_reduce_4, - 3, 70, :_reduce_5, - 2, 70, :_reduce_6, - 2, 70, :_reduce_7, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 71, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 84, :_reduce_none, - 1, 84, :_reduce_none, - 1, 72, :_reduce_24, - 1, 72, :_reduce_25, - 1, 72, :_reduce_26, - 1, 72, :_reduce_27, - 1, 72, :_reduce_28, - 1, 72, :_reduce_29, - 1, 72, :_reduce_30, - 1, 72, :_reduce_31, - 1, 72, :_reduce_32, - 3, 75, :_reduce_33, - 3, 85, :_reduce_34, - 2, 81, :_reduce_35, - 2, 77, :_reduce_36, - 2, 77, :_reduce_37, - 2, 77, :_reduce_38, - 3, 77, :_reduce_39, - 3, 77, :_reduce_40, - 3, 77, :_reduce_41, - 3, 77, :_reduce_42, - 3, 77, :_reduce_43, - 3, 77, :_reduce_44, - 3, 77, :_reduce_45, - 3, 77, :_reduce_46, - 3, 77, :_reduce_47, - 3, 77, :_reduce_48, - 3, 77, :_reduce_49, - 3, 77, :_reduce_50, - 3, 77, :_reduce_51, - 3, 77, :_reduce_52, - 3, 77, :_reduce_53, - 3, 77, :_reduce_54, - 3, 77, :_reduce_55, - 3, 77, :_reduce_56, - 3, 77, :_reduce_57, - 3, 77, :_reduce_58, - 3, 77, :_reduce_59, - 3, 77, :_reduce_60, - 3, 77, :_reduce_61, - 4, 76, :_reduce_62, - 3, 76, :_reduce_63, - 1, 86, :_reduce_64, - 3, 86, :_reduce_65, - 1, 73, :_reduce_66, - 1, 73, :_reduce_67, - 1, 73, :_reduce_68, - 1, 73, :_reduce_69, - 2, 73, :_reduce_70, - 2, 73, :_reduce_71, - 2, 90, :_reduce_72, - 1, 90, :_reduce_73, - 3, 92, :_reduce_74, - 2, 88, :_reduce_75, - 3, 88, :_reduce_76, - 0, 95, :_reduce_77, - 1, 95, :_reduce_78, - 3, 95, :_reduce_79, - 3, 95, :_reduce_80, - 1, 74, :_reduce_81, - 2, 74, :_reduce_82, - 4, 91, :_reduce_83, - 3, 87, :_reduce_84, - 0, 97, :_reduce_85, - 1, 97, :_reduce_86, - 3, 97, :_reduce_87, - 3, 97, :_reduce_88, - 5, 78, :_reduce_89, - 7, 78, :_reduce_90, - 3, 78, :_reduce_91, - 3, 78, :_reduce_92, - 6, 79, :_reduce_93, - 5, 79, :_reduce_94, - 8, 79, :_reduce_95, - 2, 80, :_reduce_96, - 3, 89, :_reduce_97, - 5, 82, :_reduce_98, - 6, 83, :_reduce_99, - 8, 83, :_reduce_100, - 8, 83, :_reduce_101, - 10, 83, :_reduce_102, - 1, 93, :_reduce_103, - 2, 93, :_reduce_104, - 1, 94, :_reduce_105, - 2, 94, :_reduce_106, - 1, 96, :_reduce_107, - 2, 96, :_reduce_108, - 1, 98, :_reduce_109, - 2, 98, :_reduce_110, - 1, 99, :_reduce_111, - 2, 99, :_reduce_112, + 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, + 3, 96, :_reduce_75, + 2, 92, :_reduce_76, + 3, 92, :_reduce_77, + 0, 99, :_reduce_78, + 1, 99, :_reduce_79, + 3, 99, :_reduce_80, + 3, 99, :_reduce_81, + 1, 77, :_reduce_82, + 2, 77, :_reduce_83, + 4, 95, :_reduce_84, + 3, 91, :_reduce_85, + 0, 101, :_reduce_86, + 1, 101, :_reduce_87, + 3, 101, :_reduce_88, + 3, 101, :_reduce_89, + 5, 81, :_reduce_90, + 7, 81, :_reduce_91, + 3, 81, :_reduce_92, + 3, 81, :_reduce_93, + 6, 82, :_reduce_94, + 5, 82, :_reduce_95, + 8, 82, :_reduce_96, + 2, 83, :_reduce_97, + 3, 93, :_reduce_98, + 5, 85, :_reduce_99, + 6, 86, :_reduce_100, + 8, 86, :_reduce_101, + 8, 86, :_reduce_102, + 10, 86, :_reduce_103, + 5, 87, :_reduce_104, + 7, 87, :_reduce_105, + 1, 105, :_reduce_106, + 2, 105, :_reduce_107, + 4, 106, :_reduce_108, + 1, 97, :_reduce_109, + 2, 97, :_reduce_110, + 1, 98, :_reduce_111, + 2, 98, :_reduce_112, 1, 100, :_reduce_113, - 2, 100, :_reduce_114 ] + 2, 100, :_reduce_114, + 1, 102, :_reduce_115, + 2, 102, :_reduce_116, + 1, 103, :_reduce_117, + 2, 103, :_reduce_118, + 1, 104, :_reduce_119, + 2, 104, :_reduce_120 ] -racc_reduce_n = 115 +racc_reduce_n = 121 -racc_shift_n = 207 +racc_shift_n = 222 racc_token_table = { false => 0, @@ -597,48 +596,51 @@ racc_token_table = { :FOR => 24, :IN => 25, :WHILE => 26, - :NEWLINE => 27, - :JS => 28, - :UMINUS => 29, - :NOT => 30, - "!" => 31, - "*" => 32, - "/" => 33, - "%" => 34, - "+" => 35, - "-" => 36, - "<=" => 37, - "<" => 38, - ">" => 39, - ">=" => 40, - "==" => 41, - "!=" => 42, - :IS => 43, - :AINT => 44, - "&&" => 45, - "||" => 46, - :AND => 47, - :OR => 48, - ":" => 49, - "-=" => 50, - "+=" => 51, - "/=" => 52, - "*=" => 53, - "\n" => 54, - ";" => 55, - "||=" => 56, - "&&=" => 57, - "=>" => 58, - "." => 59, - "," => 60, - "[" => 61, - "]" => 62, - "{" => 63, - "}" => 64, - "(" => 65, - ")" => 66 } + :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, + "\n" => 57, + ";" => 58, + "||=" => 59, + "&&=" => 60, + "=>" => 61, + "." => 62, + "," => 63, + "[" => 64, + "]" => 65, + "{" => 66, + "}" => 67, + "(" => 68, + ")" => 69 } -racc_nt_base = 67 +racc_nt_base = 70 racc_use_result_var = true @@ -686,6 +688,9 @@ Racc_token_to_s_table = [ "FOR", "IN", "WHILE", + "SWITCH", + "CASE", + "DEFAULT", "NEWLINE", "JS", "UMINUS", @@ -743,6 +748,7 @@ Racc_token_to_s_table = [ "Return", "While", "For", + "Switch", "Then", "AssignObj", "ParamList", @@ -759,7 +765,9 @@ Racc_token_to_s_table = [ "ArgList", "ParenEnd", "ArrayStart", - "ArrayEnd" ] + "ArrayEnd", + "Cases", + "Case" ] Racc_debug_parser = false @@ -767,49 +775,49 @@ Racc_debug_parser = false # reduce 0 omitted -module_eval(<<'.,.,', 'grammar.y', 41) +module_eval(<<'.,.,', 'grammar.y', 42) def _reduce_1(val, _values, result) result = Nodes.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 42) +module_eval(<<'.,.,', 'grammar.y', 43) def _reduce_2(val, _values, result) result = Nodes.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 43) +module_eval(<<'.,.,', 'grammar.y', 44) def _reduce_3(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 48) +module_eval(<<'.,.,', 'grammar.y', 49) def _reduce_4(val, _values, result) result = Nodes.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 49) +module_eval(<<'.,.,', 'grammar.y', 50) def _reduce_5(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 50) +module_eval(<<'.,.,', 'grammar.y', 51) def _reduce_6(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 51) +module_eval(<<'.,.,', 'grammar.y', 52) def _reduce_7(val, _values, result) result = val[1] result @@ -848,126 +856,121 @@ module_eval(<<'.,.,', 'grammar.y', 51) # reduce 23 omitted -module_eval(<<'.,.,', 'grammar.y', 84) - def _reduce_24(val, _values, result) - result = LiteralNode.new(val[0]) - result - end -.,., +# reduce 24 omitted -module_eval(<<'.,.,', 'grammar.y', 85) +module_eval(<<'.,.,', 'grammar.y', 86) def _reduce_25(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 86) +module_eval(<<'.,.,', 'grammar.y', 87) def _reduce_26(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 87) +module_eval(<<'.,.,', 'grammar.y', 88) def _reduce_27(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 88) - def _reduce_28(val, _values, result) - result = LiteralNode.new(true) - result - end -.,., - module_eval(<<'.,.,', 'grammar.y', 89) - def _reduce_29(val, _values, result) - result = LiteralNode.new(false) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 90) - def _reduce_30(val, _values, result) - result = LiteralNode.new(nil) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 91) - def _reduce_31(val, _values, result) + def _reduce_28(val, _values, result) result = LiteralNode.new(val[0]) result end .,., +module_eval(<<'.,.,', 'grammar.y', 90) + def _reduce_29(val, _values, result) + result = LiteralNode.new(true) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 91) + def _reduce_30(val, _values, result) + result = LiteralNode.new(false) + result + end +.,., + module_eval(<<'.,.,', 'grammar.y', 92) + def _reduce_31(val, _values, result) + result = LiteralNode.new(nil) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 93) def _reduce_32(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 97) +module_eval(<<'.,.,', 'grammar.y', 94) def _reduce_33(val, _values, result) + result = LiteralNode.new(val[0]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 99) + def _reduce_34(val, _values, result) result = AssignNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 102) - def _reduce_34(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 104) + def _reduce_35(val, _values, result) result = AssignNode.new(val[0], val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 107) - def _reduce_35(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 109) + def _reduce_36(val, _values, result) result = ReturnNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 114) - def _reduce_36(val, _values, result) - result = OpNode.new(val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 115) +module_eval(<<'.,.,', 'grammar.y', 116) def _reduce_37(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 116) +module_eval(<<'.,.,', 'grammar.y', 117) def _reduce_38(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 119) +module_eval(<<'.,.,', 'grammar.y', 118) def _reduce_39(val, _values, result) - result = OpNode.new(val[1], val[0], val[2]) + result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 120) +module_eval(<<'.,.,', 'grammar.y', 121) def _reduce_40(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 121) +module_eval(<<'.,.,', 'grammar.y', 122) def _reduce_41(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -981,7 +984,7 @@ module_eval(<<'.,.,', 'grammar.y', 123) end .,., -module_eval(<<'.,.,', 'grammar.y', 124) +module_eval(<<'.,.,', 'grammar.y', 125) def _reduce_43(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -995,21 +998,21 @@ module_eval(<<'.,.,', 'grammar.y', 126) end .,., -module_eval(<<'.,.,', 'grammar.y', 127) +module_eval(<<'.,.,', 'grammar.y', 128) def _reduce_45(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_46(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 129) +module_eval(<<'.,.,', 'grammar.y', 130) def _reduce_47(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1023,21 +1026,21 @@ module_eval(<<'.,.,', 'grammar.y', 131) end .,., -module_eval(<<'.,.,', 'grammar.y', 132) +module_eval(<<'.,.,', 'grammar.y', 133) def _reduce_49(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_50(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 134) +module_eval(<<'.,.,', 'grammar.y', 135) def _reduce_51(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1051,21 +1054,21 @@ module_eval(<<'.,.,', 'grammar.y', 136) end .,., -module_eval(<<'.,.,', 'grammar.y', 137) +module_eval(<<'.,.,', 'grammar.y', 138) def _reduce_53(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_54(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 139) +module_eval(<<'.,.,', 'grammar.y', 140) def _reduce_55(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1079,412 +1082,454 @@ module_eval(<<'.,.,', 'grammar.y', 141) end .,., -module_eval(<<'.,.,', 'grammar.y', 142) +module_eval(<<'.,.,', 'grammar.y', 143) def _reduce_57(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_58(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_59(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_60(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 146) +module_eval(<<'.,.,', 'grammar.y', 147) def _reduce_61(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 152) +module_eval(<<'.,.,', 'grammar.y', 148) def _reduce_62(val, _values, result) + result = OpNode.new(val[1], val[0], val[2]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 154) + def _reduce_63(val, _values, result) result = CodeNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 153) - def _reduce_63(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 155) + def _reduce_64(val, _values, result) result = CodeNode.new([], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 157) - def _reduce_64(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 159) + def _reduce_65(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 158) - def _reduce_65(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 160) + def _reduce_66(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 162) - def _reduce_66(val, _values, result) - result = ValueNode.new(val) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 163) +module_eval(<<'.,.,', 'grammar.y', 164) def _reduce_67(val, _values, result) result = ValueNode.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 164) +module_eval(<<'.,.,', 'grammar.y', 165) def _reduce_68(val, _values, result) result = ValueNode.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 165) +module_eval(<<'.,.,', 'grammar.y', 166) def _reduce_69(val, _values, result) result = ValueNode.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 166) +module_eval(<<'.,.,', 'grammar.y', 167) def _reduce_70(val, _values, result) + result = ValueNode.new(val) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 168) + def _reduce_71(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 167) - def _reduce_71(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 169) + def _reduce_72(val, _values, result) result = ValueNode.new(val[0], [val[1]]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 171) - def _reduce_72(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 173) + def _reduce_73(val, _values, result) result = AccessorNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 172) - def _reduce_73(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 174) + def _reduce_74(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 176) - def _reduce_74(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 178) + def _reduce_75(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 180) - def _reduce_75(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 182) + def _reduce_76(val, _values, result) result = ObjectNode.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 181) - def _reduce_76(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 183) + def _reduce_77(val, _values, result) result = ObjectNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 185) - def _reduce_77(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 187) + def _reduce_78(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 186) - def _reduce_78(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 188) + def _reduce_79(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 187) - def _reduce_79(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 188) +module_eval(<<'.,.,', 'grammar.y', 189) def _reduce_80(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 193) +module_eval(<<'.,.,', 'grammar.y', 190) def _reduce_81(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 194) - def _reduce_82(val, _values, result) - result = val[1].new_instance - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 198) - def _reduce_83(val, _values, result) - result = CallNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 203) - def _reduce_84(val, _values, result) - result = ArrayNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 208) - def _reduce_85(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 209) - def _reduce_86(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 210) - def _reduce_87(val, _values, result) result = val[0] << val[2] result end .,., +module_eval(<<'.,.,', 'grammar.y', 195) + def _reduce_82(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 196) + def _reduce_83(val, _values, result) + result = val[1].new_instance + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 200) + def _reduce_84(val, _values, result) + result = CallNode.new(val[0], val[2]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 205) + def _reduce_85(val, _values, result) + result = ArrayNode.new(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 210) + def _reduce_86(val, _values, result) + result = [] + result + end +.,., + module_eval(<<'.,.,', 'grammar.y', 211) + def _reduce_87(val, _values, result) + result = val + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 212) def _reduce_88(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 216) +module_eval(<<'.,.,', 'grammar.y', 213) def _reduce_89(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 218) + def _reduce_90(val, _values, result) result = IfNode.new(val[1], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 219) - def _reduce_90(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 221) + def _reduce_91(val, _values, result) result = IfNode.new(val[1], val[3], val[5]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 220) - def _reduce_91(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 222) + def _reduce_92(val, _values, result) result = IfNode.new(val[2], Nodes.new([val[0]])) result end .,., -module_eval(<<'.,.,', 'grammar.y', 221) - def _reduce_92(val, _values, result) - result = IfNode.new(val[2], Nodes.new([val[0]]), nil, :invert) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 226) +module_eval(<<'.,.,', 'grammar.y', 223) def _reduce_93(val, _values, result) - result = TryNode.new(val[1], val[3], val[4]) + result = IfNode.new(val[2], Nodes.new([val[0]]), nil, :invert) result end .,., module_eval(<<'.,.,', 'grammar.y', 228) def _reduce_94(val, _values, result) + result = TryNode.new(val[1], val[3], val[4]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 230) + def _reduce_95(val, _values, result) result = TryNode.new(val[1], nil, nil, val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 231) - def _reduce_95(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 233) + def _reduce_96(val, _values, result) result = TryNode.new(val[1], val[3], val[4], val[6]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 235) - def _reduce_96(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 237) + def _reduce_97(val, _values, result) result = ThrowNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 239) - def _reduce_97(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 241) + def _reduce_98(val, _values, result) result = ParentheticalNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 244) - def _reduce_98(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 246) + def _reduce_99(val, _values, result) result = WhileNode.new(val[1], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 249) - def _reduce_99(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 251) + def _reduce_100(val, _values, result) result = ForNode.new(val[0], val[4], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 252) - def _reduce_100(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 254) + def _reduce_101(val, _values, result) result = ForNode.new(val[0], val[6], val[2], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 255) - def _reduce_101(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 257) + def _reduce_102(val, _values, result) result = ForNode.new(IfNode.new(val[6], Nodes.new([val[0]])), val[4], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 259) - def _reduce_102(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 261) + def _reduce_103(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', 263) - def _reduce_103(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 264) +module_eval(<<'.,.,', 'grammar.y', 266) def _reduce_104(val, _values, result) - result = nil + result = val[3].rewrite_condition(val[1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 268) def _reduce_105(val, _values, result) - result = nil + result = val[3].rewrite_condition(val[1]).add_default(val[5]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 269) +module_eval(<<'.,.,', 'grammar.y', 272) def _reduce_106(val, _values, result) - result = nil + result = val[0] result end .,., module_eval(<<'.,.,', 'grammar.y', 273) def _reduce_107(val, _values, result) - result = nil + result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 274) +module_eval(<<'.,.,', 'grammar.y', 277) def _reduce_108(val, _values, result) - result = nil + result = IfNode.new(val[1], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 278) +module_eval(<<'.,.,', 'grammar.y', 281) def _reduce_109(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 279) +module_eval(<<'.,.,', 'grammar.y', 282) def _reduce_110(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 283) +module_eval(<<'.,.,', 'grammar.y', 286) def _reduce_111(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 284) +module_eval(<<'.,.,', 'grammar.y', 287) def _reduce_112(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 288) +module_eval(<<'.,.,', 'grammar.y', 291) def _reduce_113(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 289) +module_eval(<<'.,.,', 'grammar.y', 292) def _reduce_114(val, _values, result) result = nil result end .,., +module_eval(<<'.,.,', 'grammar.y', 296) + def _reduce_115(val, _values, result) + result = nil + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 297) + def _reduce_116(val, _values, result) + result = nil + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 301) + def _reduce_117(val, _values, result) + result = nil + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 302) + def _reduce_118(val, _values, result) + result = nil + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 306) + def _reduce_119(val, _values, result) + result = nil + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 307) + def _reduce_120(val, _values, result) + result = nil + result + end +.,., + def _reduce_none(val, _values, result) val[0] end