From 792fd359bd2edf2299985a9f28115dd163940e55 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Fri, 1 Jan 2010 11:19:57 -0500 Subject: [PATCH] fixing precedence order, so that you can nest range comprehensions --- lib/coffee_script/grammar.y | 3 +- lib/coffee_script/nodes.rb | 9 +- lib/coffee_script/parser.rb | 767 +++++++++--------- .../test_nested_comprehensions.coffee | 11 + 4 files changed, 401 insertions(+), 389 deletions(-) create mode 100644 test/fixtures/execution/test_nested_comprehensions.coffee diff --git a/lib/coffee_script/grammar.y b/lib/coffee_script/grammar.y index 8bf0ad07..30351fda 100644 --- a/lib/coffee_script/grammar.y +++ b/lib/coffee_script/grammar.y @@ -32,7 +32,8 @@ prechigh left '.' right INDENT left OUTDENT - right THROW FOR IN WHILE WHEN NEW SUPER ELSE + right WHEN IN + right THROW FOR WHILE NEW SUPER ELSE left UNLESS EXTENDS IF left ASSIGN '||=' '&&=' right RETURN '=>' diff --git a/lib/coffee_script/nodes.rb b/lib/coffee_script/nodes.rb index 7d6280da..14b72820 100644 --- a/lib/coffee_script/nodes.rb +++ b/lib/coffee_script/nodes.rb @@ -360,10 +360,11 @@ module CoffeeScript write("#{idt}#{@from_var} = #{from_val};\n#{idt}#{@to_var} = #{to_val};\n#{idt}") end - def compile(o, fv) - vars = "#{fv}=#{@from_var}" - compare = "(#{@from_var} <= #{@to_var} ? #{fv} #{less_operator} #{@to_var} : #{fv} #{greater_operator} #{@to_var})" - incr = "(#{@from_var} <= #{@to_var} ? #{fv} += 1 : #{fv} -= 1)" + def compile(o, idx=nil) + raise SyntaxError, "unexpected range literal" unless idx + vars = "#{idx}=#{@from_var}" + compare = "(#{@from_var} <= #{@to_var} ? #{idx} #{less_operator} #{@to_var} : #{idx} #{greater_operator} #{@to_var})" + incr = "(#{@from_var} <= #{@to_var} ? #{idx} += 1 : #{idx} -= 1)" write("#{vars}; #{compare}; #{incr}") end diff --git a/lib/coffee_script/parser.rb b/lib/coffee_script/parser.rb index 2dbc07da..1b3814c0 100644 --- a/lib/coffee_script/parser.rb +++ b/lib/coffee_script/parser.rb @@ -10,7 +10,7 @@ module CoffeeScript class Parser < Racc::Parser -module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 404) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 405) # Lex and parse a CoffeeScript. def parse(code) # Uncomment the following line to enable grammar debugging, in combination @@ -41,12 +41,12 @@ clist = [ '114,45,7,54,228,17,21,26,32,35,41,48,51,53,56,108,114,64,66,1,4,108', '64,13,19,23,28,152,37,40,243,49,142,57,59,260,144,68,3,124,139,108,142', '15,25,30,34,39,43,47,139,142,142,58,207,82,87,-161,-161,139,139,115', -'115,68,239,127,109,115,115,238,115,109,127,68,109,141,108,22,27,224', +'115,68,239,127,109,115,115,238,115,127,109,68,109,141,108,22,27,224', '251,18,68,68,211,36,115,45,7,54,127,17,21,26,32,35,41,48,51,53,56,215', '114,64,66,1,4,-161,-161,13,19,23,28,215,37,40,215,49,157,57,59,108,113', '68,3,-161,-161,22,27,15,25,30,34,39,43,47,197,195,157,58,-161,-161,230', -'22,27,216,82,87,-161,-161,227,262,-161,-161,225,22,27,216,22,27,216', -'22,27,246,124,112,241,18,82,87,108,36,115,45,7,54,109,17,21,26,32,35', +'22,27,216,82,87,-161,-161,227,241,-161,-161,225,22,27,216,22,27,216', +'22,27,262,124,112,246,18,82,87,108,36,115,45,7,54,109,17,21,26,32,35', '41,48,51,53,56,215,211,64,66,1,4,210,108,13,19,23,28,282,37,40,,49,142', '57,59,271,,68,3,,139,,,15,25,30,34,39,43,47,,,,58,,,,22,27,216,,217', '253,68,,141,,,,68,,,272,82,87,90,93,96,99,102,,18,,,,36,,45,7,54,,17', @@ -216,17 +216,17 @@ clist = [ '106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100', '104,219,,76,79,75,,83,,,242,,,145,,45,,54,,,,,,,,,,,,84,,,,,,103,,,', ',,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101', -'105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,,,280,17,21,26', +'105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,,,277,17,21,26', '32,35,41,48,51,53,56,,,144,,,,,,84,19,23,,,,103,,,,,,,,,3,,,,,,82,87', '90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85', -'88,91,94,97,100,104,,,76,79,75,,83,,,277,,145,,45,,54,,,,,,,,,,,,,84', -',,,,,103,,,,,,,108,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89', -'92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,', -',,,,,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102', -'106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100', -'104,,,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82', -'87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80', -'85,88,91,94,97,100,104,,,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103', +'88,91,94,97,100,104,,,76,79,75,,83,,,280,,145,,45,,54,,,,,,,,,,,,,84', +',,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92', +'95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,,,,', +',,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106', +'72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104', +',,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87', +'90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85', +'88,91,94,97,100,104,,,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103', ',,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101', '105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,,,,,,,,,,,,,,', ',,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78', @@ -254,9 +254,9 @@ clist = [ '95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,,,76,79,75,,83,,,,', ',,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106', '72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104', -',,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87', -'90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85', -'88,91,94,97,100,104,,,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103', +',,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103,,,,,,,108,,,,,,,,82', +'87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80', +'85,88,91,94,97,100,104,,,76,79,75,,83,,,,,,,,,,,,,,,,,,,,,,84,,,,,,103', ',,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101', '105,71,73,77,80,85,88,91,94,97,100,104,75,,83,,,,,,,,,,,,,,,,,,,,,,84', ',,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92', @@ -264,27 +264,27 @@ clist = [ ',,,,,,,,,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78', '81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,84,,,,', ',103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95', -'98,101,105,71,73,77,80,85,88,91,94,97,100,104,84,,,,265,,103,,,,,,,', -',,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105', -'71,73,77,80,85,88,91,94,97,100,104,84,,,,,,103,,,,,,,,,,,,,,,82,87,90', -'93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88', -'91,94,97,100,104,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106', -'72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104', -'84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89', -'92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,103,,,,,,,,,,,,', -',,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73', -'77,80,85,88,91,94,97,100,104,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102', -'106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100', -'104,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92', -'95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,82,87,90,93,96,99,102', -'106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100', -'104,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71', -'73,77,80,85,88,91,94,97,100,104,82,87,90,93,96,99,102,106,72,74,78,81', -'86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,82,87,90,93', +'98,101,105,71,73,77,80,85,88,91,94,97,100,104,84,,,,,,103,,,,,,,,,,', +',,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71', +'73,77,80,85,88,91,94,97,100,104,84,,,,,,103,,,,,,,,,,,,,,,82,87,90,93', '96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91', -'94,97,100,104,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101', -'105,71,73,77,80,85,88,91,94,97,100,104' ] - racc_action_table = arr = Array.new(8334, nil) +'94,97,100,104,265,,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74', +'78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,103', +',,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101', +'105,71,73,77,80,85,88,91,94,97,100,104,103,,,,,,,,,,,,,,,82,87,90,93', +'96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91', +'94,97,100,104,103,,,,,,,,,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81', +'86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,103,,,,,,', +',,,,,,,,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105', +'71,73,77,80,85,88,91,94,97,100,104,82,87,90,93,96,99,102,106,72,74,78', +'81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104,82,87,90', +'93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88', +'91,94,97,100,104,82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98', +'101,105,71,73,77,80,85,88,91,94,97,100,104,82,87,90,93,96,99,102,106', +'72,74,78,81,86,89,92,95,98,101,105,71,73,77,80,85,88,91,94,97,100,104', +'82,87,90,93,96,99,102,106,72,74,78,81,86,89,92,95,98,101,105,71,73,77', +'80,85,88,91,94,97,100,104' ] + racc_action_table = arr = Array.new(8324, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -298,143 +298,143 @@ clist = [ '138,129,129,221,138,113,113,148,190,190,190,190,190,148,187,187,187', '187,187,113,6,67,67,6,59,157,198,198,148,148,148,148,148,148,148,148', '148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148', -'148,148,148,148,148,143,159,148,148,157,212,146,158,113,203,113,93,113', -'148,93,93,93,93,93,93,93,93,93,93,238,31,93,93,93,93,239,118,93,93,93', -'93,61,93,93,210,93,223,93,93,226,207,93,93,28,223,18,141,93,93,93,93', -'93,93,93,141,224,258,93,118,181,181,136,136,224,258,143,159,223,197', -'143,159,146,158,196,203,146,158,141,203,141,195,226,226,226,219,93,224', -'258,173,93,31,93,268,93,31,268,268,268,268,268,268,268,268,268,268,229', -'5,268,268,268,268,134,134,268,268,268,268,213,268,268,200,268,63,268', -'268,4,5,268,268,150,150,224,224,268,268,268,268,268,268,268,107,107', -'154,268,126,126,152,229,229,229,178,178,123,123,142,229,121,121,139', -'213,213,213,200,200,200,278,278,213,84,5,200,268,184,184,271,268,5,268', -'265,268,5,265,265,265,265,265,265,265,265,265,265,130,125,265,265,265', -'265,124,117,265,265,265,265,279,265,265,,265,45,265,265,254,,265,265', -',45,,,265,265,265,265,265,265,265,,,,265,,,,130,130,130,,130,254,45', -',45,,,,254,,,254,194,194,194,194,194,194,194,,265,,,,265,,265,253,265', -',253,253,253,253,253,253,253,253,253,253,,,253,253,253,253,,,253,253', -'253,253,,253,253,,253,,253,253,,,253,253,,,,,253,253,253,253,253,253', -'253,,,,253,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176', -'176,176,176,176,176,176,,,,,,,253,,,,253,,253,251,253,,251,251,251,251', -'251,251,251,251,251,251,,,251,251,251,251,,,251,251,251,251,,251,251', -',251,,251,251,,,251,251,,,,,251,251,251,251,251,251,251,,,,251,189,189', -'189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189', -'189,189,,,251,,,,251,,,,251,,251,7,251,,7,7,7,7,7,7,7,7,7,7,,,7,7,7', -'7,,,7,7,7,7,,7,7,,7,,7,7,,,7,7,,,,,7,7,7,7,7,7,7,,,,7,174,174,174,174', +'148,148,148,148,148,31,146,148,148,157,212,143,159,113,203,113,93,113', +'148,93,93,93,93,93,93,93,93,93,93,238,158,93,93,93,93,239,118,93,93', +'93,93,61,93,93,210,93,223,93,93,226,207,93,93,28,223,18,141,93,93,93', +'93,93,93,93,141,224,258,93,118,181,181,136,136,224,258,31,146,223,197', +'31,146,143,159,196,203,143,159,141,203,141,195,226,226,226,219,93,224', +'258,173,93,158,93,268,93,158,268,268,268,268,268,268,268,268,268,268', +'200,5,268,268,268,268,134,134,268,268,268,268,229,268,268,213,268,63', +'268,268,4,5,268,268,150,150,224,224,268,268,268,268,268,268,268,107', +'107,154,268,126,126,152,200,200,200,178,178,123,123,142,200,121,121', +'139,229,229,229,213,213,213,278,278,229,84,5,213,268,184,184,271,268', +'5,268,265,268,5,265,265,265,265,265,265,265,265,265,265,130,125,265', +'265,265,265,124,117,265,265,265,265,279,265,265,,265,45,265,265,254', +',265,265,,45,,,265,265,265,265,265,265,265,,,,265,,,,130,130,130,,130', +'254,45,,45,,,,254,,,254,194,194,194,194,194,194,194,,265,,,,265,,265', +'253,265,,253,253,253,253,253,253,253,253,253,253,,,253,253,253,253,', +',253,253,253,253,,253,253,,253,,253,253,,,253,253,,,,,253,253,253,253', +'253,253,253,,,,253,176,176,176,176,176,176,176,176,176,176,176,176,176', +'176,176,176,176,176,176,176,176,,,,,,,253,,,,253,,253,251,253,,251,251', +'251,251,251,251,251,251,251,251,,,251,251,251,251,,,251,251,251,251', +',251,251,,251,,251,251,,,251,251,,,,,251,251,251,251,251,251,251,,,', +'251,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189', +'189,189,189,189,189,,,251,,,,251,,,,251,,251,7,251,,7,7,7,7,7,7,7,7', +'7,7,,,7,7,7,7,,,7,7,7,7,,7,7,,7,,7,7,,,7,7,,,,,7,7,7,7,7,7,7,,,,7,174', '174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174', -',,,,,,7,,,,7,,7,13,7,,13,13,13,13,13,13,13,13,13,13,,,13,13,13,13,,', -'13,13,13,13,,13,13,,13,,13,13,,,13,13,,,,,13,13,13,13,13,13,13,,,,13', -'163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163', -'163,163,163,163,,,,,,,13,,,,13,,13,15,13,,15,15,15,15,15,15,15,15,15', -'15,,,15,15,15,15,,,15,15,15,15,,15,15,,15,,15,15,,,15,15,,,,,15,15,15', -'15,15,15,15,,,,15,170,170,170,170,170,170,170,170,170,170,170,170,170', -'170,170,170,170,170,170,170,170,,,,,,,15,,,,15,,15,250,15,,250,250,250', -'250,250,250,250,250,250,250,,,250,250,250,250,,,250,250,250,250,,250', -'250,,250,,250,250,,,250,250,,,,,250,250,250,250,250,250,250,,,,250,167', -'167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167', -'167,167,167,,,,,,,250,,,,250,,250,25,250,,25,25,25,25,25,25,25,25,25', -'25,,,25,25,25,25,,,25,25,25,25,,25,25,,25,,25,25,,,25,25,,,,,25,25,25', -'25,25,25,25,,,,25,161,161,161,161,161,161,161,161,161,161,161,161,161', -'161,161,161,161,161,161,161,161,,,,,,,25,,,,25,,25,249,25,,249,249,249', -'249,249,249,249,249,249,249,,,249,249,249,249,,,249,249,249,249,,249', -'249,,249,,249,249,,,249,249,,,,,249,249,249,249,249,249,249,,,,249,193', -'193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193', -'193,193,193,,,,,,,249,,,,249,,249,30,249,,30,30,30,30,30,30,30,30,30', -'30,,,30,30,30,30,,,30,30,30,30,,30,30,,30,,30,30,,,30,30,,,,,30,30,30', -'30,30,30,30,,,,30,180,180,180,180,180,180,180,180,180,180,180,180,180', -'177,177,177,177,177,177,177,177,177,177,177,177,177,,30,,,,30,,30,227', -'30,,227,227,227,227,227,227,227,227,227,227,,,227,227,227,227,,,227', -'227,227,227,,227,227,,227,,227,227,,,227,227,,,,,227,227,227,227,227', -'227,227,,,,227,186,186,186,186,186,186,186,186,186,186,186,186,186,183', -'183,183,183,183,183,183,183,183,183,183,183,183,,227,,,,227,,227,34', -'227,,34,34,34,34,34,34,34,34,34,34,,,34,34,34,34,,,34,34,34,34,,34,34', -',34,,34,34,,,34,34,,,,,34,34,34,34,34,34,34,,,,34,175,175,175,175,175', -'175,175,175,175,175,168,168,168,168,168,168,168,168,168,168,164,164', -'164,164,164,164,164,34,,,,34,,34,36,34,,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,36,,,,36,36,36', -'36,36,36,36,,,,36,171,171,171,171,171,171,171,171,171,171,162,162,162', -'162,162,162,162,,,,,,,,,,,36,,,,36,,36,37,36,,37,37,37,37,37,37,37,37', -'37,37,,,37,37,37,37,,,37,37,37,37,,37,37,,37,,37,37,,,37,37,,,,,37,37', -'37,37,37,37,37,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,37,,37,39,37,', -'39,39,39,39,39,39,39,39,39,39,,,39,39,39,39,,,39,39,39,39,,39,39,,39', -',39,39,,,39,39,,,,,39,39,39,39,39,39,39,,,,39,,,,,,,,,,,,,,,,,,,,,,', -',,,,,39,,,,39,,39,40,39,,40,40,40,40,40,40,40,40,40,40,,,40,40,40,40', -',,40,40,40,40,,40,40,,40,,40,40,,,40,40,,,,,40,40,40,40,40,40,40,,,', -'40,,,,,,,,,,,,,,,,,,,,,,,,,,,,40,,,,40,,40,43,40,,43,43,43,43,43,43', -'43,43,43,43,,,43,43,43,43,,,43,43,43,43,,43,43,,43,,43,43,,,43,43,,', -',,43,43,43,43,43,43,43,,,,43,,,,,,,,,,,,,,,,,,,,,,,,,,,,43,,,,43,,43', -'225,43,,225,225,225,225,225,225,225,225,225,225,,,225,225,225,225,,', -'225,225,225,225,,225,225,,225,,225,225,,,225,225,,,,,225,225,225,225', -'225,225,225,,,,225,,,,,,,,,,,,,,,,,,,,,,,,,,,,225,,,,225,,225,216,225', -',216,216,216,216,216,216,216,216,216,216,,,216,216,216,216,,,216,216', -'216,216,,216,216,,216,,216,216,,,216,216,216,,,,216,216,216,216,216', -'216,216,,,,216,,,,,,,,,,,,,,,,,,,,,,,,,,,,216,216,216,,216,,216,49,216', -',49,49,49,49,49,49,49,49,49,49,,,49,49,49,49,,,49,49,49,49,,49,49,,49', -',49,49,,,49,49,,,,,49,49,49,49,49,49,49,,,,49,,,,,,,,,,,,,,,,,,,,,,', -',,,,,49,,,,49,,49,54,49,,54,54,54,54,54,54,54,54,54,54,,,54,54,54,54', -',,54,54,54,54,,54,54,,54,,54,54,,,54,54,,,,,54,54,54,54,54,54,54,,,', -'54,,,,,,,,,,,,,,,,,,,,,,,,,,,,54,,,,54,,54,57,54,,57,57,57,57,57,57', -'57,57,57,57,,,57,57,57,57,,,57,57,57,57,,57,57,,57,,57,57,,,57,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,58,,,58,58,58,58,,58', -'58,,58,,58,58,,,58,58,,,,,58,58,58,58,58,58,58,,,,58,,,,,,,,,,,,,,,', -',,,,,,,,,,,,58,,,,58,,58,214,58,,214,214,214,214,214,214,214,214,214', -'214,,,214,214,214,214,,,214,214,214,214,,214,214,,214,,214,214,,,214', -'214,,,,,214,214,214,214,214,214,214,,,,214,,,,,,,,,,,,,,,,,,,,,,,,,', -',,214,,,,214,,214,211,214,,211,211,211,211,211,211,211,211,211,211,', -',211,211,211,211,,,211,211,211,211,,211,211,,211,,211,211,,,211,211', -',,,,211,211,211,211,211,211,211,,,,211,,,,,,,,,,,,,,,,,,,,,,,,,,,,211', -',,,211,,211,160,211,,160,160,160,160,160,160,160,160,160,160,,,160,160', -'160,160,,,160,160,160,160,,160,160,,160,,160,160,,,160,160,,,,,160,160', -'160,160,160,160,160,,,,160,,,,,,,,,,,,,,,,,,,,,,,,,,,,160,,,,160,,160', -'151,160,,151,151,151,151,151,151,151,151,151,151,,,151,151,151,151,', -',151,151,151,151,,151,151,,151,,151,151,,,151,151,151,,,,151,151,151', -'151,151,151,151,,,,151,,,,,,,,,,,,,,,,,,,,,,,,,,,,151,,,,151,,151,0', -'151,,0,0,0,0,0,0,0,0,0,0,,,0,0,0,0,,,0,0,0,0,,0,0,,0,,0,0,,,0,0,,,,', -'0,0,0,0,0,0,0,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,,0,,0,145,0,,145', -'145,145,145,145,145,145,145,145,145,,,145,145,145,145,,,145,145,145', -'145,,145,145,,145,,145,145,,,145,145,145,,,,145,145,145,145,145,145', -'145,,,,145,,,,,,,,,,,,,,,,,,,,,,,,,,,,145,,,,145,,145,71,145,,71,71', -'71,71,71,71,71,71,71,71,,,71,71,71,71,,,71,71,71,71,,71,71,,71,,71,71', -',,71,71,,,,,71,71,71,71,71,71,71,,,,71,,,,,,,,,,,,,,,,,,,,,,,,,,,,71', -',,,71,,71,72,71,,72,72,72,72,72,72,72,72,72,72,,,72,72,72,72,,,72,72', -'72,72,,72,72,,72,,72,72,,,72,72,,,,,72,72,72,72,72,72,72,,,,72,,,,,', -',,,,,,,,,,,,,,,,,,,,,,72,,,,72,,72,73,72,,73,73,73,73,73,73,73,73,73', -'73,,,73,73,73,73,,,73,73,73,73,,73,73,,73,,73,73,,,73,73,,,,,73,73,73', -'73,73,73,73,,,,73,,,,,,,,,,,,,,,,,,,,,,,,,,,,73,,,,73,,73,74,73,,74', -'74,74,74,74,74,74,74,74,74,,,74,74,74,74,,,74,74,74,74,,74,74,,74,,74', -'74,,,74,74,,,,,74,74,74,74,74,74,74,,,,74,,,,,,,,,,,,,,,,,,,,,,,,,,', -',74,,,,74,,74,75,74,,75,75,75,75,75,75,75,75,75,75,,,75,75,75,75,,,75', -'75,75,75,,75,75,,75,,75,75,,,75,75,,,,,75,75,75,75,75,75,75,,,,75,,', -',,,,,,,,,,,,,,,,,,,,,,,,,75,,,,75,,75,76,75,,76,76,76,76,76,76,76,76', -'76,76,,,76,76,76,76,,,76,76,76,76,,76,76,,76,,76,76,,,76,76,,,,,76,76', -'76,76,76,76,76,,,,76,,,,,,,,,,,,,,,,,,,,,,,,,,,,76,,,,76,,76,77,76,', -'77,77,77,77,77,77,77,77,77,77,,,77,77,77,77,,,77,77,77,77,,77,77,,77', -',77,77,,,77,77,,,,,77,77,77,77,77,77,77,,,,77,,,,,,,,,,,,,,,,,,,,,,', -',,,,,77,,,,77,,77,78,77,,78,78,78,78,78,78,78,78,78,78,,,78,78,78,78', -',,78,78,78,78,,78,78,,78,,78,78,,,78,78,,,,,78,78,78,78,78,78,78,,,', -'78,,,,,,,,,,,,,,,,,,,,,,,,,,,,78,,,,78,,78,79,78,,79,79,79,79,79,79', -'79,79,79,79,,,79,79,79,79,,,79,79,79,79,,79,79,,79,,79,79,,,79,79,,', -',,79,79,79,79,79,79,79,,,,79,,,,,,,,,,,,,,,,,,,,,,,,,,,,79,,,,79,,79', -'80,79,,80,80,80,80,80,80,80,80,80,80,,,80,80,80,80,,,80,80,80,80,,80', -'80,,80,,80,80,,,80,80,,,,,80,80,80,80,80,80,80,,,,80,,,,,,,,,,,,,,,', -',,,,,,,,,,,,80,,,,80,,80,81,80,,81,81,81,81,81,81,81,81,81,81,,,81,81', -'81,81,,,81,81,81,81,,81,81,,81,,81,81,,,81,81,,,,,81,81,81,81,81,81', -'81,,,,81,,,,,,,,,,,,,,,,,,,,,,,,,,,,81,,,,81,,81,83,81,,83,83,83,83', -'83,83,83,83,83,83,,,83,83,83,83,,,83,83,83,83,,83,83,,83,,83,83,,,83', -'83,,,,,83,83,83,83,83,83,83,,,,83,,,,,,,,,,,,,,,,,,,,,,,,,,,,83,,,,83', -',83,131,83,,131,131,131,131,131,131,131,131,131,131,,,131,131,131,131', -',,131,131,131,131,,131,131,,131,,131,131,,,131,131,,,,,131,131,131,131', -'131,131,131,,,,131,,,,,,,,,,,,,,,,,,,,,,,,,,,,131,,,,131,,131,85,131', -',85,85,85,85,85,85,85,85,85,85,,,85,85,85,85,,,85,85,85,85,,85,85,,85', -',85,85,,,85,85,,,,,85,85,85,85,85,85,85,,,,85,,,,,,,,,,,,,,,,,,,,,,', -',,,,,85,,,,85,,85,86,85,,86,86,86,86,86,86,86,86,86,86,,,86,86,86,86', -',,86,86,86,86,,86,86,,86,,86,86,,,86,86,,,,,86,86,86,86,86,86,86,,,', -'86,,,,,,,,,,,,,,,,,,,,,,,,,,,,86,,,,86,,86,88,86,,88,88,88,88,88,88', -'88,88,88,88,,,88,88,88,88,,,88,88,88,88,,88,88,,88,,88,88,,,88,88,,', -',,88,88,88,88,88,88,88,,,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,88,,,,88,,88', -'115,88,,115,115,115,115,115,115,115,115,115,115,,,115,115,115,115,,', -'115,115,115,115,,115,115,,115,,115,115,,,115,115,,,,,115,115,115,115', +'174,174,174,,,,,,,7,,,,7,,7,13,7,,13,13,13,13,13,13,13,13,13,13,,,13', +'13,13,13,,,13,13,13,13,,13,13,,13,,13,13,,,13,13,,,,,13,13,13,13,13', +'13,13,,,,13,163,163,163,163,163,163,163,163,163,163,163,163,163,163', +'163,163,163,163,163,163,163,,,,,,,13,,,,13,,13,15,13,,15,15,15,15,15', +'15,15,15,15,15,,,15,15,15,15,,,15,15,15,15,,15,15,,15,,15,15,,,15,15', +',,,,15,15,15,15,15,15,15,,,,15,170,170,170,170,170,170,170,170,170,170', +'170,170,170,170,170,170,170,170,170,170,170,,,,,,,15,,,,15,,15,250,15', +',250,250,250,250,250,250,250,250,250,250,,,250,250,250,250,,,250,250', +'250,250,,250,250,,250,,250,250,,,250,250,,,,,250,250,250,250,250,250', +'250,,,,250,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167', +'167,167,167,167,167,167,,,,,,,250,,,,250,,250,25,250,,25,25,25,25,25', +'25,25,25,25,25,,,25,25,25,25,,,25,25,25,25,,25,25,,25,,25,25,,,25,25', +',,,,25,25,25,25,25,25,25,,,,25,161,161,161,161,161,161,161,161,161,161', +'161,161,161,161,161,161,161,161,161,161,161,,,,,,,25,,,,25,,25,249,25', +',249,249,249,249,249,249,249,249,249,249,,,249,249,249,249,,,249,249', +'249,249,,249,249,,249,,249,249,,,249,249,,,,,249,249,249,249,249,249', +'249,,,,249,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193', +'193,193,193,193,193,193,,,,,,,249,,,,249,,249,30,249,,30,30,30,30,30', +'30,30,30,30,30,,,30,30,30,30,,,30,30,30,30,,30,30,,30,,30,30,,,30,30', +',,,,30,30,30,30,30,30,30,,,,30,180,180,180,180,180,180,180,180,180,180', +'180,180,180,177,177,177,177,177,177,177,177,177,177,177,177,177,,30', +',,,30,,30,227,30,,227,227,227,227,227,227,227,227,227,227,,,227,227', +'227,227,,,227,227,227,227,,227,227,,227,,227,227,,,227,227,,,,,227,227', +'227,227,227,227,227,,,,227,186,186,186,186,186,186,186,186,186,186,186', +'186,186,183,183,183,183,183,183,183,183,183,183,183,183,183,,227,,,', +'227,,227,34,227,,34,34,34,34,34,34,34,34,34,34,,,34,34,34,34,,,34,34', +'34,34,,34,34,,34,,34,34,,,34,34,,,,,34,34,34,34,34,34,34,,,,34,175,175', +'175,175,175,175,175,175,175,175,168,168,168,168,168,168,168,168,168', +'168,164,164,164,164,164,164,164,34,,,,34,,34,36,34,,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,36', +',,,36,36,36,36,36,36,36,,,,36,171,171,171,171,171,171,171,171,171,171', +'162,162,162,162,162,162,162,,,,,,,,,,,36,,,,36,,36,37,36,,37,37,37,37', +'37,37,37,37,37,37,,,37,37,37,37,,,37,37,37,37,,37,37,,37,,37,37,,,37', +'37,,,,,37,37,37,37,37,37,37,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,37', +',37,39,37,,39,39,39,39,39,39,39,39,39,39,,,39,39,39,39,,,39,39,39,39', +',39,39,,39,,39,39,,,39,39,,,,,39,39,39,39,39,39,39,,,,39,,,,,,,,,,,', +',,,,,,,,,,,,,,,,39,,,,39,,39,40,39,,40,40,40,40,40,40,40,40,40,40,,', +'40,40,40,40,,,40,40,40,40,,40,40,,40,,40,40,,,40,40,,,,,40,40,40,40', +'40,40,40,,,,40,,,,,,,,,,,,,,,,,,,,,,,,,,,,40,,,,40,,40,43,40,,43,43', +'43,43,43,43,43,43,43,43,,,43,43,43,43,,,43,43,43,43,,43,43,,43,,43,43', +',,43,43,,,,,43,43,43,43,43,43,43,,,,43,,,,,,,,,,,,,,,,,,,,,,,,,,,,43', +',,,43,,43,225,43,,225,225,225,225,225,225,225,225,225,225,,,225,225', +'225,225,,,225,225,225,225,,225,225,,225,,225,225,,,225,225,,,,,225,225', +'225,225,225,225,225,,,,225,,,,,,,,,,,,,,,,,,,,,,,,,,,,225,,,,225,,225', +'216,225,,216,216,216,216,216,216,216,216,216,216,,,216,216,216,216,', +',216,216,216,216,,216,216,,216,,216,216,,,216,216,216,,,,216,216,216', +'216,216,216,216,,,,216,,,,,,,,,,,,,,,,,,,,,,,,,,,,216,216,216,,216,', +'216,49,216,,49,49,49,49,49,49,49,49,49,49,,,49,49,49,49,,,49,49,49,49', +',49,49,,49,,49,49,,,49,49,,,,,49,49,49,49,49,49,49,,,,49,,,,,,,,,,,', +',,,,,,,,,,,,,,,,49,,,,49,,49,54,49,,54,54,54,54,54,54,54,54,54,54,,', +'54,54,54,54,,,54,54,54,54,,54,54,,54,,54,54,,,54,54,,,,,54,54,54,54', +'54,54,54,,,,54,,,,,,,,,,,,,,,,,,,,,,,,,,,,54,,,,54,,54,57,54,,57,57', +'57,57,57,57,57,57,57,57,,,57,57,57,57,,,57,57,57,57,,57,57,,57,,57,57', +',,57,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,58,,,58,58', +'58,58,,58,58,,58,,58,58,,,58,58,,,,,58,58,58,58,58,58,58,,,,58,,,,,', +',,,,,,,,,,,,,,,,,,,,,,58,,,,58,,58,214,58,,214,214,214,214,214,214,214', +'214,214,214,,,214,214,214,214,,,214,214,214,214,,214,214,,214,,214,214', +',,214,214,,,,,214,214,214,214,214,214,214,,,,214,,,,,,,,,,,,,,,,,,,', +',,,,,,,,214,,,,214,,214,211,214,,211,211,211,211,211,211,211,211,211', +'211,,,211,211,211,211,,,211,211,211,211,,211,211,,211,,211,211,,,211', +'211,,,,,211,211,211,211,211,211,211,,,,211,,,,,,,,,,,,,,,,,,,,,,,,,', +',,211,,,,211,,211,160,211,,160,160,160,160,160,160,160,160,160,160,', +',160,160,160,160,,,160,160,160,160,,160,160,,160,,160,160,,,160,160', +',,,,160,160,160,160,160,160,160,,,,160,,,,,,,,,,,,,,,,,,,,,,,,,,,,160', +',,,160,,160,151,160,,151,151,151,151,151,151,151,151,151,151,,,151,151', +'151,151,,,151,151,151,151,,151,151,,151,,151,151,,,151,151,151,,,,151', +'151,151,151,151,151,151,,,,151,,,,,,,,,,,,,,,,,,,,,,,,,,,,151,,,,151', +',151,0,151,,0,0,0,0,0,0,0,0,0,0,,,0,0,0,0,,,0,0,0,0,,0,0,,0,,0,0,,,0', +'0,,,,,0,0,0,0,0,0,0,,,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,0,,0,,0,145', +'0,,145,145,145,145,145,145,145,145,145,145,,,145,145,145,145,,,145,145', +'145,145,,145,145,,145,,145,145,,,145,145,145,,,,145,145,145,145,145', +'145,145,,,,145,,,,,,,,,,,,,,,,,,,,,,,,,,,,145,,,,145,,145,71,145,,71', +'71,71,71,71,71,71,71,71,71,,,71,71,71,71,,,71,71,71,71,,71,71,,71,,71', +'71,,,71,71,,,,,71,71,71,71,71,71,71,,,,71,,,,,,,,,,,,,,,,,,,,,,,,,,', +',71,,,,71,,71,72,71,,72,72,72,72,72,72,72,72,72,72,,,72,72,72,72,,,72', +'72,72,72,,72,72,,72,,72,72,,,72,72,,,,,72,72,72,72,72,72,72,,,,72,,', +',,,,,,,,,,,,,,,,,,,,,,,,,72,,,,72,,72,73,72,,73,73,73,73,73,73,73,73', +'73,73,,,73,73,73,73,,,73,73,73,73,,73,73,,73,,73,73,,,73,73,,,,,73,73', +'73,73,73,73,73,,,,73,,,,,,,,,,,,,,,,,,,,,,,,,,,,73,,,,73,,73,74,73,', +'74,74,74,74,74,74,74,74,74,74,,,74,74,74,74,,,74,74,74,74,,74,74,,74', +',74,74,,,74,74,,,,,74,74,74,74,74,74,74,,,,74,,,,,,,,,,,,,,,,,,,,,,', +',,,,,74,,,,74,,74,75,74,,75,75,75,75,75,75,75,75,75,75,,,75,75,75,75', +',,75,75,75,75,,75,75,,75,,75,75,,,75,75,,,,,75,75,75,75,75,75,75,,,', +'75,,,,,,,,,,,,,,,,,,,,,,,,,,,,75,,,,75,,75,76,75,,76,76,76,76,76,76', +'76,76,76,76,,,76,76,76,76,,,76,76,76,76,,76,76,,76,,76,76,,,76,76,,', +',,76,76,76,76,76,76,76,,,,76,,,,,,,,,,,,,,,,,,,,,,,,,,,,76,,,,76,,76', +'77,76,,77,77,77,77,77,77,77,77,77,77,,,77,77,77,77,,,77,77,77,77,,77', +'77,,77,,77,77,,,77,77,,,,,77,77,77,77,77,77,77,,,,77,,,,,,,,,,,,,,,', +',,,,,,,,,,,,77,,,,77,,77,78,77,,78,78,78,78,78,78,78,78,78,78,,,78,78', +'78,78,,,78,78,78,78,,78,78,,78,,78,78,,,78,78,,,,,78,78,78,78,78,78', +'78,,,,78,,,,,,,,,,,,,,,,,,,,,,,,,,,,78,,,,78,,78,79,78,,79,79,79,79', +'79,79,79,79,79,79,,,79,79,79,79,,,79,79,79,79,,79,79,,79,,79,79,,,79', +'79,,,,,79,79,79,79,79,79,79,,,,79,,,,,,,,,,,,,,,,,,,,,,,,,,,,79,,,,79', +',79,80,79,,80,80,80,80,80,80,80,80,80,80,,,80,80,80,80,,,80,80,80,80', +',80,80,,80,,80,80,,,80,80,,,,,80,80,80,80,80,80,80,,,,80,,,,,,,,,,,', +',,,,,,,,,,,,,,,,80,,,,80,,80,81,80,,81,81,81,81,81,81,81,81,81,81,,', +'81,81,81,81,,,81,81,81,81,,81,81,,81,,81,81,,,81,81,,,,,81,81,81,81', +'81,81,81,,,,81,,,,,,,,,,,,,,,,,,,,,,,,,,,,81,,,,81,,81,83,81,,83,83', +'83,83,83,83,83,83,83,83,,,83,83,83,83,,,83,83,83,83,,83,83,,83,,83,83', +',,83,83,,,,,83,83,83,83,83,83,83,,,,83,,,,,,,,,,,,,,,,,,,,,,,,,,,,83', +',,,83,,83,131,83,,131,131,131,131,131,131,131,131,131,131,,,131,131', +'131,131,,,131,131,131,131,,131,131,,131,,131,131,,,131,131,,,,,131,131', +'131,131,131,131,131,,,,131,,,,,,,,,,,,,,,,,,,,,,,,,,,,131,,,,131,,131', +'85,131,,85,85,85,85,85,85,85,85,85,85,,,85,85,85,85,,,85,85,85,85,,85', +'85,,85,,85,85,,,85,85,,,,,85,85,85,85,85,85,85,,,,85,,,,,,,,,,,,,,,', +',,,,,,,,,,,,85,,,,85,,85,86,85,,86,86,86,86,86,86,86,86,86,86,,,86,86', +'86,86,,,86,86,86,86,,86,86,,86,,86,86,,,86,86,,,,,86,86,86,86,86,86', +'86,,,,86,,,,,,,,,,,,,,,,,,,,,,,,,,,,86,,,,86,,86,88,86,,88,88,88,88', +'88,88,88,88,88,88,,,88,88,88,88,,,88,88,88,88,,88,88,,88,,88,88,,,88', +'88,,,,,88,88,88,88,88,88,88,,,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,88,,,,88', +',88,115,88,,115,115,115,115,115,115,115,115,115,115,,,115,115,115,115', +',,115,115,115,115,,115,115,,115,,115,115,,,115,115,,,,,115,115,115,115', '115,115,115,,,,115,,,,,,,,,,,,,,,,,,,,,,,,,,,,115,,,,115,,115,90,115', ',90,90,90,90,90,90,90,90,90,90,,,90,90,90,90,,,90,90,90,90,,90,90,,90', ',90,90,,,90,90,,,,,90,90,90,90,90,90,90,,,,90,,,,,,,,,,,,,,,,,,,,,,', @@ -495,43 +495,43 @@ clist = [ '89,,,89,89,,,,,89,89,89,89,89,89,89,205,,205,89,,,,66,66,66,66,66,66', '66,66,66,66,,,,,,,,205,,66,66,,,205,89,,,,89,,89,,89,66,,,,,205,205', '205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205', -'205,205,205,205,205,205,205,205,205,205,205,205,,205,205,276,,276,,', -'205,,,66,,66,,66,,,,,,,,,,,,276,,,,,,276,,,,,,,,,,,,,,,276,276,276,276', -'276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276', -'276,276,276,276,276,276,276,276,276,,,276,276,269,,269,,,276,47,47,47', -'47,47,47,47,47,47,47,,,47,,,,,,269,47,47,,,,269,,,,,,,,,47,,,,,,269', +'205,205,205,205,205,205,205,205,205,205,205,205,,205,205,269,,269,,', +'205,,,66,,66,,66,,,,,,,,,,,,269,,,,,,269,,,,,,,,,,,,,,,269,269,269,269', '269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269', -'269,269,269,269,269,269,269,269,269,269,269,269,,,269,269,133,,133,', -',269,,47,,47,,47,,,,,,,,,,,,,133,,,,,,133,,,,,,,133,,,,,,,,133,133,133', -'133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133', -'133,133,133,133,133,133,133,133,133,133,,,133,133,201,,201,,,,,,,,,', +'269,269,269,269,269,269,269,269,269,,,269,269,276,,276,,,269,47,47,47', +'47,47,47,47,47,47,47,,,47,,,,,,276,47,47,,,,276,,,,,,,,,47,,,,,,276', +'276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276', +'276,276,276,276,276,276,276,276,276,276,276,276,,,276,276,235,,235,', +',276,,47,,47,,47,,,,,,,,,,,,,235,,,,,,235,,,,,,,,,,,,,,,235,235,235', +'235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235', +'235,235,235,235,235,235,235,235,235,235,,,235,235,201,,201,,,,,,,,,', ',,,,,,,,,,,,201,,,,,,201,,,,,,,,,,,,,,,201,201,201,201,201,201,201,201', '201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201', '201,201,201,201,201,,,201,201,248,,248,,,,,,,,,,,,,,,,,,,,,,248,,,,', ',248,,,,,,,,,,,,,,,248,248,248,248,248,248,248,248,248,248,248,248,248', '248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248', -',,248,248,261,,261,,,,,,,,,,,,,,,,,,,,,,261,,,,,,261,,,,,,,,,,,,,,,261', +',,248,248,259,,259,,,,,,,,,,,,,,,,,,,,,,259,,,,,,259,,,,,,,,,,,,,,,259', +'259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259', +'259,259,259,259,259,259,259,259,259,259,259,259,,,259,259,261,,261,', +',,,,,,,,,,,,,,,,,,,,261,,,,,,261,,,,,,,,,,,,,,,261,261,261,261,261,261', '261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261', -'261,261,261,261,261,261,261,261,261,261,261,261,,,261,261,266,,266,', -',,,,,,,,,,,,,,,,,,,,266,,,,,,266,,,,,,,,,,,,,,,266,266,266,266,266,266', -'266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266', -'266,266,266,266,266,266,266,,,266,266,218,,218,,,,,,,,,,,,,,,,,,,,,', +'261,261,261,261,261,261,261,,,261,261,218,,218,,,,,,,,,,,,,,,,,,,,,', '218,,,,,,218,,,,,,,,,,,,,,,218,218,218,218,218,218,218,218,218,218,218', '218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218', '218,218,,,218,218,119,,119,,,,,,,,,,,,,,,,,,,,,,119,,,,,,119,,,,,,,119', ',,,,,,,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119', -'119,119,119,119,119,119,119,119,119,119,119,119,119,119,,,119,119,267', -',267,,,,,,,,,,,,,,,,,,,,,,267,,,,,,267,,,,,,,,,,,,,,,267,267,267,267', -'267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267', -'267,267,267,267,267,267,267,267,267,,,267,267,270,,270,,,,,,,,,,,,,', +'119,119,119,119,119,119,119,119,119,119,119,119,119,119,,,119,119,266', +',266,,,,,,,,,,,,,,,,,,,,,,266,,,,,,266,,,,,,,,,,,,,,,266,266,266,266', +'266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266', +'266,266,266,266,266,266,266,266,266,,,266,266,270,,270,,,,,,,,,,,,,', ',,,,,,,,270,,,,,,270,,,,,,,270,,,,,,,,270,270,270,270,270,270,270,270', '270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270', '270,270,270,270,270,,,270,270,132,,132,,,,,,,,,,,,,,,,,,,,,,132,,,,', ',132,,,,,,,,,,,,,,,132,132,132,132,132,132,132,132,132,132,132,132,132', '132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132', -'132,,132,132,259,,259,,,,,,,,,,,,,,,,,,,,,,259,,,,,,259,,,,,,,,,,,,', -',,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259', -'259,259,259,259,259,259,259,259,259,259,259,259,259,,,259,259,247,,247', +'132,,132,132,267,,267,,,,,,,,,,,,,,,,,,,,,,267,,,,,,267,,,,,,,,,,,,', +',,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267', +'267,267,267,267,267,267,267,267,267,267,267,267,267,,,267,267,247,,247', ',,,,,,,,,,,,,,,,,,,,,247,,,,,,247,,,,,,,,,,,,,,,247,247,247,247,247', '247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247', '247,247,247,247,247,247,247,247,,,247,247,135,,135,,,,,,,,,,,,,,,,,', @@ -539,46 +539,45 @@ clist = [ '135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135', '135,135,135,135,,,135,135,70,,70,,,,,,,,,,,,,,,,,,,,,,70,,,,,,70,,,', ',,,,,,,,,,,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70', -'70,70,70,70,70,70,70,70,70,70,70,,,70,70,235,,235,,,,,,,,,,,,,,,,,,', -',,,235,,,,,,235,,,,,,,,,,,,,,,235,235,235,235,235,235,235,235,235,235', -'235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235', -'235,235,235,,,235,235,2,,2,,,,,,,,,,,,,,,,,,,,,,2,,,,,,2,,,,,,,,,,,', -',,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,,2,2', -'166,,166,,,,,,,,,,,,,,,,,,,,,,166,,,,,,166,,,,,,,,,,,,,,,166,166,166', -'166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166', -'166,166,166,166,166,166,166,166,166,166,202,,202,,,,,,,,,,,,,,,,,,,', -',,202,,,,,,202,,,,,,,,,,,,,,,202,202,202,202,202,202,202,202,202,202', +'70,70,70,70,70,70,70,70,70,70,70,,,70,70,2,,2,,,,,,,,,,,,,,,,,,,,,,2', +',,,,,2,,,,,,,,,,,,,,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2', +'2,2,2,2,2,2,,,2,2,133,,133,,,,,,,,,,,,,,,,,,,,,,133,,,,,,133,,,,,,,133', +',,,,,,,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133', +'133,133,133,133,133,133,133,133,133,133,133,133,133,133,,,133,133,169', +',169,,,,,,,,,,,,,,,,,,,,,,169,,,,,,169,,,,,,,,,,,,,,,169,169,169,169', +'169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169', +'169,169,169,169,169,169,169,169,169,202,,202,,,,,,,,,,,,,,,,,,,,,,202', +',,,,,202,,,,,,,,,,,,,,,202,202,202,202,202,202,202,202,202,202,202,202', '202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202', -'202,202,202,169,,169,,,,,,,,,,,,,,,,,,,,,,169,,,,,,169,,,,,,,,,,,,,', -',169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169', -'169,169,169,169,169,169,169,169,169,169,169,169,169,165,,,,,,165,,,', -',,,,,,,,,,,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165', -'165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,244,,,,244', -',244,,,,,,,,,,,,,,,244,244,244,244,244,244,244,244,244,244,244,244,244', +'202,166,,166,,,,,,,,,,,,,,,,,,,,,,166,,,,,,166,,,,,,,,,,,,,,,166,166', +'166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166', +'166,166,166,166,166,166,166,166,166,166,166,172,,,,,,172,,,,,,,,,,,', +',,,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172', +'172,172,172,172,172,172,172,172,172,172,172,172,172,120,,,,,,120,,,', +',,,,,,,,,,,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120', +'120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,165,,,,', +',165,,,,,,,,,,,,,,,165,165,165,165,165,165,165,165,165,165,165,165,165', +'165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165', +'244,,244,,,,,,,,,,,,,,,244,244,244,244,244,244,244,244,244,244,244,244', '244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244', -'275,,,,,,275,,,,,,,,,,,,,,,275,275,275,275,275,275,275,275,275,275,275', +'244,275,,,,,,,,,,,,,,,275,275,275,275,275,275,275,275,275,275,275,275', '275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275', -'275,275,120,,,,,,120,,,,,,,,,,,,,,,120,120,120,120,120,120,120,120,120', -'120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120', -'120,120,120,120,172,,,,,,172,,,,,,,,,,,,,,,172,172,172,172,172,172,172', -'172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172', -'172,172,172,172,172,172,147,,,,,,,,,,,,,,,147,147,147,147,147,147,147', -'147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147', -'147,147,147,147,147,147,191,,,,,,,,,,,,,,,191,191,191,191,191,191,191', -'191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191', -'191,191,191,191,191,191,149,,,,,,,,,,,,,,,149,149,149,149,149,149,149', +'275,149,,,,,,,,,,,,,,,149,149,149,149,149,149,149,149,149,149,149,149', '149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149', -'149,149,149,149,149,149,192,192,192,192,192,192,192,192,192,192,192', +'149,191,,,,,,,,,,,,,,,191,191,191,191,191,191,191,191,191,191,191,191', +'191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191', +'191,147,,,,,,,,,,,,,,,147,147,147,147,147,147,147,147,147,147,147,147', +'147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147', +'147,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182', +'182,182,182,182,182,182,182,182,182,182,182,182,182,182,192,192,192', '192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192', -'192,192,182,182,182,182,182,182,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,179', +'192,192,192,192,192,192,192,192,192,192,179,179,179,179,179,179,179', '179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179', -'179,179,179,179,179,179,179,179,179,179,179,185,185,185,185,185,185', +'179,179,179,179,179,179,185,185,185,185,185,185,185,185,185,185,185', '185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185', -'185,185,185,185,185,185,185,188,188,188,188,188,188,188,188,188,188', -'188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188', -'188,188,188' ] - racc_action_check = arr = Array.new(8334, nil) +'185,185,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188', +'188,188,188,188,188,188,188,188,188,188,188,188,188,188,188' ] + racc_action_check = arr = Array.new(8324, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -588,10 +587,10 @@ clist = [ end racc_action_pointer = [ - 2578, 4470, 7488, nil, 166, 171, -44, 514, nil, nil, + 2578, 4470, 7409, nil, 166, 171, -44, 514, nil, nil, nil, nil, nil, 600, nil, 686, nil, nil, 86, nil, nil, nil, nil, nil, nil, 858, nil, nil, 109, nil, - 1030, 85, nil, nil, 1202, nil, 1288, 1374, nil, 1460, + 1030, 60, nil, nil, 1202, nil, 1288, 1374, nil, 1460, 1546, nil, nil, 1632, nil, 282, nil, 6227, nil, 1890, nil, nil, nil, nil, 1976, nil, nil, 2062, 2148, -48, nil, 111, nil, 199, nil, nil, 6070, -44, nil, nil, @@ -600,22 +599,22 @@ racc_action_pointer = [ 4212, 4298, 4384, 84, 4556, 4642, 4728, 4814, 4900, 4986, 5072, 5158, 5244, 5330, 5416, 5502, 5588, 199, 5760, 5846, nil, nil, 5932, -2, 0, 4126, nil, 239, 89, 6777, - 7921, 189, nil, 185, 193, 245, 177, 5674, nil, -29, - 231, 3782, 7014, 6303, 144, 7251, 94, nil, -67, 160, - nil, 120, 156, 60, nil, 2664, 66, 8017, -2, 8107, - 162, 2492, 226, nil, 219, nil, nil, 40, 67, 61, - 2406, 865, 1305, 607, 1229, 7768, 7567, 779, 1219, 7717, - 693, 1295, 7972, 141, 521, 1209, 349, 1050, 183, 8197, - 1037, 92, 8167, 1136, 205, 8227, 1123, -16, 8257, 435, - -22, 8062, 8137, 951, 282, 121, 131, 134, -39, nil, - 160, 6382, 7642, 69, nil, 6066, nil, 103, nil, nil, - 100, 2320, 41, 157, 2234, nil, 1804, nil, 6698, 87, - nil, -17, nil, 110, 129, 1718, 79, 1116, nil, 145, - nil, nil, nil, nil, nil, 7409, nil, nil, 60, 66, - nil, nil, nil, nil, 7819, nil, nil, 7172, 6461, 944, - 772, 428, nil, 342, 288, nil, nil, nil, 130, 7093, - nil, 6540, nil, nil, nil, 256, 6619, 6856, 170, 6224, - 6935, 215, nil, nil, nil, 7870, 6145, nil, 163, 243, + 7819, 189, nil, 185, 193, 245, 177, 5674, nil, -29, + 231, 3782, 7014, 7488, 144, 7251, 94, nil, -67, 160, + nil, 120, 156, 66, nil, 2664, 61, 8097, -2, 8007, + 162, 2492, 226, nil, 219, nil, nil, 40, 85, 67, + 2406, 865, 1305, 607, 1229, 7870, 7717, 779, 1219, 7567, + 693, 1295, 7768, 141, 521, 1209, 349, 1050, 183, 8187, + 1037, 92, 8127, 1136, 205, 8217, 1123, -16, 8247, 435, + -22, 8052, 8157, 951, 282, 121, 131, 134, -39, nil, + 145, 6382, 7642, 69, nil, 6066, nil, 103, nil, nil, + 100, 2320, 41, 160, 2234, nil, 1804, nil, 6698, 87, + nil, -17, nil, 110, 129, 1718, 79, 1116, nil, 157, + nil, nil, nil, nil, nil, 6303, nil, nil, 60, 66, + nil, nil, nil, nil, 7917, nil, nil, 7172, 6461, 944, + 772, 428, nil, 342, 288, nil, nil, nil, 130, 6540, + nil, 6619, nil, nil, nil, 256, 6856, 7093, 170, 6145, + 6935, 215, nil, nil, nil, 7962, 6224, nil, 163, 243, nil, nil, nil ] racc_action_default = [ @@ -1149,42 +1148,42 @@ Racc_debug_parser = false # reduce 0 omitted -module_eval(<<'.,.,', 'grammar.y', 44) +module_eval(<<'.,.,', 'grammar.y', 45) def _reduce_1(val, _values, result) result = Expressions.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 45) +module_eval(<<'.,.,', 'grammar.y', 46) def _reduce_2(val, _values, result) result = Expressions.new([]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 46) +module_eval(<<'.,.,', 'grammar.y', 47) def _reduce_3(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 51) +module_eval(<<'.,.,', 'grammar.y', 52) def _reduce_4(val, _values, result) result = Expressions.new(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 52) +module_eval(<<'.,.,', 'grammar.y', 53) def _reduce_5(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 53) +module_eval(<<'.,.,', 'grammar.y', 54) def _reduce_6(val, _values, result) result = val[0] result @@ -1223,14 +1222,14 @@ module_eval(<<'.,.,', 'grammar.y', 53) # reduce 22 omitted -module_eval(<<'.,.,', 'grammar.y', 77) +module_eval(<<'.,.,', 'grammar.y', 78) def _reduce_23(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 78) +module_eval(<<'.,.,', 'grammar.y', 79) def _reduce_24(val, _values, result) result = Expressions.new([]) result @@ -1241,448 +1240,448 @@ module_eval(<<'.,.,', 'grammar.y', 78) # reduce 26 omitted -module_eval(<<'.,.,', 'grammar.y', 89) +module_eval(<<'.,.,', 'grammar.y', 90) def _reduce_27(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 90) +module_eval(<<'.,.,', 'grammar.y', 91) def _reduce_28(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 91) +module_eval(<<'.,.,', 'grammar.y', 92) def _reduce_29(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 92) +module_eval(<<'.,.,', 'grammar.y', 93) def _reduce_30(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 93) +module_eval(<<'.,.,', 'grammar.y', 94) def _reduce_31(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 94) +module_eval(<<'.,.,', 'grammar.y', 95) def _reduce_32(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 95) +module_eval(<<'.,.,', 'grammar.y', 96) def _reduce_33(val, _values, result) result = LiteralNode.new(true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 96) +module_eval(<<'.,.,', 'grammar.y', 97) def _reduce_34(val, _values, result) result = LiteralNode.new(false) result end .,., -module_eval(<<'.,.,', 'grammar.y', 97) +module_eval(<<'.,.,', 'grammar.y', 98) def _reduce_35(val, _values, result) result = LiteralNode.new(true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 98) +module_eval(<<'.,.,', 'grammar.y', 99) def _reduce_36(val, _values, result) result = LiteralNode.new(false) result end .,., -module_eval(<<'.,.,', 'grammar.y', 99) +module_eval(<<'.,.,', 'grammar.y', 100) def _reduce_37(val, _values, result) result = LiteralNode.new(true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 100) +module_eval(<<'.,.,', 'grammar.y', 101) def _reduce_38(val, _values, result) result = LiteralNode.new(false) result end .,., -module_eval(<<'.,.,', 'grammar.y', 105) +module_eval(<<'.,.,', 'grammar.y', 106) def _reduce_39(val, _values, result) result = AssignNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 110) +module_eval(<<'.,.,', 'grammar.y', 111) def _reduce_40(val, _values, result) result = AssignNode.new(ValueNode.new(val[0]), val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 111) +module_eval(<<'.,.,', 'grammar.y', 112) def _reduce_41(val, _values, result) result = AssignNode.new(ValueNode.new(LiteralNode.new(val[0])), val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 112) +module_eval(<<'.,.,', 'grammar.y', 113) def _reduce_42(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 117) +module_eval(<<'.,.,', 'grammar.y', 118) def _reduce_43(val, _values, result) result = ReturnNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 122) +module_eval(<<'.,.,', 'grammar.y', 123) def _reduce_44(val, _values, result) result = CommentNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 129) +module_eval(<<'.,.,', 'grammar.y', 130) def _reduce_45(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 130) +module_eval(<<'.,.,', 'grammar.y', 131) def _reduce_46(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 131) +module_eval(<<'.,.,', 'grammar.y', 132) def _reduce_47(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 132) +module_eval(<<'.,.,', 'grammar.y', 133) def _reduce_48(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 133) +module_eval(<<'.,.,', 'grammar.y', 134) def _reduce_49(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 134) +module_eval(<<'.,.,', 'grammar.y', 135) def _reduce_50(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 135) +module_eval(<<'.,.,', 'grammar.y', 136) def _reduce_51(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 136) +module_eval(<<'.,.,', 'grammar.y', 137) def _reduce_52(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 137) +module_eval(<<'.,.,', 'grammar.y', 138) def _reduce_53(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 138) +module_eval(<<'.,.,', 'grammar.y', 139) def _reduce_54(val, _values, result) result = OpNode.new(val[1], val[0], nil, true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 139) +module_eval(<<'.,.,', 'grammar.y', 140) def _reduce_55(val, _values, result) result = OpNode.new(val[1], val[0], nil, true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 141) +module_eval(<<'.,.,', 'grammar.y', 142) def _reduce_56(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 142) +module_eval(<<'.,.,', 'grammar.y', 143) def _reduce_57(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 143) +module_eval(<<'.,.,', 'grammar.y', 144) def _reduce_58(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 145) +module_eval(<<'.,.,', 'grammar.y', 146) def _reduce_59(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 146) +module_eval(<<'.,.,', 'grammar.y', 147) def _reduce_60(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 148) +module_eval(<<'.,.,', 'grammar.y', 149) def _reduce_61(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 149) +module_eval(<<'.,.,', 'grammar.y', 150) def _reduce_62(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 150) +module_eval(<<'.,.,', 'grammar.y', 151) def _reduce_63(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 152) +module_eval(<<'.,.,', 'grammar.y', 153) def _reduce_64(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 153) +module_eval(<<'.,.,', 'grammar.y', 154) def _reduce_65(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 154) +module_eval(<<'.,.,', 'grammar.y', 155) def _reduce_66(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 156) +module_eval(<<'.,.,', 'grammar.y', 157) def _reduce_67(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 157) +module_eval(<<'.,.,', 'grammar.y', 158) def _reduce_68(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 158) +module_eval(<<'.,.,', 'grammar.y', 159) def _reduce_69(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 159) +module_eval(<<'.,.,', 'grammar.y', 160) def _reduce_70(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 161) +module_eval(<<'.,.,', 'grammar.y', 162) def _reduce_71(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 162) +module_eval(<<'.,.,', 'grammar.y', 163) def _reduce_72(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 163) +module_eval(<<'.,.,', 'grammar.y', 164) def _reduce_73(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 164) +module_eval(<<'.,.,', 'grammar.y', 165) def _reduce_74(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 166) +module_eval(<<'.,.,', 'grammar.y', 167) def _reduce_75(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 167) +module_eval(<<'.,.,', 'grammar.y', 168) def _reduce_76(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 168) +module_eval(<<'.,.,', 'grammar.y', 169) def _reduce_77(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 169) +module_eval(<<'.,.,', 'grammar.y', 170) def _reduce_78(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 171) +module_eval(<<'.,.,', 'grammar.y', 172) def _reduce_79(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 172) +module_eval(<<'.,.,', 'grammar.y', 173) def _reduce_80(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 173) +module_eval(<<'.,.,', 'grammar.y', 174) def _reduce_81(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 174) +module_eval(<<'.,.,', 'grammar.y', 175) def _reduce_82(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 175) +module_eval(<<'.,.,', 'grammar.y', 176) def _reduce_83(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 176) +module_eval(<<'.,.,', 'grammar.y', 177) def _reduce_84(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 177) +module_eval(<<'.,.,', 'grammar.y', 178) def _reduce_85(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 179) +module_eval(<<'.,.,', 'grammar.y', 180) def _reduce_86(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 184) +module_eval(<<'.,.,', 'grammar.y', 185) def _reduce_87(val, _values, result) result = CodeNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 185) +module_eval(<<'.,.,', 'grammar.y', 186) def _reduce_88(val, _values, result) result = CodeNode.new([], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 190) +module_eval(<<'.,.,', 'grammar.y', 191) def _reduce_89(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 191) +module_eval(<<'.,.,', 'grammar.y', 192) def _reduce_90(val, _values, result) result = val[0] << val[2] result @@ -1691,399 +1690,399 @@ module_eval(<<'.,.,', 'grammar.y', 191) # reduce 91 omitted -module_eval(<<'.,.,', 'grammar.y', 196) +module_eval(<<'.,.,', 'grammar.y', 197) def _reduce_92(val, _values, result) result = ParamSplatNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 200) +module_eval(<<'.,.,', 'grammar.y', 201) def _reduce_93(val, _values, result) result = ArgSplatNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 205) +module_eval(<<'.,.,', 'grammar.y', 206) def _reduce_94(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 206) +module_eval(<<'.,.,', 'grammar.y', 207) def _reduce_95(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 207) +module_eval(<<'.,.,', 'grammar.y', 208) def _reduce_96(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 208) +module_eval(<<'.,.,', 'grammar.y', 209) def _reduce_97(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 209) +module_eval(<<'.,.,', 'grammar.y', 210) def _reduce_98(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 210) +module_eval(<<'.,.,', 'grammar.y', 211) def _reduce_99(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 211) +module_eval(<<'.,.,', 'grammar.y', 212) def _reduce_100(val, _values, result) result = ValueNode.new(val[0], [val[1]]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 216) +module_eval(<<'.,.,', 'grammar.y', 217) def _reduce_101(val, _values, result) result = AccessorNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 217) +module_eval(<<'.,.,', 'grammar.y', 218) def _reduce_102(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 218) +module_eval(<<'.,.,', 'grammar.y', 219) def _reduce_103(val, _values, result) result = SliceNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 223) +module_eval(<<'.,.,', 'grammar.y', 224) def _reduce_104(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 228) +module_eval(<<'.,.,', 'grammar.y', 229) def _reduce_105(val, _values, result) result = ObjectNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 233) +module_eval(<<'.,.,', 'grammar.y', 234) def _reduce_106(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 234) +module_eval(<<'.,.,', 'grammar.y', 235) def _reduce_107(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 235) +module_eval(<<'.,.,', 'grammar.y', 236) def _reduce_108(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 236) +module_eval(<<'.,.,', 'grammar.y', 237) def _reduce_109(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 238) +module_eval(<<'.,.,', 'grammar.y', 239) def _reduce_110(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 239) +module_eval(<<'.,.,', 'grammar.y', 240) def _reduce_111(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 244) +module_eval(<<'.,.,', 'grammar.y', 245) def _reduce_112(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 245) +module_eval(<<'.,.,', 'grammar.y', 246) def _reduce_113(val, _values, result) result = val[1].new_instance result end .,., -module_eval(<<'.,.,', 'grammar.y', 246) +module_eval(<<'.,.,', 'grammar.y', 247) def _reduce_114(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 251) +module_eval(<<'.,.,', 'grammar.y', 252) def _reduce_115(val, _values, result) result = ExtendsNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 256) +module_eval(<<'.,.,', 'grammar.y', 257) def _reduce_116(val, _values, result) result = CallNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 257) +module_eval(<<'.,.,', 'grammar.y', 258) def _reduce_117(val, _values, result) result = CallNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 262) +module_eval(<<'.,.,', 'grammar.y', 263) def _reduce_118(val, _values, result) result = CallNode.new(:super, val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 268) +module_eval(<<'.,.,', 'grammar.y', 269) def _reduce_119(val, _values, result) result = RangeNode.new(val[1], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 270) +module_eval(<<'.,.,', 'grammar.y', 271) def _reduce_120(val, _values, result) result = RangeNode.new(val[1], val[5], true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 275) +module_eval(<<'.,.,', 'grammar.y', 276) def _reduce_121(val, _values, result) result = ArrayNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 280) +module_eval(<<'.,.,', 'grammar.y', 281) def _reduce_122(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 281) +module_eval(<<'.,.,', 'grammar.y', 282) def _reduce_123(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 282) +module_eval(<<'.,.,', 'grammar.y', 283) def _reduce_124(val, _values, result) result = [val[1]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 283) +module_eval(<<'.,.,', 'grammar.y', 284) def _reduce_125(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 284) +module_eval(<<'.,.,', 'grammar.y', 285) def _reduce_126(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 285) +module_eval(<<'.,.,', 'grammar.y', 286) def _reduce_127(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 286) +module_eval(<<'.,.,', 'grammar.y', 287) def _reduce_128(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 287) +module_eval(<<'.,.,', 'grammar.y', 288) def _reduce_129(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 292) +module_eval(<<'.,.,', 'grammar.y', 293) def _reduce_130(val, _values, result) result = TryNode.new(val[1], val[2][0], val[2][1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 293) +module_eval(<<'.,.,', 'grammar.y', 294) def _reduce_131(val, _values, result) result = TryNode.new(val[1], nil, nil, val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 295) +module_eval(<<'.,.,', 'grammar.y', 296) def _reduce_132(val, _values, result) result = TryNode.new(val[1], val[2][0], val[2][1], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 300) +module_eval(<<'.,.,', 'grammar.y', 301) def _reduce_133(val, _values, result) result = [val[1], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 305) +module_eval(<<'.,.,', 'grammar.y', 306) def _reduce_134(val, _values, result) result = ThrowNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 310) +module_eval(<<'.,.,', 'grammar.y', 311) def _reduce_135(val, _values, result) result = ParentheticalNode.new(val[1], val[0].line) result end .,., -module_eval(<<'.,.,', 'grammar.y', 315) +module_eval(<<'.,.,', 'grammar.y', 316) def _reduce_136(val, _values, result) result = WhileNode.new(val[1], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 322) +module_eval(<<'.,.,', 'grammar.y', 323) def _reduce_137(val, _values, result) result = ForNode.new(val[0], val[3][0], val[2][0], val[3][1], val[2][1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 323) +module_eval(<<'.,.,', 'grammar.y', 324) def _reduce_138(val, _values, result) result = ForNode.new(val[3], val[2][0], val[1][0], val[2][1], val[1][1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 328) +module_eval(<<'.,.,', 'grammar.y', 329) def _reduce_139(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 329) +module_eval(<<'.,.,', 'grammar.y', 330) def _reduce_140(val, _values, result) result = [val[0], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 334) +module_eval(<<'.,.,', 'grammar.y', 335) def _reduce_141(val, _values, result) result = [val[1]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 336) +module_eval(<<'.,.,', 'grammar.y', 337) def _reduce_142(val, _values, result) result = [val[1], val[3]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 342) +module_eval(<<'.,.,', 'grammar.y', 343) def _reduce_143(val, _values, result) result = val[3].rewrite_condition(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 344) +module_eval(<<'.,.,', 'grammar.y', 345) def _reduce_144(val, _values, result) result = val[3].rewrite_condition(val[1]).add_else(val[5]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 349) +module_eval(<<'.,.,', 'grammar.y', 350) def _reduce_145(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 350) +module_eval(<<'.,.,', 'grammar.y', 351) def _reduce_146(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 355) +module_eval(<<'.,.,', 'grammar.y', 356) def _reduce_147(val, _values, result) result = IfNode.new(val[1], val[2], nil, {:statement => true}) result end .,., -module_eval(<<'.,.,', 'grammar.y', 356) +module_eval(<<'.,.,', 'grammar.y', 357) def _reduce_148(val, _values, result) result = IfNode.new(val[1], val[2], nil, {:statement => true}) result @@ -2092,77 +2091,77 @@ module_eval(<<'.,.,', 'grammar.y', 356) # reduce 149 omitted -module_eval(<<'.,.,', 'grammar.y', 364) +module_eval(<<'.,.,', 'grammar.y', 365) def _reduce_150(val, _values, result) result = IfNode.new(val[1], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 369) +module_eval(<<'.,.,', 'grammar.y', 370) def _reduce_151(val, _values, result) result = val[1].force_statement result end .,., -module_eval(<<'.,.,', 'grammar.y', 374) +module_eval(<<'.,.,', 'grammar.y', 375) def _reduce_152(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 375) +module_eval(<<'.,.,', 'grammar.y', 376) def _reduce_153(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 380) +module_eval(<<'.,.,', 'grammar.y', 381) def _reduce_154(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 381) +module_eval(<<'.,.,', 'grammar.y', 382) def _reduce_155(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 386) +module_eval(<<'.,.,', 'grammar.y', 387) def _reduce_156(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 387) +module_eval(<<'.,.,', 'grammar.y', 388) def _reduce_157(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 392) +module_eval(<<'.,.,', 'grammar.y', 393) def _reduce_158(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 393) +module_eval(<<'.,.,', 'grammar.y', 394) def _reduce_159(val, _values, result) result = IfNode.new(val[2], Expressions.new([val[0]]), nil, {:statement => true}) result end .,., -module_eval(<<'.,.,', 'grammar.y', 394) +module_eval(<<'.,.,', 'grammar.y', 395) def _reduce_160(val, _values, result) result = IfNode.new(val[2], Expressions.new([val[0]]), nil, {:statement => true, :invert => true}) result diff --git a/test/fixtures/execution/test_nested_comprehensions.coffee b/test/fixtures/execution/test_nested_comprehensions.coffee new file mode 100644 index 00000000..ce6952d8 --- /dev/null +++ b/test/fixtures/execution/test_nested_comprehensions.coffee @@ -0,0 +1,11 @@ +multi_liner: + for x in [3..5] + for y in [3..5] + [x, y] + +single_liner: + [x, y] for y in [3..5] for x in [3..5] + +print(multi_liner.length is single_liner.length) +print(5 is multi_liner[2][2][1]) +print(5 is single_liner[2][2][1])