diff --git a/grammar.y b/grammar.y index 9b4c2b74..61057fcd 100644 --- a/grammar.y +++ b/grammar.y @@ -60,6 +60,7 @@ rule | Array | If | Return + | Parenthetical ; # All tokens that can terminate an expression @@ -135,8 +136,7 @@ rule # Method definition Code: - ParamList "=>" Expression { result = CodeNode.new(val[0], val[2]) } - | ParamList "=>" Expressions "." { result = CodeNode.new(val[0], val[2]) } + ParamList "=>" Expressions "." { result = CodeNode.new(val[0], val[2]) } ; ParamList: @@ -207,6 +207,10 @@ rule ELSE Expressions "." { result = IfNode.new(val[1], val[3], val[6]) } ; + Parenthetical: + "(" Expressions ")" { result = ParentheticalNode.new(val[1]) } + ; + end ---- header diff --git a/nodes.rb b/nodes.rb index 49127bfa..2b6ab898 100644 --- a/nodes.rb +++ b/nodes.rb @@ -172,7 +172,7 @@ class CodeNode < Node end def compile(indent, last=false) - nodes = @body.reduce + nodes = @body.respond_to?(:reduce) ? @body.reduce : [@body] code = nodes.map { |node| last = node == nodes.last line = node.compile(indent + TAB, last) @@ -238,3 +238,15 @@ class IfNode < Node "#{if_part} : #{else_part}" end end + +class ParentheticalNode < Node + def initialize(expressions) + @expressions = expressions + end + + def compile(indent, last=false) + compiled = @expressions.compile(indent) + compiled = compiled[0...-1] if compiled[-1..-1] == ';' + "(#{compiled})" + end +end diff --git a/parser.rb b/parser.rb index 4084b622..24878d2e 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', 217) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 221) def parse(code, show_tokens=false) # @yydebug = true @tokens = Lexer.new.tokenize(code) @@ -25,475 +25,280 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 217) ...end grammar.y/module_eval... ##### State transition tables begin ### -racc_action_table = [ - -1, -73, 5, 75, 70, 116, 19, 21, 25, 28, - 31, 1, 3, 75, 3, 11, 14, 18, 14, 24, - 27, 66, 5, 67, 118, 8, 19, 21, 25, 28, - 31, 1, 3, 40, 43, 11, 14, 18, -73, 24, - 27, 71, 29, 32, 144, 8, 70, 40, 43, 85, - 16, 5, 23, 70, 123, 19, 21, 25, 28, 31, - 1, 3, 40, 43, 11, 14, 18, 75, 24, 27, - 16, 5, 23, 133, 8, 19, 21, 25, 28, 31, - 1, 3, 121, 71, 11, 14, 18, 110, 24, 27, - 71, 29, 32, 35, 8, 29, 32, 29, 32, 16, - 5, 23, 125, 149, 19, 21, 25, 28, 31, 1, - 3, 75, 75, 11, 14, 18, nil, 24, 27, 16, - 5, 23, nil, 8, 19, 21, 25, 28, 31, 1, - 3, 40, 43, 11, 14, 18, nil, 24, 27, 29, - 32, 29, 32, 8, nil, -56, nil, -56, 16, 5, - 23, nil, 79, 19, 21, 25, 28, 31, 1, 3, - 29, 32, 11, 14, 18, nil, 24, 27, 16, 5, - 23, nil, 8, 19, 21, 25, 28, 31, 1, 3, - 40, 43, 11, 14, 18, nil, 24, 27, 29, 32, - 29, 32, 8, 29, 32, 112, 132, 16, 5, 23, - nil, 134, 19, 21, 25, 28, 31, 1, 3, 29, - 32, 11, 14, 18, nil, 24, 27, 16, nil, 23, - nil, 8, 40, 43, 5, 146, nil, nil, 19, 21, - 25, 28, 31, 1, 3, nil, nil, 11, 14, 18, - nil, 24, 27, -56, nil, -56, 16, 8, 23, nil, - 5, nil, nil, nil, 19, 21, 25, 28, 31, 1, - 3, nil, nil, 11, 14, 18, nil, 24, 27, -56, - nil, -56, 16, 8, 23, nil, 5, nil, nil, nil, - 19, 21, 25, 28, 31, 1, 3, nil, nil, 11, - 14, 18, nil, 24, 27, nil, nil, 5, 16, 8, - 23, 19, 21, 25, 28, 31, 1, 3, nil, nil, - 11, 14, 18, nil, 24, 27, 29, 32, nil, nil, - 8, nil, 141, 5, 16, nil, 23, 19, 21, 25, - 28, 31, 1, 3, nil, nil, 11, 14, 18, nil, - 24, 27, nil, nil, 5, 16, 8, 23, 19, 21, - 25, 28, 31, 1, 3, nil, nil, 11, 14, 18, - nil, 24, 27, nil, nil, nil, nil, 8, nil, nil, - 5, 16, nil, 23, 19, 21, 25, 28, 31, 1, - 3, nil, nil, 11, 14, 18, nil, 24, 27, -56, - nil, -56, 16, 8, 23, nil, 5, nil, nil, nil, - 19, 21, 25, 28, 31, 1, 3, nil, nil, 11, - 14, 18, nil, 24, 27, nil, nil, 5, 16, 8, - 23, 19, 21, 25, 28, 31, 1, 3, nil, nil, - 11, 14, 18, nil, 24, 27, nil, nil, nil, nil, - 8, nil, nil, 5, 16, nil, 23, 19, 21, 25, - 28, 31, 1, 3, nil, nil, 11, 14, 18, nil, - 24, 27, nil, nil, 5, 16, 8, 23, 19, 21, - 25, 28, 31, 1, 3, nil, nil, 11, 14, 18, - nil, 24, 27, nil, nil, nil, nil, 8, nil, nil, - 5, 16, nil, 23, 19, 21, 25, 28, 31, 1, - 3, nil, nil, 11, 14, 18, nil, 24, 27, -56, - nil, -56, 16, 8, 23, nil, 5, nil, nil, nil, - 19, 21, 25, 28, 31, 1, 3, nil, nil, 11, - 14, 18, nil, 24, 27, nil, nil, 5, 16, 8, - 23, 19, 21, 25, 28, 31, 1, 3, nil, nil, - 11, 14, 18, nil, 24, 27, nil, nil, nil, nil, - 8, nil, nil, 5, 16, nil, 23, 19, 21, 25, - 28, 31, 1, 3, nil, nil, 11, 14, 18, nil, - 24, 27, nil, nil, 5, 16, 8, 23, 19, 21, - 25, 28, 31, 1, 3, nil, nil, 11, 14, 18, - nil, 24, 27, nil, nil, nil, nil, 8, nil, nil, - 5, 16, nil, 23, 19, 21, 25, 28, 31, 1, - 3, nil, nil, 11, 14, 18, nil, 24, 27, nil, - nil, 5, 16, 8, 23, 19, 21, 25, 28, 31, - 1, 3, nil, nil, 11, 14, 18, nil, 24, 27, - nil, nil, nil, nil, 8, nil, nil, 5, 16, nil, - 23, 19, 21, 25, 28, 31, 1, 3, nil, nil, - 11, 14, 18, nil, 24, 27, nil, nil, 5, 16, - 8, 23, 19, 21, 25, 28, 31, 1, 3, nil, - nil, 11, 14, 18, nil, 24, 27, nil, nil, nil, - nil, 8, nil, nil, 5, 16, nil, 23, 19, 21, - 25, 28, 31, 1, 3, nil, nil, 11, 14, 18, - nil, 24, 27, nil, nil, 5, 16, 8, 23, 19, - 21, 25, 28, 31, 1, 3, nil, nil, 11, 14, - 18, nil, 24, 27, nil, nil, nil, nil, 8, nil, - nil, 5, 16, nil, 23, 19, 21, 25, 28, 31, - 1, 3, nil, nil, 11, 14, 18, nil, 24, 27, - nil, nil, 5, 16, 8, 23, 19, 21, 25, 28, - 31, 1, 3, nil, nil, 11, 14, 18, nil, 24, - 27, nil, nil, nil, nil, 8, nil, nil, 5, 16, - nil, 23, 19, 21, 25, 28, 31, 1, 3, nil, - nil, 11, 14, 18, nil, 24, 27, nil, nil, 5, - 16, 8, 23, 19, 21, 25, 28, 31, 1, 3, - nil, nil, 11, 14, 18, nil, 24, 27, nil, nil, - nil, nil, 8, nil, nil, 5, 16, nil, 23, 19, - 21, 25, 28, 31, 1, 3, nil, nil, 11, 14, - 18, nil, 24, 27, nil, nil, 5, 16, 8, 23, - 19, 21, 25, 28, 31, 1, 3, nil, nil, 11, - 14, 18, nil, 24, 27, nil, nil, nil, nil, 8, - nil, nil, 5, 16, nil, 23, 19, 21, 25, 28, - 31, 1, 3, nil, nil, 11, 14, 18, nil, 24, - 27, nil, nil, 5, 16, 8, 23, 19, 21, 25, - 28, 31, 1, 3, nil, nil, 11, 14, 18, nil, - 24, 27, nil, nil, nil, nil, 8, nil, nil, 5, - 16, nil, 23, 19, 21, 25, 28, 31, 1, 3, - nil, nil, 11, 14, 18, nil, 24, 27, nil, nil, - 5, 16, 8, 23, 19, 21, 25, 28, 31, 1, - 3, nil, nil, 11, 14, 18, nil, 24, 27, nil, - nil, nil, nil, 8, nil, nil, 5, 16, nil, 23, - 19, 21, 25, 28, 31, 1, 3, nil, nil, 11, - 14, 18, nil, 24, 27, nil, nil, 5, 16, 8, - 23, 19, 21, 25, 28, 31, 1, 3, nil, nil, - 11, 14, 18, 70, 24, 27, nil, nil, nil, nil, - 8, nil, nil, 5, 16, nil, 23, 19, 21, 25, - 28, 31, 1, 3, nil, nil, 11, 14, 18, nil, - 24, 27, 29, 32, 69, 16, 8, 23, nil, 112, - 71, 29, 32, nil, 74, 143, 139, nil, 125, 29, - 32, nil, 126, 29, 32, nil, 112, nil, 113, nil, - nil, 16, nil, 23, 60, 39, 42, 45, 47, 49, - 51, 53, 55, 57, 58, 59, 38, 41, 44, 46, - 48, 50, 52, 54, 56, 83, nil, nil, 40, 43, - nil, 140, 19, 21, 25, 28, 31, 1, nil, nil, - nil, nil, 60, 39, 42, 45, 47, 49, 51, 53, - 55, 57, 58, 59, 38, 41, 44, 46, 48, 50, - 52, 54, 56, 29, 32, nil, 40, 43, 60, 39, - 42, 45, 47, 49, 51, 53, 55, 57, 58, 59, - 38, 41, 44, 46, 48, 50, 52, 54, 56, nil, - nil, nil, 40, 43, nil, 147, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, 41, - 44, 46, 48, 50, 52, 54, 56, -3, -3, nil, - 40, 43, nil, -3, 60, 39, 42, 45, 47, 49, - 51, 53, 55, 57, 58, 59, 38, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 40, 43, - 60, 39, 42, 45, 47, 49, 51, 53, 55, 57, - 58, 59, 38, 41, 44, 46, 48, 50, 52, 54, - 56, nil, nil, nil, 40, 43, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, 41, - 44, 46, 48, 50, 52, 54, 56, nil, nil, nil, - 40, 43, 60, 39, 42, 45, 47, 49, 51, 53, - 55, 57, 58, 59, 38, 41, 44, 46, 48, 50, - 52, 54, 56, nil, nil, nil, 40, 43, 60, 39, - 42, 45, 47, 49, 51, 53, 55, 57, 58, 59, - 38, 41, 44, 46, 48, 50, 52, 54, 56, nil, - nil, nil, 40, 43, 60, 39, 42, 45, 47, 49, - 51, 53, 55, 57, 58, 59, 38, 41, 44, 46, - 48, 50, 52, 54, 56, nil, nil, nil, 40, 43, - 60, 39, 42, 45, 47, 49, 51, 53, 55, 57, - 58, 59, 38, 41, 44, 46, 48, 50, 52, 54, - 56, nil, nil, nil, 40, 43, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, 41, - 44, 46, 48, 50, 52, 54, 56, nil, nil, nil, - 40, 43, 60, 39, 42, 45, 47, 49, 51, 53, - 55, 57, 58, 59, 38, 41, 44, 46, 48, 50, - 52, 54, 56, nil, nil, nil, 40, 43, 60, 39, - 42, 45, 47, 49, 51, 53, 55, 57, 58, 59, - 38, 41, 44, 46, 48, 50, 52, 54, 56, 60, - 39, 42, 40, 43, 60, 39, 42, 45, 47, 49, - 51, 53, 55, 57, 58, 59, 38, nil, nil, 60, - 39, 42, nil, 40, 43, nil, nil, nil, 40, 43, - 60, 39, 42, 45, 47, 49, 51, 53, 55, 57, - 58, 59, 38, 40, 43, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 40, 43, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, 41, - 44, 46, 48, 50, 52, 54, 56, nil, nil, nil, - 40, 43, 60, 39, 42, 45, 47, 49, 51, 53, - 55, 57, 58, 59, 38, nil, nil, 60, 39, 42, - 45, 47, nil, nil, nil, nil, 40, 43, 60, 39, - 42, 45, 47, 49, 51, 53, 55, 57, 58, 59, - 38, 40, 43, 60, 39, 42, 45, 47, nil, nil, - nil, nil, 40, 43, 60, 39, 42, 45, 47, 49, - 51, 53, 55, 57, 58, 59, 38, 40, 43, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 40, 43, - 60, 39, 42, 45, 47, 49, 51, 53, 55, 57, - 58, 59, 38, 41, 44, 46, 48, 50, 52, 54, - 56, nil, nil, nil, 40, 43, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, 41, - 44, 46, 48, 50, 52, 54, 56, nil, nil, nil, - 40, 43, 60, 39, 42, 45, 47, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 40, 43, 60, 39, - 42, 45, 47, 49, 51, 53, 55, 57, 58, 59, - 38, 41, 44, 46, 48, 50, 52, 54, 56, nil, - nil, nil, 40, 43, 60, 39, 42, 45, 47, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 40, 43, - 60, 39, 42, 45, 47, 49, 51, 53, 55, 57, - 58, 59, 38, 41, 44, 46, 48, 50, 52, 54, - 56, nil, nil, nil, 40, 43, 60, 39, 42, 45, - 47, 49, 51, 53, 55, 57, 58, 59, 38, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 40, 43, 60, 39, 42, 45, 47, 49, 51, 53, - 55, 57, 58, 59, 38, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 40, 43 ] +clist = [ +'-1,72,5,77,-73,77,19,22,26,29,33,1,3,118,72,11,14,18,72,25,28,72,5,77', +'120,8,19,22,26,29,33,1,3,30,34,11,14,18,73,25,28,-73,30,34,80,8,147', +'30,34,71,17,73,24,144,32,73,30,34,73,76,30,34,113,115,124,88,69,115', +'70,137,17,5,24,146,32,19,22,26,29,33,1,3,77,3,11,14,18,14,25,28,136', +'5,42,45,8,19,22,26,29,33,1,3,30,34,11,14,18,123,25,28,37,30,34,77,8', +'129,30,34,,17,,24,135,32,30,34,,62,41,44,,127,30,34,,128,30,34,152,17', +'5,24,,32,19,22,26,29,33,1,3,42,45,11,14,18,,25,28,,5,42,45,8,19,22,26', +'29,33,1,3,42,45,11,14,18,,25,28,,30,34,,8,30,34,42,45,17,,24,115,32', +'116,30,34,62,41,44,42,45,127,19,22,26,29,33,1,17,5,24,,32,19,22,26,29', +'33,1,3,42,45,11,14,18,,25,28,,5,30,34,8,19,22,26,29,33,1,3,42,45,11', +'14,18,,25,28,,,,,8,,-56,,-56,17,,24,,32,,,,,,,,30,34,,,,,,,17,5,24,', +'32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,', +'11,14,18,,25,28,,,,,8,,-56,,-56,17,,24,,32,,,,,,,,62,41,44,47,49,,,', +'17,,24,,32,5,149,,,19,22,26,29,33,1,3,42,45,11,14,18,,25,28,,5,,,8,19', +'22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,-56,,-56,17,,24,,32,,,,62,41', +'44,47,49,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,42,45,11,14,18,,25,28', +',5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,', +'62,41,44,47,49,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,42,45,11,14,18', +',25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,-56,,-56,17', +',24,,32,,,,62,41,44,47,49,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,42,45', +'11,14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,30,34,', +'8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11', +'14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17', +',24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25', +'28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,30,34,,8,,,,,17,,24', +',32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28', +',5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,', +',,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8', +'19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,,,,', +',,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22,26', +'29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5', +'24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22,26,29,33,1', +'3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5,24,,32', +'19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11', +'14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26', +'29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25', +'28,,,,,8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1', +'3,,,11,14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,', +'8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11', +'14,18,,25,28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17', +',24,,32,,,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25', +'28,,5,,,8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32', +',,,,,,,,,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,', +',8,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,', +',,,,,,,,17,5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,5,,,8,19,22', +'26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,17,,24,,32,,,,,,,,,,,,,,,,17', +'5,24,,32,19,22,26,29,33,1,3,,,11,14,18,,25,28,,,,,8,,,,,,,,,,,,142,', +',,,,,,,,-56,,-56,17,,24,,32,62,41,44,47,49,51,53,55,57,59,60,61,40,43', +'46,48,50,52,54,56,58,86,,,42,45,,143,,,,,,,,,,,62,41,44,47,49,51,53', +'55,57,59,60,61,40,43,46,48,50,52,54,56,58,30,34,,42,45,62,41,44,47,49', +'51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45,,150,62,41', +'44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45,62', +'41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45', +'62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42', +'45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,', +',42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58', +',,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,,,,,,,,,,,,42,45,62', +'41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45', +'62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42', +'45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,', +',42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,,,,,,,,,,,,42,45,62,41', +'44,47,49,51,53,55,57,59,60,61,40,,,,,,,,,,,,42,45,62,41,44,47,49,51', +'53,55,57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45,62,41,44,47,49', +'51,53,55,57,59,60,61,40,,,,,,,,,,,,42,45,62,41,44,47,49,51,53,55,57', +'59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45,62,41,44,47,49,51,53,55', +'57,59,60,61,40,43,46,48,50,52,54,56,58,,,,42,45,62,41,44,47,49,51,53', +'55,57,59,60,61,40,,,,,,,,,,,,42,45,62,41,44,47,49,51,53,55,57,59,60', +'61,40,,,,,,,,,,,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,,,,,,', +',,,,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52,54', +'56,58,,,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50,52', +'54,56,58,,,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,43,46,48,50', +'52,54,56,58,,,,42,45,62,41,44,47,49,51,53,55,57,59,60,61,40,,,,,,,,', +',,,42,45' ] + racc_action_table = arr = Array.new(2241, nil) + idx = 0 + clist.each do |str| + str.split(',', -1).each do |i| + arr[idx] = i.to_i unless i.empty? + idx += 1 + end + end -racc_action_check = [ - 0, 143, 0, 136, 26, 67, 0, 0, 0, 0, - 0, 0, 0, 77, 14, 0, 0, 0, 14, 0, - 0, 17, 5, 17, 70, 0, 5, 5, 5, 5, - 5, 5, 5, 80, 80, 5, 5, 5, 143, 5, - 5, 26, 0, 0, 136, 5, 61, 82, 82, 35, - 0, 146, 0, 62, 77, 146, 146, 146, 146, 146, - 146, 146, 88, 88, 146, 146, 146, 124, 146, 146, - 5, 8, 5, 119, 146, 8, 8, 8, 8, 8, - 8, 8, 75, 61, 8, 8, 8, 61, 8, 8, - 62, 146, 146, 7, 8, 122, 122, 148, 148, 146, - 110, 146, 122, 148, 110, 110, 110, 110, 110, 110, - 110, 23, 125, 110, 110, 110, nil, 110, 110, 8, - 66, 8, nil, 110, 66, 66, 66, 66, 66, 66, - 66, 36, 36, 66, 66, 66, nil, 66, 66, 10, - 10, 23, 23, 66, nil, 110, nil, 110, 110, 83, - 110, nil, 23, 83, 83, 83, 83, 83, 83, 83, - 66, 66, 83, 83, 83, nil, 83, 83, 66, 15, - 66, nil, 83, 15, 15, 15, 15, 15, 15, 15, - 109, 109, 15, 15, 15, nil, 15, 15, 120, 120, - 114, 114, 15, 63, 63, 120, 114, 83, 16, 83, - nil, 120, 16, 16, 16, 16, 16, 16, 16, 15, - 15, 16, 16, 16, nil, 16, 16, 15, nil, 15, - nil, 16, 91, 91, 142, 142, nil, nil, 142, 142, - 142, 142, 142, 142, 142, nil, nil, 142, 142, 142, - nil, 142, 142, 16, nil, 16, 16, 142, 16, nil, - 18, nil, nil, nil, 18, 18, 18, 18, 18, 18, - 18, nil, nil, 18, 18, 18, nil, 18, 18, 142, - nil, 142, 142, 18, 142, nil, 111, nil, nil, nil, - 111, 111, 111, 111, 111, 111, 111, nil, nil, 111, - 111, 111, nil, 111, 111, nil, nil, 112, 18, 111, - 18, 112, 112, 112, 112, 112, 112, 112, nil, nil, - 112, 112, 112, nil, 112, 112, 128, 128, nil, nil, - 112, nil, 128, 24, 111, nil, 111, 24, 24, 24, - 24, 24, 24, 24, nil, nil, 24, 24, 24, nil, - 24, 24, nil, nil, 74, 112, 24, 112, 74, 74, - 74, 74, 74, 74, 74, nil, nil, 74, 74, 74, - nil, 74, 74, nil, nil, nil, nil, 74, nil, nil, - 27, 24, nil, 24, 27, 27, 27, 27, 27, 27, - 27, nil, nil, 27, 27, 27, nil, 27, 27, 74, - nil, 74, 74, 27, 74, nil, 121, nil, nil, nil, - 121, 121, 121, 121, 121, 121, 121, nil, nil, 121, - 121, 121, nil, 121, 121, nil, nil, 139, 27, 121, - 27, 139, 139, 139, 139, 139, 139, 139, nil, nil, - 139, 139, 139, nil, 139, 139, nil, nil, nil, nil, - 139, nil, nil, 69, 121, nil, 121, 69, 69, 69, - 69, 69, 69, 69, nil, nil, 69, 69, 69, nil, - 69, 69, nil, nil, 37, 139, 69, 139, 37, 37, - 37, 37, 37, 37, 37, nil, nil, 37, 37, 37, - nil, 37, 37, nil, nil, nil, nil, 37, nil, nil, - 38, 69, nil, 69, 38, 38, 38, 38, 38, 38, - 38, nil, nil, 38, 38, 38, nil, 38, 38, 37, - nil, 37, 37, 38, 37, nil, 39, nil, nil, nil, - 39, 39, 39, 39, 39, 39, 39, nil, nil, 39, - 39, 39, nil, 39, 39, nil, nil, 40, 38, 39, - 38, 40, 40, 40, 40, 40, 40, 40, nil, nil, - 40, 40, 40, nil, 40, 40, nil, nil, nil, nil, - 40, nil, nil, 41, 39, nil, 39, 41, 41, 41, - 41, 41, 41, 41, nil, nil, 41, 41, 41, nil, - 41, 41, nil, nil, 42, 40, 41, 40, 42, 42, - 42, 42, 42, 42, 42, nil, nil, 42, 42, 42, - nil, 42, 42, nil, nil, nil, nil, 42, nil, nil, - 43, 41, nil, 41, 43, 43, 43, 43, 43, 43, - 43, nil, nil, 43, 43, 43, nil, 43, 43, nil, - nil, 44, 42, 43, 42, 44, 44, 44, 44, 44, - 44, 44, nil, nil, 44, 44, 44, nil, 44, 44, - nil, nil, nil, nil, 44, nil, nil, 45, 43, nil, - 43, 45, 45, 45, 45, 45, 45, 45, nil, nil, - 45, 45, 45, nil, 45, 45, nil, nil, 46, 44, - 45, 44, 46, 46, 46, 46, 46, 46, 46, nil, - nil, 46, 46, 46, nil, 46, 46, nil, nil, nil, - nil, 46, nil, nil, 47, 45, nil, 45, 47, 47, - 47, 47, 47, 47, 47, nil, nil, 47, 47, 47, - nil, 47, 47, nil, nil, 48, 46, 47, 46, 48, - 48, 48, 48, 48, 48, 48, nil, nil, 48, 48, - 48, nil, 48, 48, nil, nil, nil, nil, 48, nil, - nil, 49, 47, nil, 47, 49, 49, 49, 49, 49, - 49, 49, nil, nil, 49, 49, 49, nil, 49, 49, - nil, nil, 50, 48, 49, 48, 50, 50, 50, 50, - 50, 50, 50, nil, nil, 50, 50, 50, nil, 50, - 50, nil, nil, nil, nil, 50, nil, nil, 51, 49, - nil, 49, 51, 51, 51, 51, 51, 51, 51, nil, - nil, 51, 51, 51, nil, 51, 51, nil, nil, 52, - 50, 51, 50, 52, 52, 52, 52, 52, 52, 52, - nil, nil, 52, 52, 52, nil, 52, 52, nil, nil, - nil, nil, 52, nil, nil, 53, 51, nil, 51, 53, - 53, 53, 53, 53, 53, 53, nil, nil, 53, 53, - 53, nil, 53, 53, nil, nil, 54, 52, 53, 52, - 54, 54, 54, 54, 54, 54, 54, nil, nil, 54, - 54, 54, nil, 54, 54, nil, nil, nil, nil, 54, - nil, nil, 55, 53, nil, 53, 55, 55, 55, 55, - 55, 55, 55, nil, nil, 55, 55, 55, nil, 55, - 55, nil, nil, 56, 54, 55, 54, 56, 56, 56, - 56, 56, 56, 56, nil, nil, 56, 56, 56, nil, - 56, 56, nil, nil, nil, nil, 56, nil, nil, 57, - 55, nil, 55, 57, 57, 57, 57, 57, 57, 57, - nil, nil, 57, 57, 57, nil, 57, 57, nil, nil, - 58, 56, 57, 56, 58, 58, 58, 58, 58, 58, - 58, nil, nil, 58, 58, 58, nil, 58, 58, nil, - nil, nil, nil, 58, nil, nil, 59, 57, nil, 57, - 59, 59, 59, 59, 59, 59, 59, nil, nil, 59, - 59, 59, nil, 59, 59, nil, nil, 60, 58, 59, - 58, 60, 60, 60, 60, 60, 60, 60, nil, nil, - 60, 60, 60, 22, 60, 60, nil, nil, nil, nil, - 60, nil, nil, 84, 59, nil, 59, 84, 84, 84, - 84, 84, 84, 84, nil, nil, 84, 84, 84, nil, - 84, 84, 129, 129, 22, 60, 84, 60, nil, 129, - 22, 78, 78, nil, 22, 129, 127, nil, 78, 65, - 65, nil, 78, 84, 84, nil, 65, nil, 65, nil, - nil, 84, nil, 84, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 34, nil, nil, 127, 127, - nil, 127, 71, 71, 71, 71, 71, 71, nil, nil, - nil, nil, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, nil, 34, 34, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, nil, - nil, nil, 145, 145, nil, 145, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, nil, - 115, 115, nil, 115, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 87, 87, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, nil, nil, nil, 68, 68, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, nil, nil, nil, - 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, nil, nil, nil, 131, 131, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, nil, - nil, nil, 64, 64, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, nil, nil, nil, 13, 13, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, nil, nil, nil, 86, 86, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, nil, nil, nil, - 117, 117, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, nil, nil, nil, 135, 135, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, - 94, 94, 89, 89, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, nil, nil, 96, - 96, 96, nil, 94, 94, nil, nil, nil, 90, 90, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 96, 96, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 108, 108, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, nil, nil, nil, - 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, nil, nil, 98, 98, 98, - 98, 98, nil, nil, nil, nil, 93, 93, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 98, 98, 100, 100, 100, 100, 100, nil, nil, - nil, nil, 95, 95, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 100, 100, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 97, 97, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, nil, nil, nil, 99, 99, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, nil, nil, nil, - 101, 101, 102, 102, 102, 102, 102, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 102, 102, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, nil, - nil, nil, 103, 103, 104, 104, 104, 104, 104, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 104, 104, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, nil, nil, nil, 105, 105, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 107, 107, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 106, 106, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 106, 106 ] +clist = [ +'0,64,0,24,146,139,0,0,0,0,0,0,0,70,27,0,0,0,23,0,0,63,5,78,72,0,5,5', +'5,5,5,5,5,24,24,5,5,5,64,5,5,146,0,0,24,5,139,131,131,23,0,27,0,131', +'0,23,122,122,63,23,132,132,63,122,78,37,21,132,21,122,5,149,5,132,5', +'149,149,149,149,149,149,149,126,14,149,149,149,14,149,149,121,8,38,38', +'149,8,8,8,8,8,8,8,85,85,8,8,8,77,8,8,7,149,149,127,8,85,117,117,,149', +',149,117,149,81,81,,97,97,97,,81,151,151,,81,10,10,151,8,87,8,,8,87', +'87,87,87,87,87,87,97,97,87,87,87,,87,87,,86,84,84,87,86,86,86,86,86', +'86,86,82,82,86,86,86,,86,86,,87,87,,86,66,66,112,112,87,,87,66,87,66', +'125,125,99,99,99,91,91,125,73,73,73,73,73,73,86,113,86,,86,113,113,113', +'113,113,113,113,99,99,113,113,113,,113,113,,16,65,65,113,16,16,16,16', +'16,16,16,94,94,16,16,16,,16,16,,,,,16,,113,,113,113,,113,,113,,,,,,', +',16,16,,,,,,,16,17,16,,16,17,17,17,17,17,17,17,,,17,17,17,,17,17,,18', +',,17,18,18,18,18,18,18,18,,,18,18,18,,18,18,,,,,18,,17,,17,17,,17,,17', +',,,,,,,101,101,101,101,101,,,,18,,18,,18,145,145,,,145,145,145,145,145', +'145,145,101,101,145,145,145,,145,145,,114,,,145,114,114,114,114,114', +'114,114,,,114,114,114,,114,114,,,,,114,,145,,145,145,,145,,145,,,,103', +'103,103,103,103,,,,,,,,114,115,114,,114,115,115,115,115,115,115,115', +'103,103,115,115,115,,115,115,,25,,,115,25,25,25,25,25,25,25,,,25,25', +'25,,25,25,,,,,25,,,,,115,,115,,115,,,,105,105,105,105,105,,,,,,,,25', +'76,25,,25,76,76,76,76,76,76,76,105,105,76,76,76,,76,76,,28,,,76,28,28', +'28,28,28,28,28,,,28,28,28,,28,28,,,,,28,,76,,76,76,,76,,76,,,,107,107', +'107,107,107,,,,,,,,28,32,28,,28,32,32,32,32,32,32,32,107,107,32,32,32', +',32,32,,123,,,32,123,123,123,123,123,123,123,,,123,123,123,,123,123', +',32,32,,123,,,,,32,,32,,32,,,,,,,,,,,,,,,,123,142,123,,123,142,142,142', +'142,142,142,142,,,142,142,142,,142,142,,71,,,142,71,71,71,71,71,71,71', +',,71,71,71,,71,71,,,,,71,,,,,142,,142,,142,,,,,,,,,,,,,,,,71,69,71,', +'71,69,69,69,69,69,69,69,,,69,69,69,,69,69,,40,,,69,40,40,40,40,40,40', +'40,,,40,40,40,,40,40,,69,69,,40,,,,,69,,69,,69,,,,,,,,,,,,,,,,40,41', +'40,,40,41,41,41,41,41,41,41,,,41,41,41,,41,41,,42,,,41,42,42,42,42,42', +'42,42,,,42,42,42,,42,42,,,,,42,,,,,41,,41,,41,,,,,,,,,,,,,,,,42,43,42', +',42,43,43,43,43,43,43,43,,,43,43,43,,43,43,,44,,,43,44,44,44,44,44,44', +'44,,,44,44,44,,44,44,,,,,44,,,,,43,,43,,43,,,,,,,,,,,,,,,,44,45,44,', +'44,45,45,45,45,45,45,45,,,45,45,45,,45,45,,46,,,45,46,46,46,46,46,46', +'46,,,46,46,46,,46,46,,,,,46,,,,,45,,45,,45,,,,,,,,,,,,,,,,46,47,46,', +'46,47,47,47,47,47,47,47,,,47,47,47,,47,47,,48,,,47,48,48,48,48,48,48', +'48,,,48,48,48,,48,48,,,,,48,,,,,47,,47,,47,,,,,,,,,,,,,,,,48,49,48,', +'48,49,49,49,49,49,49,49,,,49,49,49,,49,49,,50,,,49,50,50,50,50,50,50', +'50,,,50,50,50,,50,50,,,,,50,,,,,49,,49,,49,,,,,,,,,,,,,,,,50,51,50,', +'50,51,51,51,51,51,51,51,,,51,51,51,,51,51,,52,,,51,52,52,52,52,52,52', +'52,,,52,52,52,,52,52,,,,,52,,,,,51,,51,,51,,,,,,,,,,,,,,,,52,53,52,', +'52,53,53,53,53,53,53,53,,,53,53,53,,53,53,,54,,,53,54,54,54,54,54,54', +'54,,,54,54,54,,54,54,,,,,54,,,,,53,,53,,53,,,,,,,,,,,,,,,,54,55,54,', +'54,55,55,55,55,55,55,55,,,55,55,55,,55,55,,56,,,55,56,56,56,56,56,56', +'56,,,56,56,56,,56,56,,,,,56,,,,,55,,55,,55,,,,,,,,,,,,,,,,56,57,56,', +'56,57,57,57,57,57,57,57,,,57,57,57,,57,57,,58,,,57,58,58,58,58,58,58', +'58,,,58,58,58,,58,58,,,,,58,,,,,57,,57,,57,,,,,,,,,,,,,,,,58,59,58,', +'58,59,59,59,59,59,59,59,,,59,59,59,,59,59,,60,,,59,60,60,60,60,60,60', +'60,,,60,60,60,,60,60,,,,,60,,,,,59,,59,,59,,,,,,,,,,,,,,,,60,61,60,', +'60,61,61,61,61,61,61,61,,,61,61,61,,61,61,,62,,,61,62,62,62,62,62,62', +'62,,,62,62,62,,62,62,,,,,62,,,,,61,,61,,61,,,,,,,,,,,,,,,,62,39,62,', +'62,39,39,39,39,39,39,39,,,39,39,39,,39,39,,,,,39,,,,,,,,,,,,130,,,,', +',,,,,39,,39,39,,39,,39,130,130,130,130,130,130,130,130,130,130,130,130', +'130,130,130,130,130,130,130,130,130,36,,,130,130,,130,,,,,,,,,,,36,36', +'36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,,36,36', +'148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148', +'148,148,148,148,,,,148,148,,148,89,89,89,89,89,89,89,89,89,89,89,89', +'89,89,89,89,89,89,89,89,89,,,,89,89,133,133,133,133,133,133,133,133', +'133,133,133,133,133,133,133,133,133,133,133,133,133,,,,133,133,68,68', +'68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,,,,68,68,67', +'67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,,,,67,67', +'134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134', +'134,134,134,134,,,,134,134,111,111,111,111,111,111,111,111,111,111,111', +'111,111,,,,,,,,,,,,111,111,13,13,13,13,13,13,13,13,13,13,13,13,13,13', +'13,13,13,13,13,13,13,,,,13,13,138,138,138,138,138,138,138,138,138,138', +'138,138,138,138,138,138,138,138,138,138,138,,,,138,138,119,119,119,119', +'119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119', +',,,119,119,90,90,90,90,90,90,90,90,90,90,90,90,90,,,,,,,,,,,,90,90,110', +'110,110,110,110,110,110,110,110,110,110,110,110,,,,,,,,,,,,110,110,92', +'92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,,,,92,92', +'93,93,93,93,93,93,93,93,93,93,93,93,93,,,,,,,,,,,,93,93,108,108,108', +'108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108', +'108,,,,108,108,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95', +'95,95,95,,,,95,95,96,96,96,96,96,96,96,96,96,96,96,96,96,,,,,,,,,,,', +'96,96,98,98,98,98,98,98,98,98,98,98,98,98,98,,,,,,,,,,,,98,98,100,100', +'100,100,100,100,100,100,100,100,100,100,100,,,,,,,,,,,,100,100,102,102', +'102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102', +'102,102,,,,102,102,104,104,104,104,104,104,104,104,104,104,104,104,104', +'104,104,104,104,104,104,104,104,,,,104,104,106,106,106,106,106,106,106', +'106,106,106,106,106,106,106,106,106,106,106,106,106,106,,,,106,106,109', +'109,109,109,109,109,109,109,109,109,109,109,109,,,,,,,,,,,,109,109' ] + racc_action_check = arr = Array.new(2241, nil) + idx = 0 + clist.each do |str| + str.split(',', -1).each do |i| + arr[idx] = i.to_i unless i.empty? + idx += 1 + end + end racc_action_pointer = [ - 0, nil, nil, nil, nil, 20, nil, 93, 69, nil, - 97, nil, nil, 1313, 2, 167, 196, -26, 248, nil, - nil, nil, 1010, 99, 321, nil, -9, 368, nil, nil, - nil, nil, nil, nil, 1101, 49, 86, 462, 488, 514, - 535, 561, 582, 608, 629, 655, 676, 702, 723, 749, - 770, 796, 817, 843, 864, 890, 911, 937, 958, 984, - 1005, 33, 40, 151, 1287, 1027, 118, -10, 1209, 441, - 12, 1106, nil, nil, 342, 38, nil, 1, 1019, nil, - -12, nil, 2, 147, 1031, nil, 1339, 1183, 17, 1417, - 1443, 177, 1495, 1521, 1438, 1547, 1458, 1573, 1536, 1599, - 1562, 1625, 1651, 1677, 1703, 1729, 1781, 1755, 1469, 135, - 98, 274, 295, nil, 148, 1155, nil, 1365, nil, 22, - 146, 394, 53, nil, 55, 100, nil, 1063, 274, 1010, - 1235, 1261, nil, nil, nil, 1391, -9, nil, nil, 415, - nil, nil, 222, -12, nil, 1127, 49, nil, 55, nil ] + 0, nil, nil, nil, nil, 20, nil, 110, 89, nil, + 94, nil, nil, 1804, 71, nil, 227, 276, 296, nil, + nil, 19, nil, 5, -9, 438, nil, 1, 507, nil, + nil, nil, 556, nil, nil, nil, 1594, 65, 47, 1522, + 714, 763, 783, 832, 852, 901, 921, 970, 990, 1039, + 1059, 1108, 1128, 1177, 1197, 1246, 1266, 1315, 1335, 1384, + 1404, 1453, 1473, 8, -12, 188, 142, 1726, 1700, 694, + -2, 645, 12, 196, nil, nil, 487, 63, 11, nil, + nil, 82, 126, nil, 116, 60, 158, 138, nil, 1648, + 1882, 154, 1934, 1960, 195, 2012, 2038, 106, 2064, 175, + 2090, 317, 2116, 386, 2142, 455, 2168, 524, 1986, 2194, + 1908, 1778, 141, 207, 369, 418, nil, 74, nil, 1856, + nil, 39, 14, 576, nil, 152, 70, 101, nil, nil, + 1556, 5, 18, 1674, 1752, nil, nil, nil, 1830, -7, + nil, nil, 625, nil, nil, 349, -9, nil, 1620, 69, + nil, 90, nil ] racc_action_default = [ - -56, -24, -12, -59, -13, -56, -14, -84, -56, -15, - -2, -57, -16, -3, -84, -56, -76, -84, -56, -19, - -7, -20, -8, -69, -56, -21, -9, -56, -22, -17, - -10, -23, -18, -11, -84, -84, -29, -5, -56, -56, + -56, -25, -12, -59, -13, -56, -14, -85, -56, -15, + -2, -57, -16, -3, -85, -17, -56, -76, -56, -20, + -7, -85, -21, -8, -69, -56, -22, -9, -56, -23, + -18, -10, -56, -24, -19, -11, -85, -85, -30, -5, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -84, -84, -6, -77, -84, -56, -84, -27, -56, - -84, -84, -60, -63, -76, -84, -70, -69, -84, -65, - -30, -61, -28, -56, -56, 150, -4, -43, -32, -52, - -44, -33, -53, -45, -34, -46, -35, -47, -36, -48, - -37, -49, -38, -50, -39, -51, -40, -41, -42, -31, - -76, -56, -56, -75, -84, -54, -58, -25, -62, -84, - -84, -56, -84, -66, -84, -84, -67, -84, -84, -84, - -79, -78, -55, -64, -73, -26, -84, -72, -71, -56, - -80, -81, -5, -74, -68, -84, -56, -82, -84, -83 ] + -56, -56, -56, -85, -85, -6, -85, -77, -28, -56, + -85, -56, -85, -85, -60, -63, -76, -85, -69, -70, + -65, -85, -31, -61, -29, -85, -56, -56, 153, -4, + -44, -33, -53, -45, -34, -54, -46, -35, -47, -36, + -48, -37, -49, -38, -50, -39, -51, -40, -52, -41, + -42, -43, -32, -76, -56, -56, -75, -85, -58, -26, + -62, -85, -85, -56, -66, -85, -85, -85, -67, -84, + -85, -85, -85, -79, -78, -55, -64, -73, -27, -85, + -72, -71, -56, -80, -81, -5, -74, -68, -85, -56, + -82, -85, -83 ] racc_goto_table = [ - 10, 37, 65, 78, 81, 137, 138, 61, 62, 119, - 7, nil, nil, nil, 77, 63, nil, 137, nil, nil, - nil, nil, nil, nil, nil, 84, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 37, nil, 111, 122, nil, nil, - 120, nil, nil, nil, nil, nil, 114, nil, nil, 124, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 128, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 129, nil, nil, nil, - nil, nil, nil, nil, nil, 37, nil, nil, nil, nil, - nil, 111, nil, 136, nil, 34, nil, nil, 36, 142, - 111, nil, nil, nil, nil, nil, 64, nil, 68, nil, - nil, nil, nil, nil, 80, nil, nil, 82, nil, 37, - nil, nil, nil, nil, nil, nil, 148, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, nil, nil, nil, nil, nil, 115, nil, nil, 117, - nil, nil, nil, nil, 64, nil, nil, nil, nil, nil, - nil, nil, nil, 127, nil, nil, nil, nil, nil, nil, + 10, 39, 66, 83, 81, 140, 141, 63, 64, 121, + 7, nil, nil, nil, nil, 78, 65, nil, 140, nil, + nil, nil, nil, nil, nil, nil, nil, 87, nil, nil, + nil, nil, 85, nil, nil, nil, nil, nil, nil, nil, + 83, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 39, 114, 125, nil, + nil, 122, nil, nil, nil, nil, nil, nil, nil, 117, + nil, nil, 126, nil, nil, nil, 39, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 131, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 132, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 39, nil, + nil, nil, nil, 114, nil, nil, 139, 36, nil, nil, + 38, nil, 145, 114, nil, nil, nil, nil, nil, 67, + 68, nil, nil, nil, nil, nil, nil, 82, nil, nil, + 84, nil, 39, nil, nil, nil, nil, nil, nil, 151, + nil, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, nil, nil, nil, nil, nil, + nil, nil, nil, 119, nil, nil, nil, nil, 67, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 130, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 64, 130, 131, nil, nil, nil, nil, nil, nil, nil, - nil, 135, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 145, - nil, nil, 86 ] + nil, nil, nil, nil, nil, 67, 133, 134, nil, nil, + nil, nil, nil, nil, nil, 138, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 148, nil, nil, 89 ] racc_goto_check = [ - 2, 4, 20, 19, 17, 15, 15, 6, 7, 5, - 1, nil, nil, nil, 4, 2, nil, 15, nil, nil, - nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 4, nil, 4, 19, nil, nil, - 20, nil, nil, nil, nil, nil, 2, nil, nil, 4, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 2, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 20, nil, nil, nil, - nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, - nil, 4, nil, 4, nil, 3, nil, nil, 3, 4, - 4, nil, nil, nil, nil, nil, 3, nil, 3, nil, - nil, nil, nil, nil, 3, nil, nil, 3, nil, 4, - nil, nil, nil, nil, nil, nil, 2, 3, 3, 3, + 2, 4, 21, 18, 20, 16, 16, 6, 7, 5, + 1, nil, nil, nil, nil, 4, 2, nil, 16, nil, + nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, + nil, nil, 2, nil, nil, nil, nil, nil, nil, nil, + 18, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 4, 4, 20, nil, + nil, 21, nil, nil, nil, nil, nil, nil, nil, 2, + nil, nil, 4, nil, nil, nil, 4, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 2, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 21, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, + nil, nil, nil, 4, nil, nil, 4, 3, nil, nil, + 3, nil, 4, 4, nil, nil, nil, nil, nil, 3, + 3, nil, nil, nil, nil, nil, nil, 3, nil, nil, + 3, nil, 4, nil, nil, nil, nil, nil, nil, 2, + nil, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, nil, nil, nil, nil, nil, 3, nil, nil, 3, - nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, - nil, nil, nil, 3, nil, nil, nil, nil, nil, nil, + 3, 3, 3, 3, 3, nil, nil, nil, nil, nil, + nil, nil, 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, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 3, 3, 3, nil, nil, nil, nil, nil, nil, nil, - nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 3, - nil, nil, 3 ] + nil, nil, nil, nil, nil, 3, 3, 3, nil, nil, + nil, nil, nil, nil, nil, 3, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 3, nil, nil, 3 ] racc_goto_pointer = [ - nil, 10, 0, 110, -9, -62, -7, -6, nil, nil, - nil, nil, nil, nil, nil, -119, nil, -22, nil, -20, - -14 ] + nil, 10, 0, 112, -9, -64, -7, -6, nil, nil, + nil, nil, nil, nil, nil, nil, -121, nil, -24, nil, + -20, -15 ] racc_goto_default = [ - nil, nil, nil, 13, 15, 20, 22, 26, 30, 33, - 2, 4, 6, 9, 12, 76, 17, 72, 73, nil, - nil ] + nil, nil, nil, 13, 16, 20, 23, 27, 31, 35, + 2, 4, 6, 9, 12, 15, 79, 21, 74, 75, + nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, @@ -513,21 +318,21 @@ racc_reduce_table = [ 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, + 1, 59, :_reduce_none, 1, 60, :_reduce_none, 1, 60, :_reduce_none, - 1, 61, :_reduce_19, 1, 61, :_reduce_20, 1, 61, :_reduce_21, 1, 61, :_reduce_22, 1, 61, :_reduce_23, 1, 61, :_reduce_24, - 3, 64, :_reduce_25, - 3, 71, :_reduce_26, - 2, 70, :_reduce_27, - 2, 67, :_reduce_28, + 1, 61, :_reduce_25, + 3, 64, :_reduce_26, + 3, 72, :_reduce_27, + 2, 70, :_reduce_28, 2, 67, :_reduce_29, 2, 67, :_reduce_30, - 3, 67, :_reduce_31, + 2, 67, :_reduce_31, 3, 67, :_reduce_32, 3, 67, :_reduce_33, 3, 67, :_reduce_34, @@ -550,40 +355,41 @@ racc_reduce_table = [ 3, 67, :_reduce_51, 3, 67, :_reduce_52, 3, 67, :_reduce_53, - 3, 66, :_reduce_54, + 3, 67, :_reduce_54, 4, 66, :_reduce_55, - 0, 72, :_reduce_56, - 1, 72, :_reduce_57, - 3, 72, :_reduce_58, + 0, 73, :_reduce_56, + 1, 73, :_reduce_57, + 3, 73, :_reduce_58, 1, 62, :_reduce_59, 2, 62, :_reduce_60, 2, 62, :_reduce_61, - 2, 73, :_reduce_62, - 1, 73, :_reduce_63, - 3, 74, :_reduce_64, + 2, 74, :_reduce_62, + 1, 74, :_reduce_63, + 3, 75, :_reduce_64, 2, 65, :_reduce_65, 3, 65, :_reduce_66, 3, 65, :_reduce_67, 5, 65, :_reduce_68, - 0, 75, :_reduce_69, - 1, 75, :_reduce_70, - 3, 75, :_reduce_71, - 3, 75, :_reduce_72, + 0, 76, :_reduce_69, + 1, 76, :_reduce_70, + 3, 76, :_reduce_71, + 3, 76, :_reduce_72, 4, 63, :_reduce_73, 5, 63, :_reduce_74, 3, 68, :_reduce_75, - 0, 76, :_reduce_76, - 1, 76, :_reduce_77, - 3, 76, :_reduce_78, - 3, 76, :_reduce_79, + 0, 77, :_reduce_76, + 1, 77, :_reduce_77, + 3, 77, :_reduce_78, + 3, 77, :_reduce_79, 5, 69, :_reduce_80, 5, 69, :_reduce_81, 7, 69, :_reduce_82, - 8, 69, :_reduce_83 ] + 8, 69, :_reduce_83, + 3, 71, :_reduce_84 ] -racc_reduce_n = 84 +racc_reduce_n = 85 -racc_shift_n = 150 +racc_shift_n = 153 racc_token_table = { false => 0, @@ -735,6 +541,7 @@ Racc_token_to_s_table = [ "Array", "If", "Return", + "Parenthetical", "AssignObj", "ParamList", "Accessor", @@ -742,7 +549,7 @@ Racc_token_to_s_table = [ "AssignList", "ArgList" ] -Racc_debug_parser = false +Racc_debug_parser = true ##### State transition tables end ##### @@ -814,12 +621,7 @@ module_eval(<<'.,.,', 'grammar.y', 47) # reduce 18 omitted -module_eval(<<'.,.,', 'grammar.y', 72) - def _reduce_19(val, _values, result) - result = LiteralNode.new(val[0]) - result - end -.,., +# reduce 19 omitted module_eval(<<'.,.,', 'grammar.y', 73) def _reduce_20(val, _values, result) @@ -837,49 +639,49 @@ module_eval(<<'.,.,', 'grammar.y', 74) module_eval(<<'.,.,', 'grammar.y', 75) def _reduce_22(val, _values, result) - result = LiteralNode.new(true) + result = LiteralNode.new(val[0]) result end .,., module_eval(<<'.,.,', 'grammar.y', 76) def _reduce_23(val, _values, result) - result = LiteralNode.new(false) + result = LiteralNode.new(true) result end .,., module_eval(<<'.,.,', 'grammar.y', 77) def _reduce_24(val, _values, result) + result = LiteralNode.new(false) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 78) + def _reduce_25(val, _values, result) result = LiteralNode.new(nil) result end .,., -module_eval(<<'.,.,', 'grammar.y', 82) - def _reduce_25(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 83) + def _reduce_26(val, _values, result) result = AssignNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 87) - def _reduce_26(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 88) + def _reduce_27(val, _values, result) result = AssignNode.new(val[0], val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 92) - def _reduce_27(val, _values, result) - result = ReturnNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 99) +module_eval(<<'.,.,', 'grammar.y', 93) def _reduce_28(val, _values, result) - result = OpNode.new(val[0], val[1]) + result = ReturnNode.new(val[1]) result end .,., @@ -898,9 +700,9 @@ module_eval(<<'.,.,', 'grammar.y', 101) end .,., -module_eval(<<'.,.,', 'grammar.y', 104) +module_eval(<<'.,.,', 'grammar.y', 102) def _reduce_31(val, _values, result) - result = OpNode.new(val[1], val[0], val[2]) + result = OpNode.new(val[0], val[1]) result end .,., @@ -919,7 +721,7 @@ module_eval(<<'.,.,', 'grammar.y', 106) end .,., -module_eval(<<'.,.,', 'grammar.y', 108) +module_eval(<<'.,.,', 'grammar.y', 107) def _reduce_34(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -933,7 +735,7 @@ module_eval(<<'.,.,', 'grammar.y', 109) end .,., -module_eval(<<'.,.,', 'grammar.y', 111) +module_eval(<<'.,.,', 'grammar.y', 110) def _reduce_36(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -961,7 +763,7 @@ module_eval(<<'.,.,', 'grammar.y', 114) end .,., -module_eval(<<'.,.,', 'grammar.y', 116) +module_eval(<<'.,.,', 'grammar.y', 115) def _reduce_40(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -989,7 +791,7 @@ module_eval(<<'.,.,', 'grammar.y', 119) end .,., -module_eval(<<'.,.,', 'grammar.y', 121) +module_eval(<<'.,.,', 'grammar.y', 120) def _reduce_44(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1017,7 +819,7 @@ module_eval(<<'.,.,', 'grammar.y', 124) end .,., -module_eval(<<'.,.,', 'grammar.y', 126) +module_eval(<<'.,.,', 'grammar.y', 125) def _reduce_48(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result @@ -1059,9 +861,9 @@ module_eval(<<'.,.,', 'grammar.y', 131) end .,., -module_eval(<<'.,.,', 'grammar.y', 137) +module_eval(<<'.,.,', 'grammar.y', 132) def _reduce_54(val, _values, result) - result = CodeNode.new(val[0], val[2]) + result = OpNode.new(val[1], val[0], val[2]) result end .,., @@ -1269,6 +1071,13 @@ module_eval(<<'.,.,', 'grammar.y', 206) end .,., +module_eval(<<'.,.,', 'grammar.y', 210) + def _reduce_84(val, _values, result) + result = ParentheticalNode.new(val[1]) + result + end +.,., + def _reduce_none(val, _values, result) val[0] end diff --git a/parser_test.rb b/parser_test.rb index c3832249..66b0576a 100644 --- a/parser_test.rb +++ b/parser_test.rb @@ -1,6 +1,6 @@ # Recompile the Parser. # With debugging and verbose: -v -g -`racc -o parser.rb grammar.y` +`racc -g -o parser.rb grammar.y` # Parse and print "code.jaa". require "parser.rb"