From 034f0a6b9cbc9cca758ec94a2ed737cc26494f0f Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Tue, 16 Mar 2021 12:03:50 +0900 Subject: [PATCH] Fix module self-type syntax --- lib/rbs/parser.rb | 996 +++++++++++++++-------------- lib/rbs/parser.y | 10 +- test/rbs/signature_parsing_test.rb | 25 + 3 files changed, 529 insertions(+), 502 deletions(-) diff --git a/lib/rbs/parser.rb b/lib/rbs/parser.rb index 6d49fa4f2..f01592ef5 100644 --- a/lib/rbs/parser.rb +++ b/lib/rbs/parser.rb @@ -410,119 +410,119 @@ def initialize(input:, location:) ##### State transition tables begin ### clist = [ -'354,355,33,356,5,113,37,33,33,42,341,397,49,33,33,353,43,248,339,396', -'40,41,55,56,57,58,59,60,61,62,358,33,63,54,64,65,66,77,67,68,69,83,33', -'32,53,349,343,344,32,32,347,345,348,308,32,32,33,346,82,70,71,72,74', -'76,75,342,351,352,73,78,80,126,32,185,48,84,85,81,86,354,355,33,356', -'32,96,97,98,99,104,49,39,33,33,33,353,207,207,32,186,40,41,55,56,57', -'58,59,60,61,62,79,226,63,54,64,65,66,77,67,68,69,83,53,32,160,349,343', -'344,53,53,347,345,348,32,32,32,227,346,82,70,71,72,74,76,75,342,351', -'352,73,78,80,40,41,161,283,84,85,81,86,354,355,120,356,180,96,97,98', -'99,125,179,101,102,165,103,353,166,330,363,400,284,39,55,56,57,58,59', -'60,61,62,79,401,63,54,64,65,66,77,67,68,69,83,186,186,186,349,343,344', -'402,167,347,345,348,326,40,41,186,346,82,70,71,72,74,76,75,342,351,352', -'73,78,80,168,322,186,170,84,85,81,86,354,355,171,356,172,96,97,98,99', -'2,3,4,40,41,113,353,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,178', -'63,54,64,65,66,77,67,68,69,83,40,41,181,349,343,344,40,41,347,345,348', -'40,41,40,41,346,82,70,71,72,74,76,75,342,351,352,73,78,80,354,355,184', -'356,84,85,81,86,-4,41,-242,187,33,189,117,353,-242,40,41,40,41,113,55', -'56,57,58,59,60,61,62,79,180,63,54,64,65,66,77,67,68,69,83,40,41,190', -'349,343,344,286,287,347,345,348,32,375,376,-104,346,82,70,71,72,74,76', -'75,342,351,352,73,78,80,354,355,-105,356,84,85,81,86,40,41,40,41,-106', -'39,-107,353,391,392,40,41,40,41,55,56,57,58,59,60,61,62,79,-108,63,54', -'64,65,66,77,67,68,69,83,40,41,-109,349,343,344,40,41,347,345,348,40', -'41,40,41,346,82,70,71,72,74,76,75,342,351,352,73,78,80,40,41,-110,-111', -'84,85,81,86,354,355,-112,356,-113,96,97,98,99,-114,48,-129,195,196,197', -'353,198,199,200,208,209,42,55,56,57,58,59,60,61,62,79,210,63,54,64,65', -'66,77,67,68,69,83,228,242,251,349,343,344,252,253,347,345,348,255,257', -'258,42,346,82,70,71,72,74,76,75,342,351,352,73,78,80,354,355,260,356', -'84,85,81,86,260,260,266,42,228,270,274,353,276,278,279,315,274,317,55', -'56,57,58,59,60,61,62,79,278,63,54,64,65,66,77,67,68,69,83,327,328,329', -'349,343,344,332,332,347,345,348,332,362,364,371,346,82,70,71,72,74,76', -'75,342,351,352,73,78,80,372,373,374,377,84,85,81,86,33,379,382,96,97', -'98,99,382,382,395,22,23,21,398,26,-219,25,399,30,406,131,132,133,134', -'135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,407,32,408', -'410,415,28,416,156,417,157,159,418,415,,,,82,70,71,72,74,76,75,,,,73', -'78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,,25,,30,,131', -'132,133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83', -',32,,,174,28,,177,,175,,,,,,,82,70,71,72,74,76,75,,,,73,78,80,176,,', +'349,350,33,351,-4,113,-242,33,33,5,117,336,-242,33,33,348,37,113,42', +'334,40,41,55,56,57,58,59,60,61,62,353,43,63,54,64,65,66,77,67,68,69', +'83,33,32,33,344,338,339,32,32,342,340,343,291,32,32,49,341,82,70,71', +'72,74,76,75,337,346,347,73,78,80,349,350,33,351,84,85,81,86,33,39,405', +'48,32,33,32,348,104,53,404,40,41,49,55,56,57,58,59,60,61,62,79,33,63', +'54,64,65,66,77,67,68,69,83,33,32,160,344,338,339,33,32,342,340,343,53', +'32,322,207,341,82,70,71,72,74,76,75,337,346,347,73,78,80,126,32,161', +'320,84,85,81,86,349,350,39,351,32,96,97,98,99,53,32,207,180,40,41,348', +'40,41,179,185,40,41,55,56,57,58,59,60,61,62,79,226,63,54,64,65,66,77', +'67,68,69,83,39,53,186,344,338,339,281,332,342,340,343,2,3,4,227,341', +'82,70,71,72,74,76,75,337,346,347,73,78,80,364,396,282,186,84,85,81,86', +'349,350,120,351,180,96,97,98,99,125,262,101,102,165,103,348,166,186', +'186,408,40,41,55,56,57,58,59,60,61,62,79,409,63,54,64,65,66,77,67,68', +'69,83,40,41,186,344,338,339,40,41,342,340,343,40,41,167,186,341,82,70', +'71,72,74,76,75,337,346,347,73,78,80,40,41,40,41,84,85,81,86,349,350', +'168,351,170,96,97,98,99,40,41,40,41,40,41,348,40,41,284,285,367,368', +'55,56,57,58,59,60,61,62,79,171,63,54,64,65,66,77,67,68,69,83,40,41,172', +'344,338,339,40,41,342,340,343,383,384,40,41,341,82,70,71,72,74,76,75', +'337,346,347,73,78,80,349,350,113,351,84,85,81,86,40,41,40,41,40,41,178', +'348,40,41,40,41,40,41,55,56,57,58,59,60,61,62,79,181,63,54,64,65,66', +'77,67,68,69,83,184,41,187,344,338,339,189,180,342,340,343,190,-104,-105', +'-106,341,82,70,71,72,74,76,75,337,346,347,73,78,80,-107,-108,-109,-110', +'84,85,81,86,349,350,-111,351,-112,96,97,98,99,-113,-114,48,-129,195', +'196,348,197,198,199,200,208,209,55,56,57,58,59,60,61,62,79,42,63,54', +'64,65,66,77,67,68,69,83,210,228,242,344,338,339,251,252,342,340,343', +'253,255,257,258,341,82,70,71,72,74,76,75,337,346,347,73,78,80,349,350', +'42,351,84,85,81,86,260,260,260,264,42,228,268,348,272,274,289,290,313', +'272,55,56,57,58,59,60,61,62,79,315,63,54,64,65,66,77,67,68,69,83,289', +'328,329,344,338,339,330,355,342,340,343,355,355,363,365,341,82,70,71', +'72,74,76,75,337,346,347,73,78,80,366,369,371,378,84,85,81,86,33,379', +'380,96,97,98,99,388,388,388,22,23,21,400,26,-219,25,401,30,402,131,132', +'133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,403', +'32,406,407,412,28,413,156,414,157,159,416,419,412,,,82,70,71,72,74,76', +'75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,,25', +',30,,131,132,133,134,135,136,137,138,142,16,139,130,140,141,66,77,67', +'68,69,83,,32,,,174,28,,177,,175,,,,,,,82,70,71,72,74,76,75,,,,73,78', +'80,176,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,', +'131,132,133,134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69', +'83,,32,,,,28,,156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,', ',84,85,81,86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133', '134,135,136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,', '28,,156,,157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81', '86,33,,,96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135', -'136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156', -',157,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,', -'96,97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137', -'138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,234,,,159,,', -',,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99', +'136,137,138,142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,234', +',,159,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96', +'97,98,99,,,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137,138', +'142,16,139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156,,157,159,,,', +',,82,70,71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99', ',,,22,23,21,,26,-219,25,,30,,131,132,133,134,135,136,137,138,142,16', -'139,130,140,141,66,77,67,68,69,83,,32,,,,28,,156,,157,159,,,,,,82,70', -'71,72,74,76,75,,,,73,78,80,,,,,84,85,81,86,33,,,96,97,98,99,,,,22,23', -'21,,26,-219,25,,30,,131,132,133,134,135,136,137,138,142,16,139,130,140', -'141,66,77,67,68,69,83,,32,,,,28,,234,,,159,,,,,,82,70,71,72,74,76,75', -',,,73,78,80,,,,,84,85,81,86,96,97,98,99,,,,90,89,91,,,,,,,,55,56,57', -'58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,,,,,,192,,193,,', -',,,82,70,71,72,74,76,75,,95,94,73,78,80,,,,,84,85,81,86,96,97,98,99', -',,,90,89,91,,,,,,40,41,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77', -'67,68,69,83,194,,,,,,,,,,,,,,,,82,70,71,72,74,76,75,,95,94,73,78,80', -'96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64', -'65,66,77,67,68,69,83,192,,193,,,,,234,,,159,,,,,,82,70,71,72,74,76,75', -'192,,193,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,40,41,55,56,57,58,59', -'60,61,62,79,,63,54,64,65,66,77,67,68,69,83,194,40,41,,,,,234,,,159,', -',,,,82,70,71,72,74,76,75,194,,,73,78,80,96,97,98,99,84,85,81,86,,,,', -',,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,192,', -'193,192,,193,192,,193,,,,,,,,82,70,71,72,74,76,75,,,,73,78,80,,,,,84', -'85,81,86,,,,,,,,40,41,,40,41,,40,41,-242,,33,,117,,-242,,,303,304,113', -',,194,,,194,,,194,,-242,,33,,117,,-242,,305,303,304,113,,,,,,300,299', -',,32,-242,,33,,117,,-242,,305,303,304,113,,,,291,,300,299,,174,32,,177', -',175,,,326,,305,,,,,,,314,,300,299,,33,32,,176,,322,323,319,320,321', -'22,23,21,324,26,,25,318,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27', -',,33,,,,,32,,,,28,22,23,21,,26,,25,45,30,,8,12,19,20,9,10,13,14,15,16', -'17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10', +'139,130,140,141,66,77,67,68,69,83,,32,,,,28,,234,,,159,,,,,,82,70,71', +'72,74,76,75,,,,73,78,80,,,,,84,85,81,86,96,97,98,99,,,,90,89,91,,,,', +',,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,,,,,,,', +',192,,193,,,,,,82,70,71,72,74,76,75,,95,94,73,78,80,,,,,84,85,81,86', +'96,97,98,99,,,,90,89,91,,,,,,40,41,55,56,57,58,59,60,61,62,79,,63,54', +'64,65,66,77,67,68,69,83,194,,,,,,,,,,,,,,,,82,70,71,72,74,76,75,,95', +'94,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62', +'79,,63,54,64,65,66,77,67,68,69,83,192,,193,,,,,234,,,159,,,,,,82,70', +'71,72,74,76,75,192,,193,73,78,80,96,97,98,99,84,85,81,86,,,,,,,,40,41', +'55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68,69,83,194,40,41', +',,,,234,,,159,,,,,,82,70,71,72,74,76,75,194,,,73,78,80,96,97,98,99,84', +'85,81,86,,,,,,,,,,55,56,57,58,59,60,61,62,79,,63,54,64,65,66,77,67,68', +'69,83,192,,193,192,,193,192,,193,,,,,,,,82,70,71,72,74,76,75,,,,73,78', +'80,,,,,84,85,81,86,,,,,,,,40,41,,40,41,,40,41,-242,,33,,117,,-242,,', +'310,311,113,,,194,,,194,,,194,,-242,,33,,117,,-242,,312,310,311,113', +',,,,,307,306,,,32,-242,,33,,117,,-242,,312,310,311,113,,,,298,,307,306', +',174,32,,177,,175,,,322,,312,,,,,,,316,,307,306,,33,32,,176,,320,326', +'323,324,325,22,23,21,327,26,,25,317,30,,8,12,19,20,9,10,13,14,15,16', +'17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,45,30,,8,12,19,20,9,10', '13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12', '19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25', ',30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23', '21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32', ',,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27', ',,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16', -'17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,-246,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26', -',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22', -'23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,', -'32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11', -'27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15', -'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26', -',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22', -'23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,', -'32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11', -'27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15', -'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26', -',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22', -'23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,', -'32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11', -'27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15', -'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26', -',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22', -'23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,', -'32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11', -'27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15', -'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26', -',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22', -'23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,', -'32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11', -'27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15', -'16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9', -'10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8', -'12,19,20,9,10,13,14,15,16,17,18,11,27,,,,,,,,32,,,,28' ] +'17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10', +'13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,-246,30,', +'8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,', +'26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28', +'22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,', +',,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18', +'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14', +'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20', +'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30', +',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21', +',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,', +'28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33', +',,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18', +'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14', +'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20', +'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30', +',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21', +',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,', +'28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33', +',,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18', +'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14', +'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20', +'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30', +',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21', +',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,', +'28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33', +',,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18', +'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14', +'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20', +'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30', +',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21', +',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,', +'28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33', +',,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18', +'11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20,9,10,13,14', +'15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30,,8,12,19,20', +'9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21,,26,,25,,30', +',8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,33,,,,,32,,,,28,22,23,21', +',26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,,,,,,,,32,,,,28' ] racc_action_table = arr = ::Array.new(3044, nil) idx = 0 clist.each do |str| @@ -533,104 +533,104 @@ def initialize(input:, location:) end clist = [ -'326,326,48,326,1,280,5,177,218,7,325,382,28,219,220,326,24,219,325,382', -'44,44,326,326,326,326,326,326,326,326,326,248,326,326,326,326,326,326', -'326,326,326,326,270,48,28,326,326,326,177,218,326,326,326,280,219,220', -'276,326,326,326,326,326,326,326,326,326,326,326,326,326,326,47,248,123', -'27,326,326,326,326,333,333,278,333,270,333,333,333,333,32,119,35,322', -'323,324,333,160,208,276,123,47,47,333,333,333,333,333,333,333,333,333', -'183,333,333,333,333,333,333,333,333,333,333,119,278,51,333,333,333,160', -'208,333,333,333,322,323,324,183,333,333,333,333,333,333,333,333,333', -'333,333,333,333,333,6,6,51,271,333,333,333,333,334,334,36,334,116,334', -'334,334,334,46,116,31,31,87,31,334,89,307,331,387,271,6,334,334,334', -'334,334,334,334,334,334,388,334,334,334,334,334,334,334,334,334,334', -'307,331,387,334,334,334,389,90,334,334,334,313,169,169,388,334,334,334', -'334,334,334,334,334,334,334,334,334,334,334,91,313,389,93,334,334,334', -'334,335,335,94,335,95,335,335,335,335,0,0,0,188,188,113,335,212,212', -'213,213,214,214,335,335,335,335,335,335,335,335,335,115,335,335,335', -'335,335,335,335,335,335,335,215,215,117,335,335,335,216,216,335,335', -'335,217,217,223,223,335,335,335,335,335,335,335,335,335,335,335,335', -'335,335,359,359,120,359,335,335,335,335,34,121,34,124,34,127,34,359', -'34,224,224,225,225,34,359,359,359,359,359,359,359,359,359,128,359,359', -'359,359,359,359,359,359,359,359,267,267,129,359,359,359,273,273,359', -'359,359,34,350,350,130,359,359,359,359,359,359,359,359,359,359,359,359', -'359,359,377,377,131,377,359,359,359,359,360,360,361,361,132,34,133,377', -'374,374,380,380,383,383,377,377,377,377,377,377,377,377,377,134,377', -'377,377,377,377,377,377,377,377,377,385,385,135,377,377,377,394,394', -'377,377,377,409,409,411,411,377,377,377,377,377,377,377,377,377,377', -'377,377,377,377,412,412,136,137,377,377,377,377,390,390,138,390,139', -'390,390,390,390,140,141,142,145,146,148,390,150,153,154,161,162,163', -'390,390,390,390,390,390,390,390,390,164,390,390,390,390,390,390,390', -'390,390,390,190,206,221,390,390,390,222,227,390,390,390,232,243,244', -'245,390,390,390,390,390,390,390,390,390,390,390,390,390,390,417,417', -'246,417,390,390,390,390,247,249,250,254,257,259,260,417,261,262,264', -'282,284,285,417,417,417,417,417,417,417,417,417,289,417,417,417,417', -'417,417,417,417,417,417,303,304,305,417,417,417,319,320,417,417,417', -'321,329,332,336,417,417,417,417,417,417,417,417,417,417,417,417,417', -'417,337,338,340,358,417,417,417,417,49,362,366,49,49,49,49,368,370,381', -'49,49,49,384,49,49,49,386,49,391,49,49,49,49,49,49,49,49,49,49,49,49', -'49,49,49,49,49,49,49,49,392,49,393,397,403,49,405,49,408,49,49,414,418', -',,,49,49,49,49,49,49,49,,,,49,49,49,,,,,49,49,49,49,156,,,156,156,156', -'156,,,,156,156,156,,156,,156,,156,,156,156,156,156,156,156,156,156,156', -'156,156,156,156,156,156,156,156,156,156,156,,156,,,114,156,,114,,114', -',,,,,,156,156,156,156,156,156,156,,,,156,156,156,114,,,,156,156,156', -'156,196,,,196,196,196,196,,,,196,196,196,,196,196,196,,196,,196,196', +'322,322,48,322,34,278,34,177,34,1,34,321,34,218,219,322,5,34,7,321,44', +'44,322,322,322,322,322,322,322,322,322,24,322,322,322,322,322,322,322', +'322,322,322,220,48,262,322,322,322,177,34,322,322,322,278,218,219,28', +'322,322,322,322,322,322,322,322,322,322,322,322,322,322,354,354,268', +'354,322,322,322,322,274,34,388,27,220,289,262,354,32,28,388,169,169', +'119,354,354,354,354,354,354,354,354,354,320,354,354,354,354,354,354', +'354,354,354,354,326,268,51,354,354,354,327,274,354,354,354,119,289,296', +'160,354,354,354,354,354,354,354,354,354,354,354,354,354,354,47,320,51', +'296,354,354,354,354,356,356,35,356,326,356,356,356,356,160,327,208,116', +'6,6,356,188,188,116,123,47,47,356,356,356,356,356,356,356,356,356,183', +'356,356,356,356,356,356,356,356,356,356,6,208,123,356,356,356,269,319', +'356,356,356,0,0,0,183,356,356,356,356,356,356,356,356,356,356,356,356', +'356,356,331,381,269,319,356,356,356,356,357,357,36,357,248,357,357,357', +'357,46,248,31,31,87,31,357,89,331,381,393,212,212,357,357,357,357,357', +'357,357,357,357,394,357,357,357,357,357,357,357,357,357,357,213,213', +'393,357,357,357,214,214,357,357,357,215,215,90,394,357,357,357,357,357', +'357,357,357,357,357,357,357,357,357,216,216,217,217,357,357,357,357', +'358,358,91,358,93,358,358,358,358,223,223,224,224,225,225,358,265,265', +'271,271,345,345,358,358,358,358,358,358,358,358,358,94,358,358,358,358', +'358,358,358,358,358,358,361,361,95,358,358,358,362,362,358,358,358,366', +'366,386,386,358,358,358,358,358,358,358,358,358,358,358,358,358,358', +'369,369,113,369,358,358,358,358,389,389,391,391,395,395,115,369,415', +'415,417,417,418,418,369,369,369,369,369,369,369,369,369,117,369,369', +'369,369,369,369,369,369,369,369,120,121,124,369,369,369,127,128,369', +'369,369,129,130,131,132,369,369,369,369,369,369,369,369,369,369,369', +'369,369,369,133,134,135,136,369,369,369,369,382,382,137,382,138,382', +'382,382,382,139,140,141,142,145,146,382,148,150,153,154,161,162,382', +'382,382,382,382,382,382,382,382,163,382,382,382,382,382,382,382,382', +'382,382,164,190,206,382,382,382,221,222,382,382,382,227,232,243,244', +'382,382,382,382,382,382,382,382,382,382,382,382,382,382,414,414,245', +'414,382,382,382,382,246,247,249,250,254,257,259,414,260,261,275,277', +'280,282,414,414,414,414,414,414,414,414,414,283,414,414,414,414,414', +'414,414,414,414,414,287,310,311,414,414,414,312,323,414,414,414,324', +'325,330,333,414,414,414,414,414,414,414,414,414,414,414,414,414,414', +'335,353,355,359,414,414,414,414,49,360,363,49,49,49,49,373,375,377,49', +'49,49,383,49,49,49,384,49,385,49,49,49,49,49,49,49,49,49,49,49,49,49', +'49,49,49,49,49,49,49,387,49,390,392,397,49,399,49,402,49,49,405,411', +'419,,,49,49,49,49,49,49,49,,,,49,49,49,,,,,49,49,49,49,156,,,156,156', +'156,156,,,,156,156,156,,156,,156,,156,,156,156,156,156,156,156,156,156', +'156,156,156,156,156,156,156,156,156,156,156,156,,156,,,114,156,,114', +',114,,,,,,,156,156,156,156,156,156,156,,,,156,156,156,114,,,,156,156', +'156,156,196,,,196,196,196,196,,,,196,196,196,,196,196,196,,196,,196', '196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196', -'196,,196,,,,196,,196,,196,196,,,,,,196,196,196,196,196,196,196,,,,196', -'196,196,,,,,196,196,196,196,197,,,197,197,197,197,,,,197,197,197,,197', -'197,197,,197,,197,197,197,197,197,197,197,197,197,197,197,197,197,197', -'197,197,197,197,197,197,,197,,,,197,,197,,197,197,,,,,,197,197,197,197', -'197,197,197,,,,197,197,197,,,,,197,197,197,197,198,,,198,198,198,198', -',,,198,198,198,,198,198,198,,198,,198,198,198,198,198,198,198,198,198', -'198,198,198,198,198,198,198,198,198,198,198,,198,,,,198,,198,,,198,', -',,,,198,198,198,198,198,198,198,,,,198,198,198,,,,,198,198,198,198,207', -',,207,207,207,207,,,,207,207,207,,207,207,207,,207,,207,207,207,207', -'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,,207', -',,,207,,207,,207,207,,,,,,207,207,207,207,207,207,207,,,,207,207,207', -',,,,207,207,207,207,255,,,255,255,255,255,,,,255,255,255,,255,255,255', -',255,,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255', -'255,255,255,255,,255,,,,255,,255,,,255,,,,,,255,255,255,255,255,255', -'255,,,,255,255,255,,,,,255,255,255,255,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,,,,,,,,', -'143,,143,,,,,,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,30,30,30,30,165', -'165,165,165,,,,165,165,165,,,,,,143,143,165,165,165,165,165,165,165', -'165,165,,165,165,165,165,165,165,165,165,165,165,143,,,,,,,,,,,,,,,', -'165,165,165,165,165,165,165,,165,165,165,165,165,199,199,199,199,165', -'165,165,165,,,,,,,,,,199,199,199,199,199,199,199,199,199,,199,199,199', -'199,199,199,199,199,199,199,201,,201,,,,,199,,,199,,,,,,199,199,199', -'199,199,199,199,203,,203,199,199,199,200,200,200,200,199,199,199,199', -',,,,,,,201,201,200,200,200,200,200,200,200,200,200,,200,200,200,200', -'200,200,200,200,200,200,201,203,203,,,,,200,,,200,,,,,,200,200,200,200', -'200,200,200,203,,,200,200,200,234,234,234,234,200,200,200,200,,,,,,', -',,,234,234,234,234,234,234,234,234,234,,234,234,234,234,234,234,234', -'234,234,234,204,,204,205,,205,238,,238,,,,,,,,234,234,234,234,234,234', -'234,,,,234,234,234,,,,,234,234,234,234,,,,,,,,204,204,,205,205,,238', -'238,277,,277,,277,,277,,,277,277,277,,,204,,,205,,,238,,281,,281,,281', -',281,,277,281,281,281,,,,,,277,277,,,277,288,,288,,288,,288,,281,288', -'288,288,,,,277,,281,281,,290,281,,290,,290,,,290,,288,,,,,,,281,,288', -'288,,2,288,,290,,290,290,290,290,290,2,2,2,290,2,,2,288,2,,2,2,2,2,2', -'2,2,2,2,2,2,2,2,2,,,25,,,,,2,,,,2,25,25,25,,25,,25,25,25,,25,25,25,25', -'25,25,25,25,25,25,25,25,25,25,,,26,,,,,25,,,,25,26,26,26,,26,,26,,26', -',26,26,26,26,26,26,26,26,26,26,26,26,26,26,,,40,,,,,26,,,,26,40,40,40', -',40,,40,,40,,40,40,40,40,40,40,40,40,40,40,40,40,40,40,,,41,,,,,40,', -',,40,41,41,41,,41,,41,,41,,41,41,41,41,41,41,41,41,41,41,41,41,41,41', -',,43,,,,,41,,,,41,43,43,43,,43,,43,,43,,43,43,43,43,43,43,43,43,43,43', -'43,43,43,43,,,53,,,,,43,,,,43,53,53,53,,53,,53,,53,,53,53,53,53,53,53', -'53,53,53,53,53,53,53,53,,,92,,,,,53,,,,53,92,92,92,,92,,92,,92,,92,92', -'92,92,92,92,92,92,92,92,92,92,92,92,,,125,,,,,92,,,,92,125,125,125,', -'125,,125,125,125,,125,125,125,125,125,125,125,125,125,125,125,125,125', -'125,,,157,,,,,125,,,,125,157,157,157,,157,,157,,157,,157,157,157,157', -'157,157,157,157,157,157,157,157,157,157,,,158,,,,,157,,,,157,158,158', -'158,,158,,158,,158,,158,158,158,158,158,158,158,158,158,158,158,158', -'158,158,,,159,,,,,158,,,,158,159,159,159,,159,,159,,159,,159,159,159', -'159,159,159,159,159,159,159,159,159,159,159,,,166,,,,,159,,,,159,166', -'166,166,,166,,166,,166,,166,166,166,166,166,166,166,166,166,166,166', -'166,166,166,,,167,,,,,166,,,,166,167,167,167,,167,,167,,167,,167,167', -'167,167,167,167,167,167,167,167,167,167,167,167,,,168,,,,,167,,,,167', -'168,168,168,,168,,168,,168,,168,168,168,168,168,168,168,168,168,168', -'168,168,168,168,,,170,,,,,168,,,,168,170,170,170,,170,,170,,170,,170', -'170,170,170,170,170,170,170,170,170,170,170,170,170,,,171,,,,,170,,', -',170,171,171,171,,171,,171,,171,,171,171,171,171,171,171,171,171,171', +'196,196,,196,,,,196,,196,,196,196,,,,,,196,196,196,196,196,196,196,', +',,196,196,196,,,,,196,196,196,196,197,,,197,197,197,197,,,,197,197,197', +',197,197,197,,197,,197,197,197,197,197,197,197,197,197,197,197,197,197', +'197,197,197,197,197,197,197,,197,,,,197,,197,,197,197,,,,,,197,197,197', +'197,197,197,197,,,,197,197,197,,,,,197,197,197,197,198,,,198,198,198', +'198,,,,198,198,198,,198,198,198,,198,,198,198,198,198,198,198,198,198', +'198,198,198,198,198,198,198,198,198,198,198,198,,198,,,,198,,198,,,198', +',,,,,198,198,198,198,198,198,198,,,,198,198,198,,,,,198,198,198,198', +'207,,,207,207,207,207,,,,207,207,207,,207,207,207,,207,,207,207,207', +'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', +',207,,,,207,,207,,207,207,,,,,,207,207,207,207,207,207,207,,,,207,207', +'207,,,,,207,207,207,207,255,,,255,255,255,255,,,,255,255,255,,255,255', +'255,,255,,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255', +'255,255,255,255,255,,255,,,,255,,255,,,255,,,,,,255,255,255,255,255', +'255,255,,,,255,255,255,,,,,255,255,255,255,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,,,,', +',,,,143,,143,,,,,,30,30,30,30,30,30,30,,30,30,30,30,30,,,,,30,30,30', +'30,165,165,165,165,,,,165,165,165,,,,,,143,143,165,165,165,165,165,165', +'165,165,165,,165,165,165,165,165,165,165,165,165,165,143,,,,,,,,,,,', +',,,,165,165,165,165,165,165,165,,165,165,165,165,165,199,199,199,199', +'165,165,165,165,,,,,,,,,,199,199,199,199,199,199,199,199,199,,199,199', +'199,199,199,199,199,199,199,199,201,,201,,,,,199,,,199,,,,,,199,199', +'199,199,199,199,199,203,,203,199,199,199,200,200,200,200,199,199,199', +'199,,,,,,,,201,201,200,200,200,200,200,200,200,200,200,,200,200,200', +'200,200,200,200,200,200,200,201,203,203,,,,,200,,,200,,,,,,200,200,200', +'200,200,200,200,203,,,200,200,200,234,234,234,234,200,200,200,200,,', +',,,,,,,234,234,234,234,234,234,234,234,234,,234,234,234,234,234,234', +'234,234,234,234,204,,204,205,,205,238,,238,,,,,,,,234,234,234,234,234', +'234,234,,,,234,234,234,,,,,234,234,234,234,,,,,,,,204,204,,205,205,', +'238,238,279,,279,,279,,279,,,279,279,279,,,204,,,205,,,238,,286,,286', +',286,,286,,279,286,286,286,,,,,,279,279,,,279,288,,288,,288,,288,,286', +'288,288,288,,,,279,,286,286,,297,286,,297,,297,,,297,,288,,,,,,,286', +',288,288,,2,288,,297,,297,297,297,297,297,2,2,2,297,2,,2,288,2,,2,2', +'2,2,2,2,2,2,2,2,2,2,2,2,,,25,,,,,2,,,,2,25,25,25,,25,,25,25,25,,25,25', +'25,25,25,25,25,25,25,25,25,25,25,25,,,26,,,,,25,,,,25,26,26,26,,26,', +'26,,26,,26,26,26,26,26,26,26,26,26,26,26,26,26,26,,,40,,,,,26,,,,26', +'40,40,40,,40,,40,,40,,40,40,40,40,40,40,40,40,40,40,40,40,40,40,,,41', +',,,,40,,,,40,41,41,41,,41,,41,,41,,41,41,41,41,41,41,41,41,41,41,41', +'41,41,41,,,43,,,,,41,,,,41,43,43,43,,43,,43,,43,,43,43,43,43,43,43,43', +'43,43,43,43,43,43,43,,,53,,,,,43,,,,43,53,53,53,,53,,53,,53,,53,53,53', +'53,53,53,53,53,53,53,53,53,53,53,,,92,,,,,53,,,,53,92,92,92,,92,,92', +',92,,92,92,92,92,92,92,92,92,92,92,92,92,92,92,,,125,,,,,92,,,,92,125', +'125,125,,125,,125,125,125,,125,125,125,125,125,125,125,125,125,125,125', +'125,125,125,,,157,,,,,125,,,,125,157,157,157,,157,,157,,157,,157,157', +'157,157,157,157,157,157,157,157,157,157,157,157,,,158,,,,,157,,,,157', +'158,158,158,,158,,158,,158,,158,158,158,158,158,158,158,158,158,158', +'158,158,158,158,,,159,,,,,158,,,,158,159,159,159,,159,,159,,159,,159', +'159,159,159,159,159,159,159,159,159,159,159,159,159,,,166,,,,,159,,', +',159,166,166,166,,166,,166,,166,,166,166,166,166,166,166,166,166,166', +'166,166,166,166,166,,,167,,,,,166,,,,166,167,167,167,,167,,167,,167', +',167,167,167,167,167,167,167,167,167,167,167,167,167,167,,,168,,,,,167', +',,,167,168,168,168,,168,,168,,168,,168,168,168,168,168,168,168,168,168', +'168,168,168,168,168,,,170,,,,,168,,,,168,170,170,170,,170,,170,,170', +',170,170,170,170,170,170,170,170,170,170,170,170,170,170,,,171,,,,,170', +',,,170,171,171,171,,171,,171,,171,,171,171,171,171,171,171,171,171,171', '171,171,171,171,171,,,172,,,,,171,,,,171,172,172,172,,172,,172,,172', ',172,172,172,172,172,172,172,172,172,172,172,172,172,172,,,178,,,,,172', ',,,172,178,178,178,,178,,178,,178,,178,178,178,178,178,178,178,178,178', @@ -644,29 +644,29 @@ def initialize(input:, location:) ',209,209,209,209,209,209,209,209,209,209,209,209,209,209,,,228,,,,,209', ',,,209,228,228,228,,228,,228,,228,,228,228,228,228,228,228,228,228,228', '228,228,228,228,228,,,251,,,,,228,,,,228,251,251,251,,251,,251,,251', -',251,251,251,251,251,251,251,251,251,251,251,251,251,251,,,279,,,,,251', -',,,251,279,279,279,,279,,279,,279,,279,279,279,279,279,279,279,279,279', -'279,279,279,279,279,,,315,,,,,279,,,,279,315,315,315,,315,,315,,315', -',315,315,315,315,315,315,315,315,315,315,315,315,315,315,,,327,,,,,315', -',,,315,327,327,327,,327,,327,,327,,327,327,327,327,327,327,327,327,327', -'327,327,327,327,327,,,328,,,,,327,,,,327,328,328,328,,328,,328,,328', -',328,328,328,328,328,328,328,328,328,328,328,328,328,328,,,365,,,,,328', -',,,328,365,365,365,,365,,365,,365,,365,365,365,365,365,365,365,365,365', -'365,365,365,365,365,,,367,,,,,365,,,,365,367,367,367,,367,,367,,367', -',367,367,367,367,367,367,367,367,367,367,367,367,367,367,,,369,,,,,367', -',,,367,369,369,369,,369,,369,,369,,369,369,369,369,369,369,369,369,369', -'369,369,369,369,369,,,371,,,,,369,,,,369,371,371,371,,371,,371,,371', -',371,371,371,371,371,371,371,371,371,371,371,371,371,371,,,372,,,,,371', -',,,371,372,372,372,,372,,372,,372,,372,372,372,372,372,372,372,372,372', -'372,372,372,372,372,,,373,,,,,372,,,,372,373,373,373,,373,,373,,373', -',373,373,373,373,373,373,373,373,373,373,373,373,373,373,,,379,,,,,373', -',,,373,379,379,379,,379,,379,,379,,379,379,379,379,379,379,379,379,379', -'379,379,379,379,379,,,395,,,,,379,,,,379,395,395,395,,395,,395,,395', -',395,395,395,395,395,395,395,395,395,395,395,395,395,395,,,398,,,,,395', -',,,395,398,398,398,,398,,398,,398,,398,398,398,398,398,398,398,398,398', -'398,398,398,398,398,,,399,,,,,398,,,,398,399,399,399,,399,,399,,399', -',399,399,399,399,399,399,399,399,399,399,399,399,399,399,,,,,,,,399', -',,,399' ] +',251,251,251,251,251,251,251,251,251,251,251,251,251,251,,,290,,,,,251', +',,,251,290,290,290,,290,,290,,290,,290,290,290,290,290,290,290,290,290', +'290,290,290,290,290,,,313,,,,,290,,,,290,313,313,313,,313,,313,,313', +',313,313,313,313,313,313,313,313,313,313,313,313,313,313,,,328,,,,,313', +',,,313,328,328,328,,328,,328,,328,,328,328,328,328,328,328,328,328,328', +'328,328,328,328,328,,,329,,,,,328,,,,328,329,329,329,,329,,329,,329', +',329,329,329,329,329,329,329,329,329,329,329,329,329,329,,,365,,,,,329', +',,,329,365,365,365,,365,,365,,365,,365,365,365,365,365,365,365,365,365', +'365,365,365,365,365,,,372,,,,,365,,,,365,372,372,372,,372,,372,,372', +',372,372,372,372,372,372,372,372,372,372,372,372,372,372,,,374,,,,,372', +',,,372,374,374,374,,374,,374,,374,,374,374,374,374,374,374,374,374,374', +'374,374,374,374,374,,,376,,,,,374,,,,374,376,376,376,,376,,376,,376', +',376,376,376,376,376,376,376,376,376,376,376,376,376,376,,,378,,,,,376', +',,,376,378,378,378,,378,,378,,378,,378,378,378,378,378,378,378,378,378', +'378,378,378,378,378,,,379,,,,,378,,,,378,379,379,379,,379,,379,,379', +',379,379,379,379,379,379,379,379,379,379,379,379,379,379,,,380,,,,,379', +',,,379,380,380,380,,380,,380,,380,,380,380,380,380,380,380,380,380,380', +'380,380,380,380,380,,,403,,,,,380,,,,380,403,403,403,,403,,403,,403', +',403,403,403,403,403,403,403,403,403,403,403,403,403,403,,,406,,,,,403', +',,,403,406,406,406,,406,,406,,406,,406,406,406,406,406,406,406,406,406', +'406,406,406,406,406,,,407,,,,,406,,,,406,407,407,407,,407,,407,,407', +',407,407,407,407,407,407,407,407,407,407,407,407,407,407,,,,,,,,407', +',,,407' ] racc_action_check = arr = ::Array.new(3044, nil) idx = 0 clist.each do |str| @@ -677,55 +677,55 @@ def initialize(input:, location:) end racc_action_pointer = [ - 173, 4, 1590, nil, nil, 6, 103, -42, nil, nil, + 130, 9, 1590, nil, nil, 16, 116, -33, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -4, 1626, 1662, 56, -6, nil, - 1140, 167, 84, nil, 316, 14, 140, nil, nil, nil, - 1698, 1734, nil, 1770, -27, nil, 121, 52, -2, 604, - nil, 101, nil, 1806, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 11, 1626, 1662, 64, 38, nil, + 1140, 238, 83, nil, 4, 76, 211, nil, nil, nil, + 1698, 1734, nil, 1770, -27, nil, 192, 123, -2, 604, + nil, 93, nil, 1806, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 125, nil, 119, - 152, 174, 1842, 188, 195, 197, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 196, nil, 190, + 229, 255, 1842, 268, 295, 308, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 238, 694, 224, 160, 237, nil, 71, - 308, 269, nil, 52, 298, 1878, nil, 302, 337, 333, - 320, 337, 347, 349, 366, 379, 408, 409, 416, 418, - 423, 450, 425, 1189, nil, 426, 425, nil, 426, nil, - 428, nil, nil, 429, 430, nil, 681, 1914, 1950, 1986, - 77, 455, 428, 428, 466, 1214, 2022, 2058, 2094, 165, + nil, nil, nil, 368, 694, 349, 160, 366, nil, 74, + 419, 374, nil, 148, 402, 1878, nil, 408, 426, 413, + 389, 390, 391, 406, 407, 408, 409, 416, 418, 423, + 424, 451, 426, 1189, nil, 427, 426, nil, 428, nil, + 429, nil, nil, 430, 431, nil, 681, 1914, 1950, 1986, + 109, 456, 429, 438, 477, 1214, 2022, 2058, 2094, 43, 2130, 2166, 2202, nil, nil, nil, nil, 3, 2238, 2274, - nil, 2310, nil, 89, nil, nil, 2346, nil, 202, nil, - 450, nil, nil, nil, nil, nil, 758, 835, 912, 1280, - 1346, 1321, 2382, 1344, 1453, 1456, 478, 989, 78, 2418, - nil, nil, 206, 208, 210, 232, 238, 243, 4, 9, - 10, 446, 503, 245, 278, 280, nil, 505, 2454, nil, - nil, nil, 465, nil, 1412, nil, nil, nil, 1459, nil, - nil, nil, nil, 493, 490, 463, 511, 517, 27, 518, - 534, 2490, nil, nil, 489, 1066, nil, 491, nil, 483, - 464, 501, 500, nil, 527, nil, nil, 303, nil, nil, - 38, 132, nil, 279, nil, nil, 52, 1506, 77, 2526, - -8, 1528, 528, nil, 470, 548, nil, nil, 1550, 514, - 1537, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 527, 528, 516, nil, 154, nil, nil, - nil, nil, nil, 168, nil, 2562, nil, nil, nil, 545, - 546, 550, 87, 88, 89, -62, -2, 2598, 2634, 572, - nil, 155, 527, 77, 156, 235, 565, 580, 581, nil, - 563, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 311, nil, nil, nil, nil, nil, nil, nil, 546, 306, - 340, 342, 565, nil, nil, 2670, 592, 2706, 597, 2742, - 598, 2778, 2814, 2850, 363, nil, nil, 377, nil, 2886, - 350, 573, 0, 352, 577, 374, 581, 156, 168, 185, - 456, 570, 591, 618, 380, 2922, nil, 632, 2958, 2994, - nil, nil, nil, 594, nil, 610, nil, nil, 599, 385, - nil, 387, 403, nil, 612, nil, nil, 527, 602, nil, - nil ] + nil, 2310, nil, 160, nil, nil, 2346, nil, 119, nil, + 451, nil, nil, nil, nil, nil, 758, 835, 912, 1280, + 1346, 1321, 2382, 1344, 1453, 1456, 479, 989, 143, 2418, + nil, nil, 202, 224, 230, 235, 253, 255, 9, 10, + 38, 450, 504, 270, 272, 274, nil, 509, 2454, nil, + nil, nil, 466, nil, 1412, nil, nil, nil, 1459, nil, + nil, nil, nil, 494, 491, 480, 517, 518, 231, 519, + 535, 2490, nil, nil, 490, 1066, nil, 492, nil, 484, + 466, 502, 40, nil, nil, 277, nil, nil, 69, 177, + nil, 249, nil, nil, 75, 501, nil, 528, -8, 1506, + 529, nil, 471, 558, nil, nil, 1528, 525, 1550, 80, + 2526, nil, nil, nil, nil, nil, 83, 1537, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + 528, 529, 520, 2562, nil, nil, nil, nil, nil, 178, + 98, -61, -2, 546, 550, 551, 109, 115, 2598, 2634, + 573, 200, nil, 565, nil, 561, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 277, nil, nil, nil, nil, + nil, nil, nil, 544, 69, 545, 148, 227, 306, 583, + 589, 303, 309, 566, nil, 2670, 329, nil, nil, 377, + nil, nil, 2706, 597, 2742, 598, 2778, 599, 2814, 2850, + 2886, 201, 456, 564, 568, 595, 316, 604, 70, 340, + 606, 342, 607, 227, 239, 344, nil, 594, nil, 610, + nil, nil, 599, 2922, nil, 640, 2958, 2994, nil, nil, + nil, 613, nil, nil, 527, 348, nil, 350, 352, 603, + nil, nil ] racc_action_default = [ -248, -248, -242, -6, -15, -248, -4, -157, -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, -176, -242, -242, -248, -80, -184, - -248, -248, -243, -245, -16, -4, -147, 421, -1, -5, + -248, -248, -243, -245, -16, -4, -147, 422, -1, -5, -242, -242, -183, -242, -185, -178, -247, -248, -242, -242, -182, -248, -204, -242, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, @@ -746,127 +746,129 @@ def initialize(input:, location:) -187, -189, -190, -191, -192, -194, -195, -196, -242, -242, -242, -248, -248, -154, -155, -156, -148, -248, -242, -207, -215, -210, -217, -213, -248, -220, -222, -226, -231, -227, - -228, -230, -82, -248, -248, -203, -137, -137, -242, -137, + -228, -230, -82, -248, -248, -203, -137, -137, -248, -137, -248, -242, -241, -150, -205, -242, -229, -248, -83, -19, - -145, -24, -30, -26, -29, -57, -239, -153, -216, -30, - -242, -248, -139, -142, -146, -30, -242, -16, -242, -242, - -16, -16, -20, -138, -145, -248, -143, -144, -16, -25, - -71, -23, -31, -32, -33, -34, -35, -36, -37, -38, - -39, -40, -41, -248, -248, -248, -27, -248, -56, -58, - -59, -60, -61, -71, -18, -242, -140, -141, -22, -42, - -42, -42, -242, -242, -242, -68, -248, -242, -242, -248, - -28, -248, -248, -248, -248, -248, -62, -64, -66, -69, - -248, -72, -86, -87, -88, -89, -90, -91, -92, -93, - -94, -97, -98, -99, -100, -101, -102, -103, -129, -248, - -53, -54, -248, -21, -43, -242, -50, -242, -50, -242, - -50, -242, -242, -242, -73, -95, -96, -248, -151, -242, - -44, -248, -248, -46, -248, -48, -248, -248, -248, -248, - -248, -248, -248, -248, -55, -242, -51, -248, -242, -242, - -63, -65, -67, -15, -84, -248, -74, -75, -248, -45, - -52, -47, -49, -70, -76, -77, -85, -248, -15, -152, - -78 ] + -145, -24, -242, -57, -239, -153, -216, -30, -242, -248, + -139, -142, -146, -30, -242, -30, -26, -29, -16, -16, + -20, -138, -145, -248, -143, -144, -16, -25, -16, -242, + -242, -56, -58, -59, -60, -61, -71, -71, -18, -31, + -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, + -248, -248, -248, -242, -140, -141, -22, -23, -27, -248, + -242, -68, -248, -42, -42, -42, -242, -242, -242, -242, + -248, -248, -28, -62, -69, -248, -72, -86, -87, -88, + -89, -90, -91, -92, -93, -94, -97, -98, -99, -100, + -101, -102, -103, -129, -248, -248, -248, -248, -248, -64, + -66, -53, -54, -248, -21, -242, -73, -95, -96, -248, + -151, -43, -242, -50, -242, -50, -242, -50, -242, -242, + -242, -248, -248, -248, -248, -248, -44, -248, -248, -46, + -248, -48, -248, -248, -248, -55, -63, -15, -84, -248, + -74, -75, -248, -242, -51, -248, -242, -242, -65, -67, + -70, -76, -77, -85, -248, -45, -52, -47, -49, -15, + -152, -78 ] racc_goto_table = [ - 6, 93, 127, 46, 92, 116, 163, 88, 114, 191, - 50, 202, 206, 129, 38, 230, 124, 233, 264, 128, - 272, 123, 359, 262, 47, 232, 232, 1, 277, 366, - 368, 370, 235, 236, 413, 281, 34, 35, 121, 122, - 106, 288, 105, 118, 316, 269, 264, 143, 264, 420, - 381, 289, 384, 275, 386, 378, 306, 164, 259, 261, - 244, 265, 218, 219, 220, 310, 311, 237, 312, 239, - 240, 241, 249, 393, 268, 333, 334, 335, 280, 309, - 340, 390, 403, 232, 119, 162, 405, 173, 271, 202, - 169, 285, 336, 337, 338, 183, 221, 87, 231, 100, - nil, 182, nil, nil, 256, nil, nil, nil, nil, nil, - nil, nil, nil, 419, nil, nil, nil, nil, nil, nil, + 6, 46, 116, 127, 93, 163, 114, 92, 88, 191, + 50, 202, 206, 129, 354, 277, 128, 124, 230, 123, + 233, 410, 270, 38, 47, 232, 232, 277, 275, 279, + 387, 1, 390, 34, 392, 286, 35, 288, 121, 122, + 287, 106, 277, 421, 314, 267, 370, 143, 373, 375, + 377, 105, 118, 259, 261, 273, 263, 318, 164, 293, + 244, 385, 218, 219, 220, 235, 236, 237, 294, 239, + 240, 241, 295, 333, 399, 249, 278, 266, 292, 359, + 360, 335, 382, 232, 397, 173, 356, 357, 358, 202, + 169, 119, 162, 269, 283, 183, 221, 87, 231, 100, + nil, 182, nil, nil, 256, nil, 420, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 188, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 93, nil, nil, 92, - nil, nil, 211, nil, nil, nil, nil, nil, 222, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 93, + nil, nil, 92, 211, nil, 222, nil, nil, nil, nil, nil, nil, nil, nil, 201, 203, 204, 205, nil, nil, - 229, nil, 245, nil, 212, 213, 214, nil, 215, 216, - 217, 243, 246, 247, nil, nil, 223, 224, nil, 225, - nil, 254, nil, nil, 188, nil, nil, nil, nil, 128, - 128, 250, nil, nil, 143, 143, 143, nil, nil, nil, + 229, 245, nil, nil, 212, 213, 214, nil, 215, 216, + 217, 243, nil, 246, 247, nil, 223, 224, nil, 225, + 254, nil, nil, nil, 188, nil, 128, 248, 250, nil, + nil, nil, nil, nil, 143, 143, 143, nil, nil, nil, 238, nil, nil, nil, nil, 143, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 282, nil, nil, nil, nil, nil, + nil, nil, nil, 280, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 128, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 116, nil, 265, + 296, nil, nil, 143, 116, nil, 116, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 319, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 128, nil, nil, nil, nil, nil, nil, 116, 267, - nil, nil, 116, 143, 313, nil, nil, 307, nil, 116, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 331, + nil, nil, nil, nil, nil, nil, 352, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 361, 362, 352, nil, + 352, 352, 352, 372, 374, 376, nil, nil, nil, nil, + nil, 381, nil, 352, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 393, 394, 352, nil, nil, 398, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 331, nil, nil, nil, 357, nil, nil, - nil, nil, nil, nil, 357, 357, 357, 365, 367, 369, + 386, nil, 389, nil, 391, nil, nil, nil, 395, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 352, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 360, 361, nil, nil, nil, - 357, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 357, 387, - 388, 389, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 357, nil, 380, 404, 383, nil, 385, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 394, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 357, nil, - nil, nil, nil, 409, nil, nil, 411, 412 ] + nil, 415, nil, nil, 417, 418 ] racc_goto_check = [ - 2, 52, 16, 20, 34, 59, 60, 64, 15, 76, - 46, 65, 50, 48, 3, 71, 61, 71, 24, 59, - 54, 20, 35, 22, 2, 66, 66, 1, 19, 35, - 35, 35, 72, 72, 44, 19, 4, 5, 2, 2, - 6, 19, 3, 3, 54, 18, 24, 2, 24, 44, - 36, 22, 36, 21, 36, 35, 23, 61, 17, 17, - 50, 17, 13, 13, 13, 26, 27, 76, 32, 76, - 76, 76, 37, 35, 71, 33, 33, 33, 38, 39, - 40, 42, 43, 66, 45, 49, 35, 15, 53, 65, - 2, 56, 24, 24, 24, 57, 58, 63, 67, 77, - nil, 46, nil, nil, 76, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, + 2, 20, 22, 16, 53, 60, 15, 35, 64, 76, + 47, 65, 51, 49, 36, 25, 22, 61, 71, 20, + 71, 45, 55, 3, 2, 66, 66, 25, 23, 19, + 37, 1, 37, 4, 37, 19, 5, 19, 2, 2, + 23, 6, 25, 45, 55, 18, 36, 2, 36, 36, + 36, 3, 3, 17, 17, 21, 17, 24, 61, 27, + 51, 36, 13, 13, 13, 72, 72, 76, 28, 76, + 76, 76, 33, 25, 36, 38, 39, 71, 40, 25, + 25, 41, 43, 66, 44, 15, 34, 34, 34, 65, + 2, 46, 50, 54, 57, 58, 59, 63, 67, 77, + nil, 47, nil, nil, 76, nil, 36, nil, nil, 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, nil, 52, nil, nil, 34, - nil, nil, 64, nil, nil, nil, nil, nil, 59, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 53, + nil, nil, 35, 64, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, 2, 2, 2, 2, nil, nil, - 48, nil, 60, nil, 2, 2, 2, nil, 2, 2, - 2, 48, 16, 16, nil, nil, 2, 2, nil, 2, - nil, 60, nil, nil, 2, nil, nil, nil, nil, 59, - 59, 59, nil, nil, 2, 2, 2, nil, nil, nil, + 49, 60, nil, nil, 2, 2, 2, nil, 2, 2, + 2, 49, nil, 16, 16, nil, 2, 2, nil, 2, + 60, nil, nil, nil, 2, nil, 22, 22, 22, nil, + nil, nil, nil, nil, 2, 2, 2, nil, nil, nil, 2, nil, nil, nil, nil, 2, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 16, nil, nil, nil, nil, nil, + nil, nil, nil, 16, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 22, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 22, nil, 2, + 15, nil, nil, 2, 22, nil, 22, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 59, nil, nil, nil, nil, nil, nil, 59, 2, - nil, nil, 59, 2, 15, nil, nil, 20, nil, 59, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 20, + nil, nil, nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 2, 2, 53, nil, + 53, 53, 53, 35, 35, 35, nil, nil, nil, nil, + nil, 20, nil, 53, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 20, 20, 53, nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, 52, nil, nil, - nil, nil, nil, nil, 52, 52, 52, 34, 34, 34, + 2, nil, 2, nil, 2, nil, nil, nil, 2, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 2, 2, nil, nil, nil, - 52, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 52, 20, - 20, 20, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 52, nil, 2, 34, 2, nil, 2, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 52, nil, - nil, nil, nil, 2, nil, nil, 2, 2 ] + nil, 2, nil, nil, 2, 2 ] racc_goto_pointer = [ - nil, 27, -2, 8, 33, 33, 6, nil, nil, nil, - nil, nil, nil, -112, nil, -26, -46, -188, -214, -234, - -22, -208, -225, -222, -230, nil, -215, -214, nil, nil, - nil, nil, -212, -244, -26, -304, -316, -148, -187, -201, - -245, nil, -293, -308, -369, 48, -18, nil, -36, 34, - -148, nil, -29, -172, -240, nil, -182, -25, -81, -29, - -47, -30, nil, 67, -23, -145, -172, -99, nil, nil, - nil, -181, -167, nil, nil, nil, -134, 68 ] + nil, 31, -2, 17, 30, 32, 7, nil, nil, nil, + nil, nil, nil, -112, nil, -28, -45, -193, -214, -238, + -24, -206, -32, -234, -232, -247, nil, -219, -210, nil, + nil, nil, nil, -206, -237, -23, -308, -343, -145, -187, + -200, -240, nil, -284, -298, -376, 55, -18, nil, -36, + 41, -148, nil, -26, -167, -238, nil, -177, -25, -81, + -48, -29, nil, 67, -22, -145, -172, -99, nil, nil, + nil, -178, -134, nil, nil, nil, -134, 68 ] racc_goto_default = [ - nil, nil, 44, nil, nil, 414, 302, 107, 108, 109, - 110, 111, 112, nil, 36, 290, 115, nil, nil, nil, - nil, nil, nil, 263, 24, 292, 293, 294, 295, 296, - 297, 298, 301, nil, 144, nil, nil, nil, nil, nil, - nil, 325, nil, nil, nil, nil, nil, 51, nil, nil, - 52, 350, 145, nil, nil, 273, nil, nil, nil, 31, + nil, nil, 44, nil, nil, 411, 309, 107, 108, 109, + 110, 111, 112, nil, 36, 297, 115, nil, nil, nil, + nil, nil, 31, nil, 276, 24, 299, 300, 301, 302, + 303, 304, 305, 308, nil, 144, nil, nil, nil, nil, + nil, nil, 321, nil, nil, nil, nil, nil, 51, nil, + nil, 52, 345, 145, nil, nil, 271, nil, nil, nil, 7, nil, 29, nil, nil, 158, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, nil, nil ] @@ -894,136 +896,136 @@ def initialize(input:, location:) 2, 99, :_reduce_20, 5, 99, :_reduce_21, 8, 92, :_reduce_22, - 7, 92, :_reduce_23, + 8, 92, :_reduce_23, 0, 102, :_reduce_24, 2, 102, :_reduce_25, - 1, 103, :_reduce_26, - 3, 103, :_reduce_27, - 4, 104, :_reduce_28, - 1, 104, :_reduce_29, + 1, 104, :_reduce_26, + 3, 104, :_reduce_27, + 4, 105, :_reduce_28, + 1, 105, :_reduce_29, 0, 100, :_reduce_30, 2, 100, :_reduce_31, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_38, - 1, 106, :_reduce_39, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 0, 114, :_reduce_42, - 2, 114, :_reduce_43, - 5, 112, :_reduce_44, - 7, 112, :_reduce_45, - 5, 112, :_reduce_46, - 7, 112, :_reduce_47, - 5, 112, :_reduce_48, - 7, 112, :_reduce_49, - 0, 117, :_reduce_50, - 2, 117, :_reduce_51, - 3, 117, :_reduce_52, - 3, 111, :_reduce_53, - 3, 111, :_reduce_54, - 5, 111, :_reduce_55, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_38, + 1, 107, :_reduce_39, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 0, 115, :_reduce_42, + 2, 115, :_reduce_43, + 5, 113, :_reduce_44, + 7, 113, :_reduce_45, + 5, 113, :_reduce_46, + 7, 113, :_reduce_47, + 5, 113, :_reduce_48, + 7, 113, :_reduce_49, + 0, 118, :_reduce_50, + 2, 118, :_reduce_51, + 3, 118, :_reduce_52, + 3, 112, :_reduce_53, + 3, 112, :_reduce_54, + 5, 112, :_reduce_55, 7, 91, :_reduce_56, - 0, 119, :_reduce_57, - 2, 119, :_reduce_58, - 1, 120, :_reduce_59, - 1, 120, :_reduce_60, - 1, 120, :_reduce_none, - 3, 108, :_reduce_62, - 6, 108, :_reduce_63, - 3, 109, :_reduce_64, - 6, 109, :_reduce_65, - 3, 110, :_reduce_66, - 6, 110, :_reduce_67, - 0, 121, :_reduce_68, - 1, 121, :_reduce_69, - 7, 107, :_reduce_70, - 0, 122, :_reduce_none, - 2, 122, :_reduce_72, - 0, 123, :_reduce_73, - 2, 123, :_reduce_74, - 2, 123, :_reduce_75, - 1, 125, :_reduce_76, - 1, 125, :_reduce_77, - 3, 125, :_reduce_78, + 0, 120, :_reduce_57, + 2, 120, :_reduce_58, + 1, 121, :_reduce_59, + 1, 121, :_reduce_60, + 1, 121, :_reduce_none, + 3, 109, :_reduce_62, + 6, 109, :_reduce_63, + 3, 110, :_reduce_64, + 6, 110, :_reduce_65, + 3, 111, :_reduce_66, + 6, 111, :_reduce_67, + 0, 122, :_reduce_68, + 1, 122, :_reduce_69, + 7, 108, :_reduce_70, + 0, 123, :_reduce_none, + 2, 123, :_reduce_72, + 0, 124, :_reduce_73, + 2, 124, :_reduce_74, + 2, 124, :_reduce_75, + 1, 126, :_reduce_76, + 1, 126, :_reduce_77, + 3, 126, :_reduce_78, 3, 86, :_reduce_79, - 0, 128, :_reduce_80, - 3, 128, :_reduce_81, - 3, 130, :_reduce_82, - 4, 130, :_reduce_83, - 1, 124, :_reduce_none, - 2, 124, :_reduce_85, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 2, 116, :_reduce_95, - 2, 116, :_reduce_96, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 132, :_reduce_none, - 1, 132, :_reduce_none, - 1, 132, :_reduce_none, - 1, 132, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, + 0, 129, :_reduce_80, + 3, 129, :_reduce_81, + 3, 131, :_reduce_82, + 4, 131, :_reduce_83, + 1, 125, :_reduce_none, + 2, 125, :_reduce_85, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 2, 117, :_reduce_95, + 2, 117, :_reduce_96, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, 1, 133, :_reduce_none, 1, 133, :_reduce_none, 1, 133, :_reduce_none, 1, 133, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, + 1, 134, :_reduce_none, 0, 98, :_reduce_137, 3, 98, :_reduce_138, - 1, 134, :_reduce_139, - 3, 134, :_reduce_140, - 3, 135, :_reduce_141, - 0, 137, :_reduce_142, - 1, 137, :_reduce_143, - 1, 137, :_reduce_144, - 0, 136, :_reduce_145, - 1, 136, :_reduce_146, - 0, 126, :_reduce_147, - 3, 126, :_reduce_148, - 1, 138, :_reduce_149, - 3, 138, :_reduce_150, - 4, 113, :_reduce_151, - 8, 113, :_reduce_152, + 1, 135, :_reduce_139, + 3, 135, :_reduce_140, + 3, 136, :_reduce_141, + 0, 138, :_reduce_142, + 1, 138, :_reduce_143, + 1, 138, :_reduce_144, + 0, 137, :_reduce_145, + 1, 137, :_reduce_146, + 0, 127, :_reduce_147, + 3, 127, :_reduce_148, + 1, 139, :_reduce_149, + 3, 139, :_reduce_150, + 4, 114, :_reduce_151, + 8, 114, :_reduce_152, 5, 88, :_reduce_153, 3, 89, :_reduce_154, 3, 89, :_reduce_155, @@ -1070,17 +1072,17 @@ def initialize(input:, location:) 3, 145, :_reduce_196, 1, 146, :_reduce_none, 2, 146, :_reduce_198, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 4, 127, :_reduce_203, - 1, 127, :_reduce_204, - 5, 131, :_reduce_205, - 2, 131, :_reduce_206, - 3, 129, :_reduce_207, - 1, 129, :_reduce_208, - 1, 129, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 4, 128, :_reduce_203, + 1, 128, :_reduce_204, + 5, 132, :_reduce_205, + 2, 132, :_reduce_206, + 3, 130, :_reduce_207, + 1, 130, :_reduce_208, + 1, 130, :_reduce_none, 3, 148, :_reduce_210, 1, 148, :_reduce_211, 1, 148, :_reduce_none, @@ -1106,23 +1108,23 @@ def initialize(input:, location:) 1, 157, :_reduce_none, 1, 157, :_reduce_none, 1, 157, :_reduce_none, - 2, 105, :_reduce_235, + 2, 106, :_reduce_235, 1, 158, :_reduce_none, 1, 158, :_reduce_none, 1, 158, :_reduce_none, - 2, 118, :_reduce_239, + 2, 119, :_reduce_239, 2, 97, :_reduce_240, - 2, 139, :_reduce_241, - 0, 140, :_reduce_242, - 1, 140, :_reduce_243, - 2, 140, :_reduce_244, - 1, 140, :_reduce_245, + 2, 140, :_reduce_241, + 0, 103, :_reduce_242, + 1, 103, :_reduce_243, + 2, 103, :_reduce_244, + 1, 103, :_reduce_245, 1, 142, :_reduce_none, 0, 142, :_reduce_none ] racc_reduce_n = 248 -racc_shift_n = 421 +racc_shift_n = 422 racc_token_table = { false => 0, @@ -1331,6 +1333,7 @@ def initialize(input:, location:) "class_members", "type_list", "colon_module_self_types", + "namespace", "module_self_types", "module_self_type", "qualified_name", @@ -1368,7 +1371,6 @@ def initialize(input:, location:) "type_param_variance", "type_params0", "type_alias_name", - "namespace", "simple_type", "comma_opt", "record_type", @@ -1547,12 +1549,12 @@ def _reduce_22(val, _values, result) def _reduce_23(val, _values, result) reset_variable_scope - location = val[1].location + val[6].location + location = val[1].location + val[7].location result = Declarations::Module.new( - name: val[3].value, + name: RBS::TypeName.new(name: val[4].value, namespace: val[3]&.value || RBS::Namespace.empty), type_params: Declarations::ModuleTypeParams.empty, - self_types: val[4], - members: val[5], + self_types: val[5], + members: val[6], annotations: val[0], location: location, comment: leading_comment(val[0].first&.location || location) diff --git a/lib/rbs/parser.y b/lib/rbs/parser.y index 5b63c4b8a..d06005d02 100644 --- a/lib/rbs/parser.y +++ b/lib/rbs/parser.y @@ -104,15 +104,15 @@ rule comment: leading_comment(val[0].first&.location || location) ) } - | annotations kMODULE start_new_scope tUKEYWORD module_self_types class_members kEND { + | annotations kMODULE start_new_scope namespace tUKEYWORD module_self_types class_members kEND { reset_variable_scope - location = val[1].location + val[6].location + location = val[1].location + val[7].location result = Declarations::Module.new( - name: val[3].value, + name: RBS::TypeName.new(name: val[4].value, namespace: val[3]&.value || RBS::Namespace.empty), type_params: Declarations::ModuleTypeParams.empty, - self_types: val[4], - members: val[5], + self_types: val[5], + members: val[6], annotations: val[0], location: location, comment: leading_comment(val[0].first&.location || location) diff --git a/test/rbs/signature_parsing_test.rb b/test/rbs/signature_parsing_test.rb index 448c0d454..15c88446b 100644 --- a/test/rbs/signature_parsing_test.rb +++ b/test/rbs/signature_parsing_test.rb @@ -1160,4 +1160,29 @@ def test_empty assert_empty decls end end + + def test_module_self_syntax + Parser.parse_signature(<