From 5153ef7c94e886424331b41ca7fd5aefc8ffee9c Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Wed, 16 Dec 2009 20:48:37 -0500 Subject: [PATCH] a smarter lexer brings us down to three shift/reduces --- code.cs | 35 +- grammar.y | 44 +-- lexer.rb | 14 + parser.rb | 931 ++++++++++++++++++++++++------------------------------ 4 files changed, 455 insertions(+), 569 deletions(-) diff --git a/code.cs b/code.cs index cd62f9c4..8f21bd8a 100644 --- a/code.cs +++ b/code.cs @@ -1,29 +1,34 @@ # TODO: Add range indexing: array[5..7] => array.slice(5, 7) # Functions: -square: x => x * x. +# square: x => x * x. +# +# sum: x, y => x + y. +# +# odd: x => x % 2 is 0. +# +# even: x => x % 2 aint 0. +# +# run_loop: => +# fire_events( e => e.stopPropagation(). ) +# listen() +# wait(). +# +# # Objects: +# dense_object_literal: {one: 1, two: 2, three: 3} -sum: x, y => x + y. +spaced_out_multiline_object: { -odd: x => x % 2 is 0. - -even: x => x % 2 aint 0. - -run_loop: => - fire_events( e => e.stopPropagation(). ) - listen() - wait(). - -# Objects: -object_literal: {one: 1, two: 2, three: 3} - -multiline_object: { pi: 3.14159 + list: [1, 2, 3, 4] + three: new Idea() + inner_obj: { freedom: => _.freedom(). } + } # Arrays: diff --git a/grammar.y b/grammar.y index 5c84f55d..26052363 100644 --- a/grammar.y +++ b/grammar.y @@ -29,9 +29,9 @@ prechigh nonassoc "." preclow -# We expect 8 shift/reduce errors for optional syntax. +# We expect 3 shift/reduce errors for optional syntax. # There used to be 252 -- greatly improved. -expect 8 +expect 3 rule @@ -177,8 +177,8 @@ rule ; Object: - ObjectStart ObjectEnd { result = ObjectNode.new([]) } - | ObjectStart AssignList ObjectEnd { result = ObjectNode.new(val[1]) } + "{" "}" { result = ObjectNode.new([]) } + | "{" AssignList "}" { result = ObjectNode.new(val[1]) } ; AssignList: @@ -195,12 +195,12 @@ rule ; Invocation: - Value ParenStart ArgList ParenEnd { result = CallNode.new(val[0], val[2]) } + Value "(" ArgList ")" { result = CallNode.new(val[0], val[2]) } ; # An Array. Array: - ArrayStart ArgList ArrayEnd { result = ArrayNode.new(val[1]) } + "[" ArgList "]" { result = ArrayNode.new(val[1]) } ; # A list of arguments to a method call. @@ -236,7 +236,7 @@ rule ; Parenthetical: - ParenStart Expressions ParenEnd { result = ParentheticalNode.new(val[1]) } + "(" Expressions ")" { result = ParentheticalNode.new(val[1]) } ; While: @@ -275,36 +275,6 @@ rule CASE Expression Then Expressions { result = IfNode.new(val[1], val[3]) } ; - ObjectStart: - "{" { result = nil } - | "{" "\n" { result = nil } - ; - - ObjectEnd: - "}" { result = nil } - | "\n" "}" { result = nil } - ; - - ParenStart: - "(" { result = nil } - | "(" "\n" { result = nil } - ; - - ParenEnd: - ")" { result = nil } - | "\n" ")" { result = nil } - ; - - ArrayStart: - "[" { result = nil } - | "[" "\n" { result = nil } - ; - - ArrayEnd: - "]" { result = nil } - | "\n" "]" { result = nil } - ; - end ---- header diff --git a/lexer.rb b/lexer.rb index acef6687..b86d5e4e 100644 --- a/lexer.rb +++ b/lexer.rb @@ -22,6 +22,9 @@ class Lexer JS_CLEANER = /(\A`|`\Z)/ + EXP_START = ['{', '(', '['] + EXP_END = ['}', ')', ']'] + # This is how to implement a very simple scanner. # Scan one caracter at the time until you find something to parse. def tokenize(code) @@ -107,6 +110,8 @@ class Lexer value = @chunk[OPERATOR, 1] tag_parameters if value && value.match(CODE) value ||= @chunk[0,1] + skip_following_newlines if EXP_START.include?(value) + remove_leading_newlines if EXP_END.include?(value) @tokens << [value, value] @i += value.length end @@ -123,4 +128,13 @@ class Lexer end end + def skip_following_newlines + newlines = @code[(@i+1)..-1][NEWLINE, 1] + @i += newlines.length if newlines + end + + def remove_leading_newlines + @tokens.pop if @tokens.last[1] == "\n" + end + end \ No newline at end of file diff --git a/parser.rb b/parser.rb index 4f6f5d33..d1d48001 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', 315) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 285) def parse(code, show_tokens=false) # @yydebug = true @tokens = Lexer.new.tokenize(code) @@ -26,144 +26,142 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 315) ##### State transition tables begin ### clist = [ -'12,7,206,73,30,37,40,45,50,4,7,185,201,20,23,29,34,179,197,49,3,9,123', -'73,17,22,118,31,169,46,73,2,8,191,172,116,168,28,109,25,31,205,25,31', -'164,31,182,166,195,186,209,107,131,43,76,1,105,11,25,31,36,134,43,12', -'1,73,11,30,37,40,45,50,4,7,76,109,20,23,29,34,179,76,49,3,9,11,110,17', -'22,192,25,31,46,107,2,8,132,133,118,31,28,128,25,31,115,126,31,116,128', -'68,129,87,90,92,95,97,76,136,25,31,11,60,61,36,109,43,12,1,169,11,30', -'37,40,45,50,4,7,25,31,20,23,29,34,25,31,49,3,9,142,58,17,22,199,25,31', -'46,53,2,8,174,25,31,176,28,87,90,92,95,97,99,100,102,104,80,82,86,89', -'91,94,96,98,87,90,92,95,97,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23', -'29,34,,,49,3,9,,,17,22,212,25,31,46,,2,8,193,25,31,,28,87,90,92,95,97', -'99,100,102,104,80,82,86,89,87,90,92,95,97,,,25,31,36,,43,12,1,,11,30', -'37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,87,90,92,46,,2,8,216', -'25,31,,28,87,90,92,95,97,99,100,102,104,80,82,86,89,87,90,92,95,97,210', -'25,31,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,87,90,92,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89', -',,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3', -'9,,,17,22,,,,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89', -',,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,', -',17,22,,,,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89,', -',,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3', -'9,,,17,22,,,,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89', -',,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,', -',17,22,,,,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89,', -',,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,', -'17,22,,,,46,,2,8,,,,,28,87,90,92,95,97,99,100,102,104,80,82,86,89,,', -',,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37', -'40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,', -',,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49', -'3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11', -'30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28', -',,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29', -'34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36,', -'43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46', -',2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50', -'4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,', -',,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37', -'40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,', -',,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34', -',,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1', -',11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,', -',28,,,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20', -'23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36', -',43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46', -',2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7', -',,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,', -',25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37', -'40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,', -',,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49', -'3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11', -'30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28', -',,,,,,,,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23', -'29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,25,31,36', -',43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46', -',2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7', -',,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,', -',,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22', -',,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45', -'50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,', -',,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9', -',,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37', -'40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,', -',,,,,,,,,,,,,,25,31,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34', -',,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1', -',11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,', -',28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23', -'29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43', -'12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2', -'8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,', -'20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,', -',36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,', -',,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50', -'4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,', -',,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40', -'45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,', -',,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3', -'9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30', -'37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,', -',,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34', -',,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1', -',11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,', -',28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23', -'29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43', -'12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2', -'8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,', -'20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,', -',36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,', -',,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50', -'4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,', -',,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17', -'22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40', -'45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,', -',,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3', -'9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30', -'37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,', -',,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23,29,34', -',,49,3,9,,,17,22,,,,46,,2,8,,,,,28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1', -',11,30,37,40,45,50,4,7,,,20,23,29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,', -',28,,,,,,,,,,,,,,,,,,,,,,,36,,43,12,1,,11,30,37,40,45,50,4,7,,,20,23', -'29,34,,,49,3,9,,,17,22,,,,46,,2,8,,,84,,28,93,,,,,,,,,,,,,,,,,,,83,', -',36,,43,,1,,11,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98', -',101,103,79,81,85,88,84,,120,93,,,184,,,,,,,,,,,,,,,,83,,,,,,84,,120', -'93,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98,83,101,103', -'79,81,85,88,,25,31,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94', -'96,98,,101,103,79,81,85,88,,25,31,84,,120,93,,,,,,,,,,,,,,,,,,,83,,', -',,,84,,120,93,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98', -'83,101,103,79,81,85,88,,25,31,,87,90,92,95,97,99,100,102,104,80,82,86', -'89,91,94,96,98,,101,103,79,81,85,88,218,25,31,93,,,,,,,,,,,,,,,,,,,83', -',,,,,207,,,93,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98', -'83,101,103,79,81,85,88,219,-121,,,87,90,92,95,97,99,100,102,104,80,82', -'86,89,91,94,96,98,,101,103,79,81,85,88,208,84,,,,,87,90,92,95,97,99', -'100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,,,,,87,90,92', -'95,97,99,100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,84', -',,93,,,,,,,,,,,,,,,,,,,83,,,,,,84,,,93,,87,90,92,95,97,99,100,102,104', -'80,82,86,89,91,94,96,98,83,101,103,79,81,85,88,,,,,87,90,92,95,97,99', -'100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,84,,,93,,,', -',,,,,,,,,,,,,,,83,,,,,,84,,,93,,87,90,92,95,97,99,100,102,104,80,82', -'86,89,91,94,96,98,83,101,103,79,81,85,88,,,,,87,90,92,95,97,99,100,102', -'104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,84,,,93,,,,,,,,,,,', -',,,,,,,83,,,,,,84,,,93,,87,90,92,95,97,99,100,102,104,80,82,86,89,91', -'94,96,98,83,101,103,79,81,85,88,-121,,,,87,90,92,95,97,99,100,102,104', -'80,82,86,89,91,94,96,98,,101,103,79,81,85,88,84,,,93,,87,90,92,95,97', -'99,100,102,104,80,82,86,89,91,94,96,98,83,101,103,79,81,85,88,-121,', -',,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98,,101,103,79', -'81,85,88,84,,,93,,87,90,92,95,97,99,100,102,104,80,82,86,89,91,94,96', -'98,83,101,103,79,81,85,88,,,,,87,90,92,95,97,99,100,102,104,80,82,86', -'89,91,94,96,98,,101,103,79,81,85,88,87,90,92,95,97,99,100,102,104,80', -'82,86,89,91,94,96,98,,101,103,79,81,85,88,87,90,92,95,97,99,100,102', -'104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,87,90,92,95,97,99,100', -'102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,87,90,92,95,97', -'99,100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,87,90,92', -'95,97,99,100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85,88,87', -'90,92,95,97,99,100,102,104,80,82,86,89,91,94,96,98,,101,103,79,81,85', -'88' ] - racc_action_table = arr = Array.new(4701, nil) +'11,6,170,70,28,35,38,42,47,4,6,190,123,18,21,27,32,166,180,46,3,8,193', +'70,16,20,23,29,166,43,52,2,7,175,108,112,65,26,23,29,171,111,70,23,29', +'109,52,70,179,167,189,23,29,41,73,1,117,10,23,29,34,52,41,11,1,120,10', +'28,35,38,42,47,4,6,73,131,18,21,27,32,185,107,46,3,8,51,,16,20,176,23', +'29,43,73,2,7,,105,73,,26,,105,84,87,89,,121,122,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,23,29,18,21,27', +'32,59,60,46,3,8,23,29,16,20,,23,29,43,154,2,7,200,23,29,174,26,84,87', +'89,92,94,96,97,99,101,77,79,83,86,88,91,93,95,,23,29,,154,34,155,41', +'11,1,,10,28,35,38,42,47,4,6,23,29,18,21,27,32,,,46,3,8,,,16,20,183,23', +'29,43,,2,7,177,23,29,,26,84,87,89,92,94,96,97,99,101,77,79,83,86,84', +'87,89,92,94,162,23,29,,34,,41,11,1,,10,28,35,38,42,47,4,6,,,18,21,27', +'32,,,46,3,8,,,16,20,195,23,29,43,,2,7,125,23,29,,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,84,87,89,43,,2,7,194,23,29', +',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,,,,', +'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,,,,,,,,,,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,,,,,,', +',,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,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,,,', +',,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,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,,,,,,,,,,,,,,,,,,,,,,,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,,114,90', +',,169,,,,,,,,,,,,,,,,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,191,23,29', +'90,,,,,,,,,,,,,,,,,,,80,,,,,,202,,,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,192,-109,,,84,87,89,92,94', +'96,97,99,101,77,79,83,86,88,91,93,95,,98,100,76,78,82,85,203,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,81,,,,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,-109,,,,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,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,-109,,,,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(4673, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -173,163 +171,162 @@ clist = [ end clist = [ -'0,23,198,66,0,0,0,0,0,0,0,142,186,0,0,0,0,180,180,0,0,0,61,35,0,0,56', -'56,110,0,67,0,0,173,118,56,109,0,44,211,211,198,198,198,106,106,132', -'106,180,142,201,106,68,23,66,23,43,23,0,0,0,73,0,218,0,52,0,218,218', -'218,218,218,218,218,35,166,218,218,218,218,130,67,218,218,218,67,44', -'218,218,173,173,173,218,44,218,218,72,72,170,170,218,170,39,39,52,63', -'63,170,63,27,63,163,163,163,163,163,52,77,77,77,52,13,13,218,165,218', -'2,218,164,218,2,2,2,2,2,2,2,72,72,2,2,2,2,71,71,2,2,2,83,11,2,2,183', -'183,183,2,1,2,2,122,122,122,126,2,171,171,171,171,171,171,171,171,171', -'171,171,171,171,171,171,171,171,158,158,158,158,158,2,,2,6,2,,2,6,6', -'6,6,6,6,6,,,6,6,6,6,,,6,6,6,,,6,6,204,204,204,6,,6,6,175,175,175,,6', -'141,141,141,141,141,141,141,141,141,141,141,141,141,161,161,161,161', -'161,,,6,6,6,,6,8,6,,6,8,8,8,8,8,8,8,,,8,8,8,8,,,8,8,8,,,8,8,154,154', -'154,8,,8,8,213,213,213,,8,139,139,139,139,139,139,139,139,139,139,139', -'139,139,159,159,159,159,159,202,202,202,,8,,8,124,8,,8,124,124,124,124', -'124,124,124,,,124,124,124,124,,,124,124,124,,,124,124,156,156,156,124', -',124,124,,,,,124,153,153,153,153,153,153,153,153,153,153,153,153,153', -',,,,,,,124,124,124,,124,12,124,,124,12,12,12,12,12,12,12,,,12,12,12', -'12,,,12,12,12,,,12,12,,,,12,,12,12,,,,,12,145,145,145,145,145,145,145', -'145,145,145,145,145,145,,,,,,,,,,12,,12,133,12,,12,133,133,133,133,133', -'133,133,,,133,133,133,133,,,133,133,133,,,133,133,,,,133,,133,133,,', -',,133,155,155,155,155,155,155,155,155,155,155,155,155,155,,,,,,,,133', -'133,133,,133,17,133,,133,17,17,17,17,17,17,17,,,17,17,17,17,,,17,17', -'17,,,17,17,,,,17,,17,17,,,,,17,148,148,148,148,148,148,148,148,148,148', -'148,148,148,,,,,,,,,,17,,17,18,17,,17,18,18,18,18,18,18,18,,,18,18,18', -'18,,,18,18,18,,,18,18,,,,18,,18,18,,,,,18,157,157,157,157,157,157,157', -'157,157,157,157,157,157,,,,,,,,,,18,,18,22,18,,18,22,22,22,22,22,22', -'22,,,22,22,22,22,,,22,22,22,,,22,22,,,,22,,22,22,,,,,22,150,150,150', -'150,150,150,150,150,150,150,150,150,150,,,,,,,,,,22,,22,119,22,,22,119', -'119,119,119,119,119,119,,,119,119,119,119,,,119,119,119,,,119,119,,', -',119,,119,119,,,,,119,,,,,,,,,,,,,,,,,,,,,119,119,119,,119,209,119,', -'119,209,209,209,209,209,209,209,,,209,209,209,209,,,209,209,209,,,209', -'209,,,,209,,209,209,,,,,209,,,,,,,,,,,,,,,,,,,,,,,209,,209,28,209,,209', -'28,28,28,28,28,28,28,,,28,28,28,28,,,28,28,28,,,28,28,,,,28,,28,28,', -',,,28,,,,,,,,,,,,,,,,,,,,,,,28,,28,29,28,,28,29,29,29,29,29,29,29,,', -'29,29,29,29,,,29,29,29,,,29,29,,,,29,,29,29,,,,,29,,,,,,,,,,,,,,,,,', -',,,,,29,,29,33,29,,29,33,33,33,33,33,33,33,,,33,33,33,33,,,33,33,33', -',,33,33,,,,33,,33,33,,,,,33,,,,,,,,,,,,,,,,,,,,,33,33,33,,33,34,33,', -'33,34,34,34,34,34,34,34,,,34,34,34,34,,,34,34,34,,,34,34,,,,34,,34,34', -',,,,34,,,,,,,,,,,,,,,,,,,,,34,34,34,,34,207,34,,34,207,207,207,207,207', -'207,207,,,207,207,207,207,,,207,207,207,,,207,207,,,,207,,207,207,,', -',,207,,,,,,,,,,,,,,,,,,,,,,,207,,207,36,207,,207,36,36,36,36,36,36,36', -',,36,36,36,36,,,36,36,36,,,36,36,,,,36,,36,36,,,,,36,,,,,,,,,,,,,,,', -',,,,,36,36,36,,36,206,36,,36,206,206,206,206,206,206,206,,,206,206,206', -'206,,,206,206,206,,,206,206,,,,206,,206,206,,,,,206,,,,,,,,,,,,,,,,', -',,,,206,206,206,,206,115,206,,206,115,115,115,115,115,115,115,,,115', -'115,115,115,,,115,115,115,,,115,115,,,,115,,115,115,,,,,115,,,,,,,,', -',,,,,,,,,,,,,,115,,115,203,115,,115,203,203,203,203,203,203,203,,,203', -'203,203,203,,,203,203,203,,,203,203,,,,203,,203,203,,,,,203,,,,,,,,', -',,,,,,,,,,,,203,203,203,,203,113,203,,203,113,113,113,113,113,113,113', -',,113,113,113,113,,,113,113,113,,,113,113,,,,113,,113,113,,,,,113,,', -',,,,,,,,,,,,,,,,,,,,113,,113,49,113,,113,49,49,49,49,49,49,49,,,49,49', -'49,49,,,49,49,49,,,49,49,,,,49,,49,49,,,,,49,,,,,,,,,,,,,,,,,,,,,,,49', -',49,197,49,,49,197,197,197,197,197,197,197,,,197,197,197,197,,,197,197', -'197,,,197,197,,,,197,,197,197,,,,,197,,,,,,,,,,,,,,,,,,,,,197,197,197', -',197,55,197,,197,55,55,55,55,55,55,55,,,55,55,55,55,,,55,55,55,,,55', -'55,,,,55,,55,55,,,,,55,,,,,,,,,,,,,,,,,,,,,55,55,55,,55,104,55,,55,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,60,103,,103,60', -'60,60,60,60,60,60,,,60,60,60,60,,,60,60,60,,,60,60,,,,60,,60,60,,,,', -'60,,,,,,,,,,,,,,,,,,,,,60,60,60,,60,191,60,,60,191,191,191,191,191,191', -'191,,,191,191,191,191,,,191,191,191,,,191,191,,,,191,,191,191,,,,,191', -',,,,,,,,,,,,,,,,,,,,191,191,191,,191,102,191,,191,102,102,102,102,102', -'102,102,,,102,102,102,102,,,102,102,102,,,102,102,,,,102,,102,102,,', -',,102,,,,,,,,,,,,,,,,,,,,,,,102,,102,101,102,,102,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,99,100,,100,99,99,99,99,99,99,99', -',,99,99,99,99,,,99,99,99,,,99,99,,,,99,,99,99,,,,,99,,,,,,,,,,,,,,,', -',,,,,,,99,,99,185,99,,99,185,185,185,185,185,185,185,,,185,185,185,185', -',,185,185,185,,,185,185,,,,185,,185,185,,,,,185,,,,,,,,,,,,,,,,,,,,', -',,185,,185,182,185,,185,182,182,182,182,182,182,182,,,182,182,182,182', -',,182,182,182,,,182,182,,,,182,,182,182,,,,,182,,,,,,,,,,,,,,,,,,,,', -'182,182,182,,182,179,182,,182,179,179,179,179,179,179,179,,,179,179', -'179,179,,,179,179,179,,,179,179,,,,179,,179,179,,,,,179,,,,,,,,,,,,', -',,,,,,,,,,179,,179,98,179,,179,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,96,97,,97,96,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,,95,76,95,,95', -'76,76,76,76,76,76,76,,,76,76,76,76,,,76,76,76,,,76,76,,,,76,,76,76,', -',,,76,,,,,,,,,,,,,,,,,,,,,,,76,,76,168,76,,76,168,168,168,168,168,168', -'168,,,168,168,168,168,,,168,168,168,,,168,168,,,,168,,168,168,,,,,168', -',,,,,,,,,,,,,,,,,,,,,,168,,168,78,168,,168,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,80,79,,79,80,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', -',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,127,82,,82,127,127', -'127,127,127,127,127,,,127,127,127,127,,,127,127,127,,,127,127,,,,127', -',127,127,,,,,127,,,,,,,,,,,,,,,,,,,,,,,127,,127,84,127,,127,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,128,94,,94', -'128,128,128,128,128,128,128,,,128,128,128,128,,,128,128,128,,,128,128', -',,,128,,128,128,,,135,,128,135,,,,,,,,,,,,,,,,,,,135,,,128,,128,,128', -',128,,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135', -'135,,135,135,135,135,135,135,59,,59,59,,,135,,,,,,,,,,,,,,,,59,,,,,', -'62,,62,62,,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,62,59', -'59,59,59,59,59,,59,59,,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62', -'62,62,,62,62,62,62,62,62,,62,62,65,,65,65,,,,,,,,,,,,,,,,,,,65,,,,,', -'194,,194,194,,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,194', -'65,65,65,65,65,65,,65,65,,194,194,194,194,194,194,194,194,194,194,194', -'194,194,194,194,194,194,,194,194,194,194,194,194,215,194,194,215,,,', -',,,,,,,,,,,,,,,215,,,,,,200,,,200,,215,215,215,215,215,215,215,215,215', -'215,215,215,215,215,215,215,215,200,215,215,215,215,215,215,215,143', -',,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200', -',200,200,200,200,200,200,200,152,,,,,143,143,143,143,143,143,143,143', -'143,143,143,143,143,143,143,143,143,,143,143,143,143,143,143,,,,,152', -'152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,,152', -'152,152,152,152,152,189,,,189,,,,,,,,,,,,,,,,,,,189,,,,,,137,,,137,', -'189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189', -'137,189,189,189,189,189,189,,,,,137,137,137,137,137,137,137,137,137', -'137,137,137,137,137,137,137,137,,137,137,137,137,137,137,112,,,112,', -',,,,,,,,,,,,,,,,,112,,,,,,64,,,64,,112,112,112,112,112,112,112,112,112', -'112,112,112,112,112,112,112,112,64,112,112,112,112,112,112,,,,,64,64', -'64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,,64,64,64,64,64,64,42,', -',42,,,,,,,,,,,,,,,,,,,42,,,,,,70,,,70,,42,42,42,42,42,42,42,42,42,42', -'42,42,42,42,42,42,42,70,42,42,42,42,42,42,214,,,,70,70,70,70,70,70,70', -'70,70,70,70,70,70,70,70,70,70,,70,70,70,70,70,70,178,,,178,,214,214', -'214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,178,214', -'214,214,214,214,214,220,,,,178,178,178,178,178,178,178,178,178,178,178', -'178,178,178,178,178,178,,178,178,178,178,178,178,177,,,177,,220,220', -'220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,177,220', -'220,220,220,220,220,,,,,177,177,177,177,177,177,177,177,177,177,177', -'177,177,177,177,177,177,,177,177,177,177,177,177,162,162,162,162,162', -'162,162,162,162,162,162,162,162,162,162,162,162,,162,162,162,162,162', -'162,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140', -'140,,140,140,140,140,140,140,138,138,138,138,138,138,138,138,138,138', -'138,138,138,138,138,138,138,,138,138,138,138,138,138,144,144,144,144', -'144,144,144,144,144,144,144,144,144,144,144,144,144,,144,144,144,144', -'144,144,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147', -'147,147,,147,147,147,147,147,147,160,160,160,160,160,160,160,160,160', -'160,160,160,160,160,160,160,160,,160,160,160,160,160,160' ] - racc_action_check = arr = Array.new(4701, nil) +'0,21,131,63,0,0,0,0,0,0,0,182,70,0,0,0,0,164,164,0,0,0,185,33,0,0,57', +'57,119,0,1,0,0,161,52,57,25,0,53,53,131,53,49,37,37,53,111,64,164,121', +'182,182,182,21,63,21,60,21,0,0,0,110,0,202,0,65,0,202,202,202,202,202', +'202,202,33,80,202,202,202,202,171,49,202,202,202,1,,202,202,161,161', +'161,202,49,202,202,,49,64,,202,,64,143,143,143,,69,69,139,139,139,139', +'139,139,139,139,139,139,139,139,139,,202,,202,2,202,,202,2,2,2,2,2,2', +'2,68,68,2,2,2,2,12,12,2,2,2,69,69,2,2,,156,156,2,156,2,2,197,197,197', +'156,2,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157', +'157,,103,103,,103,2,103,2,7,2,,2,7,7,7,7,7,7,7,196,196,7,7,7,7,,,7,7', +'7,,,7,7,168,168,168,7,,7,7,163,163,163,,7,146,146,146,146,146,146,146', +'146,146,146,146,146,146,152,152,152,152,152,116,116,116,,7,,7,10,7,', +'7,10,10,10,10,10,10,10,,,10,10,10,10,,,10,10,10,,,10,10,187,187,187', +'10,,10,10,74,74,74,,10,144,144,144,144,144,144,144,144,144,144,144,144', +'144,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,145,145,145,11,,11,11,186,186,186,', +'11,137,137,137,137,137,137,137,137,137,137,137,137,137,148,148,148,148', +'148,,,,,11,,11,105,11,,11,105,105,105,105,105,105,105,,,105,105,105', +'105,,,105,105,105,,,105,105,,,,105,,105,105,,,,,105,128,128,128,128', +'128,128,128,128,128,128,128,128,128,147,147,147,147,147,,,,,105,,105', +'16,105,,105,16,16,16,16,16,16,16,,,16,16,16,16,,,16,16,16,,,16,16,,', +',16,,16,16,,,,,16,134,134,134,134,134,134,134,134,134,134,134,134,134', +',,,,,,,,,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,193,20,,20,193,193,193,193,193,193,193,', +',193,193,193,193,,,193,193,193,,,193,193,,,,193,,193,193,,,,,193,130', +'130,130,130,130,130,130,130,130,130,130,130,130,,,,,,,,,,193,,193,191', +'193,,193,191,191,191,191,191,191,191,,,191,191,191,191,,,191,191,191', +',,191,191,,,,191,,191,191,,,,,191,,,,,,,,,,,,,,,,,,,,,,,191,,191,26', +'191,,191,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,190,32,,32,190,190,190', +'190,190,190,190,,,190,190,190,190,,,190,190,190,,,190,190,,,,190,,190', +'190,,,,,190,,,,,,,,,,,,,,,,,,,,,190,190,190,,190,34,190,,190,34,34,34', +'34,34,34,34,,,34,34,34,34,,,34,34,34,,,34,34,,,,34,,34,34,,,,,34,,,', +',,,,,,,,,,,,,,,,,34,34,34,,34,188,34,,34,188,188,188,188,188,188,188', +',,188,188,188,188,,,188,188,188,,,188,188,,,,188,,188,188,,,,,188,,', +',,,,,,,,,,,,,,,,,,188,188,188,,188,107,188,,188,107,107,107,107,107', +'107,107,,,107,107,107,107,,,107,107,107,,,107,107,,,,107,,107,107,,', +',,107,,,,,,,,,,,,,,,,,,,,,,,107,,107,41,107,,107,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,101,46,,46', +'101,101,101,101,101,101,101,,,101,101,101,101,,,101,101,101,,,101,101', +',,,101,,101,101,,,,,101,,,,,,,,,,,,,,,,,,,,,,,101,,101,180,101,,101', +'180,180,180,180,180,180,180,,,180,180,180,180,,,180,180,180,,,180,180', +',,,180,,180,180,,,,,180,,,,,,,,,,,,,,,,,,,,,180,180,180,,180,175,180', +',180,175,175,175,175,175,175,175,,,175,175,175,175,,,175,175,175,,,175', +'175,,,,175,,175,175,,,,,175,,,,,,,,,,,,,,,,,,,,,175,175,175,,175,56', +'175,,175,56,56,56,56,56,56,56,,,56,56,56,56,,,56,56,56,,,56,56,,,,56', +',56,56,,,,,56,,,,,,,,,,,,,,,,,,,,,56,56,56,,56,170,56,,56,170,170,170', +'170,170,170,170,,,170,170,170,170,,,170,170,170,,,170,170,,,,170,,170', +'170,,,,,170,,,,,,,,,,,,,,,,,,,,,,,170,,170,100,170,,170,100,100,100', +'100,100,100,100,,,100,100,100,100,,,100,100,100,,,100,100,,,,100,,100', +'100,,,,,100,,,,,,,,,,,,,,,,,,,,,,,100,,100,59,100,,100,59,59,59,59,59', +'59,59,,,59,59,59,59,,,59,59,59,,,59,59,,,,59,,59,59,,,,,59,,,,,,,,,', +',,,,,,,,,,,59,59,59,,59,167,59,,59,167,167,167,167,167,167,167,,,167', +'167,167,167,,,167,167,167,,,167,167,,,,167,,167,167,,,,,167,,,,,,,,', +',,,,,,,,,,,,167,167,167,,167,99,167,,167,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,166,98,,98,166,166', +'166,166,166,166,166,,,166,166,166,166,,,166,166,166,,,166,166,,,,166', +',166,166,,,,,166,,,,,,,,,,,,,,,,,,,,,,,166,,166,97,166,,166,97,97,97', +'97,97,97,97,,,97,97,97,97,,,97,97,97,,,97,97,,,,97,,97,97,,,,,97,,,', +',,,,,,,,,,,,,,,,,,,97,,97,154,97,,97,154,154,154,154,154,154,154,,,154', +'154,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,,153,153,,,,,153,,,,,,,,', +',,,,,,,,,,,,,,153,,153,96,153,,153,96,96,96,96,96,96,96,,,96,96,96,96', +',,96,96,96,,,96,96,,,,96,,96,96,,,,,96,,,,,,,,,,,,,,,,,,,,,,,96,,96', +'122,96,,96,122,122,122,122,122,122,122,,,122,122,122,122,,,122,122,122', +',,122,122,,,,122,,122,122,,,,,122,,,,,,,,,,,,,,,,,,,,,122,122,122,,122', +'118,122,,122,118,118,118,118,118,118,118,,,118,118,118,118,,,118,118', +'118,,,118,118,,,,118,,118,118,,,,,118,,,,,,,,,,,,,,,,,,,,,118,118,118', +',118,73,118,,118,73,73,73,73,73,73,73,,,73,73,73,73,,,73,73,73,,,73', +'73,,,,73,,73,73,,,,,73,,,,,,,,,,,,,,,,,,,,,,,73,,73,113,73,,73,113,113', +'113,113,113,113,113,,,113,113,113,113,,,113,113,113,,,113,113,,,,113', +',113,113,,,,,113,,,,,,,,,,,,,,,,,,,,,113,113,113,,113,75,113,,113,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,108,79,,79,108,108,108,108,108,108,108,,,108,108,108,108,,,108,108', +'108,,,108,108,,,,108,,108,108,,,,,108,,,,,,,,,,,,,,,,,,,,,,,108,,108', +'81,108,,108,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,95,85,,85,95,95,95,95,95,95,95,,,95,95,95,95,,,95', +'95,95,,,95,95,,,,95,,95,95,,,,,95,,,,,,,,,,,,,,,,,,,,,,,95,,95,87,95', +',95,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,86,94,,94,86,86,86,86,86,86,86,,,86,86,86,86,,,86,86,86,,,86,86', +',,,86,,86,86,,,124,,86,124,,,,,,,,,,,,,,,,,,,124,,,86,,86,,86,,86,,124', +'124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,,124', +'124,124,124,124,124,181,,181,181,,,124,,,,,,,,,,,,,,,,181,,,,,,62,,62', +'62,,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181', +'181,62,181,181,181,181,181,181,,181,181,,62,62,62,62,62,62,62,62,62', +'62,62,62,62,62,62,62,62,,62,62,62,62,62,62,,62,62,61,,61,61,,,,,,,,', +',,,,,,,,,,61,,,,,,58,,58,58,,61,61,61,61,61,61,61,61,61,61,61,61,61', +'61,61,61,61,58,61,61,61,61,61,61,,61,61,,58,58,58,58,58,58,58,58,58', +'58,58,58,58,58,58,58,58,,58,58,58,58,58,58,184,58,58,184,,,,,,,,,,,', +',,,,,,,184,,,,,,199,,,199,,184,184,184,184,184,184,184,184,184,184,184', +'184,184,184,184,184,184,199,184,184,184,184,184,184,184,204,,,199,199', +'199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,,199,199', +'199,199,199,199,199,67,,,67,,204,204,204,204,204,204,204,204,204,204', +'204,204,204,204,204,204,204,67,204,204,204,204,204,204,141,,,,67,67', +'67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,,67,67,67,67,67,67,102', +',,102,,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141', +'141,102,141,141,141,141,141,141,198,,,,102,102,102,102,102,102,102,102', +'102,102,102,102,102,102,102,102,102,,102,102,102,102,102,102,158,,,158', +',198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198', +'158,198,198,198,198,198,198,,,,,158,158,158,158,158,158,158,158,158', +'158,158,158,158,158,158,158,158,,158,158,158,158,158,158,40,,,40,,,', +',,,,,,,,,,,,,,,40,,,,,,172,,,172,,40,40,40,40,40,40,40,40,40,40,40,40', +'40,40,40,40,40,172,40,40,40,40,40,40,,,,,172,172,172,172,172,172,172', +'172,172,172,172,172,172,172,172,172,172,,172,172,172,172,172,172,126', +',,126,,,,,,,,,,,,,,,,,,,126,,,,,,173,,,173,,126,126,126,126,126,126', +'126,126,126,126,126,126,126,126,126,126,126,173,126,126,126,126,126', +'126,132,,,,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173', +'173,173,,173,173,173,173,173,173,104,,,104,,132,132,132,132,132,132', +'132,132,132,132,132,132,132,132,132,132,132,104,132,132,132,132,132', +'132,,,,,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104', +'104,104,,104,104,104,104,104,104,127,127,127,127,127,127,127,127,127', +'127,127,127,127,127,127,127,127,,127,127,127,127,127,127,133,133,133', +'133,133,133,133,133,133,133,133,133,133,133,133,133,133,,133,133,133', +'133,133,133,129,129,129,129,129,129,129,129,129,129,129,129,129,129', +'129,129,129,,129,129,129,129,129,129,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,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(4673, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -339,126 +336,128 @@ clist = [ end racc_action_pointer = [ - -2, 96, 124, nil, nil, nil, 187, nil, 250, nil, - nil, 89, 376, 59, nil, nil, nil, 502, 565, nil, - nil, nil, 628, -11, nil, nil, nil, 109, 817, 880, - nil, nil, nil, 943, 1006, 10, 1132, nil, nil, 42, - nil, nil, 4356, -4, 26, nil, nil, nil, nil, 1447, - nil, nil, 52, nil, nil, 1573, -34, nil, nil, 3870, - 1762, 7, 3898, 45, 4299, 3958, -10, 17, 52, nil, - 4384, 83, 77, 49, nil, nil, 2581, 58, 2707, 2770, - 2833, 2896, 2959, 136, 3085, 3148, 3211, 3274, 3337, 3400, - 3463, 3526, 3589, 3652, 3715, 2518, 2455, 2392, 2329, 2077, - 2014, 1951, 1888, 1699, 1636, nil, -16, nil, nil, -16, - -39, nil, 4271, 1384, nil, 1258, nil, nil, -35, 691, - nil, nil, 100, nil, 313, nil, 97, 3022, 3778, nil, - 52, nil, 34, 439, nil, 3813, nil, 4214, 4570, 255, - 4546, 192, -14, 4101, 4594, 381, nil, 4618, 507, nil, - 633, nil, 4129, 318, 243, 444, 306, 570, 146, 268, - 4642, 205, 4522, 76, 61, 112, 63, nil, 2644, nil, - 38, 129, nil, 30, nil, 163, nil, 4498, 4441, 2266, - -11, nil, 2203, 93, nil, 2140, 0, nil, nil, 4186, - nil, 1825, nil, nil, 3986, nil, nil, 1510, -18, nil, - 4071, 25, 249, 1321, 156, nil, 1195, 1069, nil, 754, - nil, -21, nil, 226, 4413, 4043, nil, nil, 61, nil, - 4470, nil ] + -2, 18, 124, nil, nil, nil, nil, 187, nil, nil, + 250, 313, 81, nil, nil, nil, 439, nil, nil, nil, + 502, -11, nil, nil, nil, 36, 691, 754, nil, nil, + nil, 817, 880, 10, 1006, nil, nil, -17, nil, nil, + 4300, 1195, nil, nil, nil, nil, 1258, nil, nil, 29, + nil, nil, -18, -22, nil, nil, 1510, -34, 3986, 1699, + 41, 3958, 3898, -10, 34, 65, nil, 4129, 77, 88, + 0, nil, nil, 2392, 226, 2518, 2581, 2644, 2707, 2770, + 63, 2896, 2959, 3022, 3085, 3148, 3778, 3274, 3337, 3400, + 3463, 3526, 3589, 3652, 3715, 3211, 2203, 2014, 1888, 1825, + 1636, 1321, 4186, 122, 4470, 376, nil, 1132, 2833, nil, + 49, 34, nil, 2455, nil, nil, 186, nil, 2329, 0, + nil, 37, 2266, nil, 3813, nil, 4385, 4494, 381, 4542, + 570, -23, 4442, 4518, 444, nil, 4566, 318, nil, 74, + nil, 4158, 507, 68, 255, 306, 192, 394, 331, 4590, + 268, 4614, 205, 2140, 2077, nil, 93, 129, 4243, nil, + nil, 30, nil, 163, -11, nil, 1951, 1762, 156, nil, + 1573, 68, 4328, 4413, nil, 1447, nil, nil, nil, nil, + 1384, 3870, -9, nil, 4043, -3, 289, 219, 1069, nil, + 943, 628, nil, 565, nil, nil, 140, 100, 4215, 4071, + nil, nil, 61, nil, 4101, nil ] racc_action_default = [ - -1, -109, -121, -32, -31, -10, -121, -67, -121, -33, - -11, -113, -121, -121, -12, -68, -13, -121, -86, -69, - -65, -14, -121, -121, -70, -21, -15, -121, -121, -121, - -25, -22, -16, -2, -121, -82, -121, -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, -38, - -36, -7, -121, -121, -72, -74, -121, -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, -115, -98, -21, -121, - -23, -24, -121, -66, -121, -85, -21, -121, -121, -119, - -121, 222, -121, -121, -73, -121, -64, -5, -59, -49, - -60, -50, -121, -92, -61, -51, -40, -62, -52, -41, - -53, -42, -93, -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, -104, -107, -121, -121, -95, - -121, -121, -121, -121, -121, -94, -121, -121, -100, -121, - -91, -108, -105, -121, -92, -121, -96, -102, -121, -101, - -92, -103 ] + -1, -78, -109, -32, -31, -10, -67, -109, -33, -11, + -109, -109, -109, -12, -68, -13, -109, -69, -65, -14, + -109, -109, -70, -21, -15, -109, -109, -109, -25, -22, + -16, -2, -109, -82, -109, -26, -17, -3, -28, -18, + -4, -86, -29, -27, -19, -8, -109, -30, -20, -9, + -79, -76, -109, -109, -39, -37, -109, -109, -109, -109, + -109, -109, -109, -83, -109, -109, -38, -36, -7, -109, + -109, -72, -74, -109, -109, -6, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -87, -109, -97, -86, -71, -109, -109, -77, + -109, -109, -98, -109, -23, -24, -109, -66, -109, -109, + 206, -109, -109, -73, -109, -64, -5, -59, -49, -60, + -50, -109, -92, -61, -51, -40, -62, -52, -41, -53, + -42, -93, -54, -43, -55, -44, -56, -45, -46, -57, + -47, -58, -48, -109, -109, -85, -109, -34, -35, -81, + -80, -109, -63, -109, -109, -106, -109, -109, -109, -75, + -109, -109, -89, -88, -84, -109, -90, -99, -107, -104, + -109, -109, -109, -95, -109, -109, -109, -109, -109, -94, + -109, -109, -100, -109, -91, -105, -108, -109, -92, -109, + -96, -102, -109, -101, -92, -103 ] racc_goto_table = [ - 54, 108, 117, 181, 111, 119, 57, 114, 124, 113, - 59, 130, 63, 66, 106, 62, 64, 67, 125, 180, - 65, 27, 114, nil, 113, nil, 69, 70, nil, nil, + 54, 50, 103, 113, 165, 55, 118, 119, 106, 58, + 64, 53, 63, 164, 61, 25, nil, nil, 62, nil, + nil, nil, nil, 106, 66, 67, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 102, + nil, nil, nil, nil, 104, nil, nil, nil, nil, 178, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 112, nil, nil, - nil, nil, nil, 196, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 33, 167, nil, nil, 39, - nil, nil, nil, nil, 135, 56, 137, 138, 139, 140, - 141, nil, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 72, 78, 77, nil, 170, nil, nil, - nil, 64, nil, 171, nil, nil, 190, nil, nil, nil, - nil, 78, 187, 188, 121, 177, 178, 121, 127, 122, - 121, nil, nil, nil, nil, nil, 78, 78, nil, nil, - 203, nil, 78, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 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, 173, nil, - nil, nil, nil, 175, nil, nil, nil, nil, nil, nil, - nil, nil, 183, nil, nil, 214, nil, 215, nil, nil, - nil, nil, nil, nil, nil, nil, 220, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 127, nil, nil, 78, nil, - 78, nil, nil, nil, nil, nil, nil, nil, 78, nil, - nil, 198, nil, nil, nil, nil, nil, nil, nil, 121, - 202, nil, nil, 78, nil, nil, 204, 78, nil, 78, - nil, nil, 211, nil, nil, 213, 78, nil, 78 ] + nil, nil, nil, 31, nil, nil, 156, nil, nil, nil, + nil, 124, nil, 126, 127, 128, 129, 130, nil, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 75, nil, nil, 102, nil, 157, 158, nil, nil, nil, + 159, 160, 37, nil, nil, nil, 110, nil, nil, nil, + 75, 115, 57, nil, 115, 115, 188, nil, nil, nil, + nil, 75, 75, nil, nil, nil, nil, 75, nil, nil, + nil, nil, nil, nil, 69, nil, 74, nil, nil, nil, + nil, 172, 173, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 181, nil, 153, nil, 184, nil, + nil, 116, nil, nil, nil, nil, nil, nil, nil, 75, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 198, + nil, 199, nil, nil, nil, nil, nil, nil, nil, nil, + 204, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 153, + nil, nil, nil, nil, 75, 161, 75, nil, nil, nil, + 163, 75, nil, nil, 168, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 115, 75, nil, nil, nil, 75, + 75, nil, nil, nil, nil, nil, nil, nil, nil, 75, + 75, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 182, + nil, nil, nil, nil, nil, nil, nil, 186, nil, nil, + nil, nil, 187, nil, nil, nil, nil, nil, nil, nil, + 196, nil, 197 ] racc_goto_check = [ - 4, 19, 32, 36, 28, 18, 4, 24, 18, 30, - 4, 18, 31, 25, 29, 4, 4, 6, 34, 35, - 4, 1, 24, nil, 30, nil, 4, 4, nil, nil, + 4, 19, 28, 18, 30, 4, 18, 18, 24, 4, + 6, 27, 25, 29, 4, 1, nil, nil, 4, nil, + nil, nil, nil, 24, 4, 4, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, + nil, nil, nil, nil, 4, nil, nil, nil, nil, 30, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, - nil, nil, nil, 36, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 2, 28, nil, nil, 3, - nil, nil, nil, nil, 4, 3, 4, 4, 4, 4, - 4, nil, 4, 4, 4, 4, 4, 4, 4, 4, + nil, nil, nil, 2, nil, nil, 28, nil, nil, nil, + nil, 4, nil, 4, 4, 4, 4, 4, nil, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 3, 2, 3, nil, 31, nil, nil, - nil, 4, nil, 4, nil, nil, 32, nil, nil, nil, - nil, 2, 19, 19, 2, 4, 4, 2, 2, 3, - 2, nil, nil, nil, nil, nil, 2, 2, nil, nil, - 18, nil, 2, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, - nil, 2, nil, nil, nil, nil, nil, 4, nil, nil, - nil, nil, nil, 4, nil, nil, nil, 2, 3, nil, - nil, nil, nil, 3, nil, nil, nil, nil, nil, nil, - nil, nil, 3, nil, nil, 4, nil, 4, nil, nil, - nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 2, nil, nil, 2, nil, - 2, nil, nil, nil, nil, nil, nil, nil, 2, nil, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, nil, nil, 4, nil, 4, 4, nil, nil, nil, + 19, 19, 3, nil, nil, nil, 2, nil, nil, nil, + 2, 2, 3, nil, 2, 2, 18, nil, nil, nil, + nil, 2, 2, nil, nil, nil, nil, 2, nil, nil, + nil, nil, nil, nil, 3, nil, 3, nil, nil, nil, + nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 4, nil, 2, nil, 4, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, 2, - 3, nil, nil, 2, nil, nil, 3, 2, nil, 2, - nil, nil, 3, nil, nil, 3, 2, nil, 2 ] + nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, + nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, + 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 2, + nil, nil, nil, nil, 2, 3, 2, nil, nil, nil, + 3, 2, nil, nil, 3, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 2, 2, nil, nil, nil, 2, + 2, nil, nil, nil, nil, nil, nil, nil, nil, 2, + 2, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 3, + nil, nil, nil, nil, nil, nil, nil, 3, nil, nil, + nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, + 3, nil, 3 ] racc_goto_pointer = [ - nil, 21, 65, 69, -2, nil, -6, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -54, -43, - nil, nil, nil, nil, -45, -10, nil, nil, -40, -30, - -43, -6, -54, nil, -45, -111, -127 ] + nil, 15, 63, 112, -2, nil, -11, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, -55, 0, + nil, nil, nil, nil, -41, -9, nil, 10, -39, -106, + -115 ] racc_goto_default = [ - nil, nil, 55, 71, 42, 48, 52, 5, 10, 14, - 16, 21, 26, 32, 38, 41, 47, 51, nil, nil, - 13, 15, 19, 24, 74, 35, 75, 44, nil, nil, - 6, nil, nil, 18, nil, nil, nil ] + nil, nil, 56, 68, 40, 45, 49, 5, 9, 13, + 15, 19, 24, 30, 36, 39, 44, 48, nil, nil, + 12, 14, 17, 22, 71, 33, 72, nil, nil, nil, + nil ] racc_reduce_table = [ 0, 0, :racc_error, @@ -539,18 +538,18 @@ racc_reduce_table = [ 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, + 0, 97, :_reduce_78, + 1, 97, :_reduce_79, + 3, 97, :_reduce_80, + 3, 97, :_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, + 0, 98, :_reduce_86, + 1, 98, :_reduce_87, + 3, 98, :_reduce_88, + 3, 98, :_reduce_89, 5, 81, :_reduce_90, 7, 81, :_reduce_91, 3, 81, :_reduce_92, @@ -567,25 +566,13 @@ racc_reduce_table = [ 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, - 1, 102, :_reduce_115, - 2, 102, :_reduce_116, - 1, 103, :_reduce_117, - 2, 103, :_reduce_118, - 1, 104, :_reduce_119, - 2, 104, :_reduce_120 ] + 1, 99, :_reduce_106, + 2, 99, :_reduce_107, + 4, 100, :_reduce_108 ] -racc_reduce_n = 121 +racc_reduce_n = 109 -racc_shift_n = 222 +racc_shift_n = 206 racc_token_table = { false => 0, @@ -777,14 +764,8 @@ Racc_token_to_s_table = [ "Accessor", "Invocation", "Index", - "ObjectStart", - "ObjectEnd", "AssignList", - "ParenStart", "ArgList", - "ParenEnd", - "ArrayStart", - "ArrayEnd", "Cases", "Case" ] @@ -1465,90 +1446,6 @@ module_eval(<<'.,.,', 'grammar.y', 274) end .,., -module_eval(<<'.,.,', 'grammar.y', 278) - def _reduce_109(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 279) - def _reduce_110(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 283) - def _reduce_111(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 284) - def _reduce_112(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 288) - def _reduce_113(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 289) - def _reduce_114(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 293) - def _reduce_115(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 294) - def _reduce_116(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 298) - def _reduce_117(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 299) - def _reduce_118(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 303) - def _reduce_119(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 304) - def _reduce_120(val, _values, result) - result = nil - result - end -.,., - def _reduce_none(val, _values, result) val[0] end