From 99c4c25dc8a931a3529c16a2a583741764841aa5 Mon Sep 17 00:00:00 2001 From: Masataka Pocke Kuwabara Date: Sun, 8 Nov 2020 15:54:24 +0900 Subject: [PATCH] Improve parsing error on EOF --- lib/rbs/parser.rb | 586 ++++++++++++++--------------- lib/rbs/parser.y | 4 +- test/rbs/signature_parsing_test.rb | 11 + 3 files changed, 305 insertions(+), 296 deletions(-) diff --git a/lib/rbs/parser.rb b/lib/rbs/parser.rb index 9fc6e9d86..1ed04f770 100644 --- a/lib/rbs/parser.rb +++ b/lib/rbs/parser.rb @@ -262,10 +262,10 @@ def next_token return [:"type_#{type}", nil] end - return if @eof + return new_token(false, '') if @eof while true - return if input.eos? + return new_token(false, '') if input.eos? case when input.scan(/\s+/) @@ -376,118 +376,118 @@ def initialize(message, subject:, location:) ##### State transition tables begin ### clist = [ -'341,342,33,343,406,76,5,33,33,380,354,37,50,33,33,340,42,379,352,2,3', -'4,209,210,211,212,213,214,215,216,220,33,217,208,218,219,104,115,105', -'106,107,121,33,32,51,336,330,331,32,32,334,332,335,301,32,32,33,333', -'120,108,109,110,112,114,113,329,338,339,111,116,118,196,32,199,87,122', -'123,119,124,341,342,33,343,32,58,59,60,61,279,280,43,33,33,33,340,231', -'50,32,200,88,197,209,210,211,212,213,214,215,216,220,361,217,208,218', -'219,104,115,105,106,107,121,33,32,48,336,330,331,50,51,334,332,335,32', -'32,32,88,333,120,108,109,110,112,114,113,329,338,339,111,116,118,341', -'342,320,343,122,123,119,124,66,51,158,39,32,40,41,340,157,83,324,395', -'89,316,209,210,211,212,213,214,215,216,355,276,217,208,218,219,104,115', -'105,106,107,121,39,88,88,336,330,331,40,41,334,332,335,40,41,144,277', -'333,120,108,109,110,112,114,113,329,338,339,111,116,118,164,397,396', -'145,122,123,119,124,341,342,146,343,147,58,59,60,61,63,64,148,65,272', -'273,340,76,88,88,88,40,41,209,210,211,212,213,214,215,216,220,156,217', -'208,218,219,104,115,105,106,107,121,40,41,159,336,330,331,40,41,334', -'332,335,40,41,387,388,333,120,108,109,110,112,114,113,329,338,339,111', -'116,118,341,342,161,343,122,123,119,124,163,58,59,60,61,40,41,340,55', -'54,56,40,41,41,209,210,211,212,213,214,215,216,220,166,217,208,218,219', -'104,115,105,106,107,121,40,41,158,336,330,331,40,41,334,332,335,40,41', -'40,41,333,120,108,109,110,112,114,113,329,338,339,111,116,118,40,41', -'40,41,122,123,119,124,341,342,-107,343,-108,58,59,60,61,58,59,60,61', -'40,41,340,55,54,56,40,41,-109,209,210,211,212,213,214,215,216,220,-110', -'217,208,218,219,104,115,105,106,107,121,40,41,-111,336,330,331,40,41', -'334,332,335,365,366,40,41,333,120,108,109,110,112,114,113,329,338,339', -'111,116,118,341,342,-112,343,122,123,119,124,40,41,-113,-114,-115,-116', -'-117,340,48,-132,171,172,173,174,209,210,211,212,213,214,215,216,220', -'175,217,208,218,219,104,115,105,106,107,121,176,177,42,336,330,331,201', -'234,334,332,335,235,237,238,239,333,120,108,109,110,112,114,113,329', -'338,339,111,116,118,241,83,245,245,122,123,119,124,341,342,245,343,251', -'58,59,60,61,254,42,257,259,263,265,340,267,268,42,270,307,309,209,210', -'211,212,213,214,215,216,220,263,217,208,218,219,104,115,105,106,107', -'121,311,267,321,336,330,331,322,323,334,332,335,359,364,364,364,333', -'120,108,109,110,112,114,113,329,338,339,111,116,118,371,372,373,374', -'122,123,119,124,33,375,377,58,59,60,61,378,381,382,22,23,21,392,26,-217', -'25,401,30,402,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104,115', -'105,106,107,121,403,32,406,407,408,28,409,139,,140,142,,,,,,120,108', -'109,110,112,114,113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60', -'61,,,,22,23,21,,26,,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102', -'103,104,115,105,106,107,121,,32,,,,28,,,,,,,,,,,120,108,109,110,112', -'114,113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23', -'21,,26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', -'115,105,106,107,121,,32,,,,28,,207,,,142,,,,,,120,108,109,110,112,114', -'113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23,21', -',26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', -'115,105,106,107,121,,32,,,,28,,207,,,142,,,,,,120,108,109,110,112,114', +'341,342,33,343,5,58,59,60,61,37,354,380,33,33,33,340,42,50,352,379,40', +'41,209,210,211,212,213,214,215,216,220,33,217,208,218,219,104,115,105', +'106,107,121,76,32,196,336,330,331,33,51,334,332,335,32,32,32,33,333', +'120,108,109,110,112,114,113,329,338,339,111,116,118,43,32,197,48,122', +'123,119,124,341,342,33,343,66,58,59,60,61,39,32,301,33,33,33,340,231', +'50,32,40,41,83,209,210,211,212,213,214,215,216,220,33,217,208,218,219', +'104,115,105,106,107,121,33,32,144,336,330,331,39,51,334,332,335,32,32', +'32,50,333,120,108,109,110,112,114,113,329,338,339,111,116,118,89,32', +'87,320,122,123,119,124,341,342,145,343,32,58,59,60,61,51,158,2,3,4,316', +'340,157,164,199,88,40,41,209,210,211,212,213,214,215,216,220,276,217', +'208,218,219,104,115,105,106,107,121,88,200,146,336,330,331,324,147,334', +'332,335,40,41,361,277,333,120,108,109,110,112,114,113,329,338,339,111', +'116,118,341,342,88,343,122,123,119,124,-4,88,-239,148,33,76,80,340,-239', +'395,396,397,156,76,209,210,211,212,213,214,215,216,355,159,217,208,218', +'219,104,115,105,106,107,121,88,88,88,336,330,331,40,41,334,332,335,32', +'40,41,161,333,120,108,109,110,112,114,113,329,338,339,111,116,118,341', +'342,163,343,122,123,119,124,41,58,59,60,61,39,166,340,55,54,56,40,41', +'158,209,210,211,212,213,214,215,216,220,-107,217,208,218,219,104,115', +'105,106,107,121,40,41,-108,336,330,331,40,41,334,332,335,63,64,-109', +'65,333,120,108,109,110,112,114,113,329,338,339,111,116,118,341,342,-110', +'343,122,123,119,124,-111,58,59,60,61,40,41,340,55,54,56,40,41,-112,209', +'210,211,212,213,214,215,216,220,-113,217,208,218,219,104,115,105,106', +'107,121,40,41,-114,336,330,331,272,273,334,332,335,279,280,365,366,333', +'120,108,109,110,112,114,113,329,338,339,111,116,118,40,41,40,41,122', +'123,119,124,341,342,-115,343,-116,58,59,60,61,40,41,40,41,40,41,340', +'387,388,40,41,40,41,209,210,211,212,213,214,215,216,220,-117,217,208', +'218,219,104,115,105,106,107,121,40,41,48,336,330,331,40,41,334,332,335', +'-132,171,172,173,333,120,108,109,110,112,114,113,329,338,339,111,116', +'118,341,342,174,343,122,123,119,124,175,176,177,42,201,234,235,340,237', +'238,239,241,83,245,209,210,211,212,213,214,215,216,220,245,217,208,218', +'219,104,115,105,106,107,121,245,251,254,336,330,331,42,257,334,332,335', +'259,263,265,267,333,120,108,109,110,112,114,113,329,338,339,111,116', +'118,268,42,270,307,122,123,119,124,33,309,263,58,59,60,61,311,267,321', +'22,23,21,322,26,-217,25,323,30,359,93,94,95,96,97,98,99,100,117,16,101', +'92,102,103,104,115,105,106,107,121,364,32,364,364,371,28,372,139,373', +'140,142,374,375,377,378,381,120,108,109,110,112,114,113,382,392,401', +'111,116,118,402,403,406,407,122,123,119,124,33,408,409,58,59,60,61,406', +',,22,23,21,,26,,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103', +'104,115,105,106,107,121,,32,,,,28,,,,,,,,,,,120,108,109,110,112,114', '113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23,21', ',26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', '115,105,106,107,121,,32,,,,28,,139,,140,142,,,,,,120,108,109,110,112', '114,113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23', '21,,26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', -'115,105,106,107,121,-4,32,-239,,33,28,80,139,-239,140,142,,,76,,,120', -'108,109,110,112,114,113,,,,111,116,118,,,,,122,123,119,124,,,,,,,,,32', -',,,,,,,,,,168,33,169,,58,59,60,61,,,,22,23,21,,26,-217,25,,30,39,93', -'94,95,96,97,98,99,100,117,16,101,92,102,103,104,115,105,106,107,121', -'168,32,169,40,41,28,,139,,140,142,,,,,,120,108,109,110,112,114,113,', -',170,111,116,118,58,59,60,61,122,123,119,124,,,,,,,,40,41,209,210,211', -'212,213,214,215,216,220,,217,208,218,219,104,115,105,106,107,121,170', -',,,,,,207,,,142,,,,,,120,108,109,110,112,114,113,168,,169,111,116,118', -'58,59,60,61,122,123,119,124,,,,,,,,,,209,210,211,212,213,214,215,216', -'220,,217,208,218,219,104,115,105,106,107,121,,40,41,,,,,207,,,142,,', -',,,120,108,109,110,112,114,113,170,,,111,116,118,58,59,60,61,122,123', -'119,124,,,,,,,,,,209,210,211,212,213,214,215,216,220,,217,208,218,219', -'104,115,105,106,107,121,168,,169,168,152,169,168,155,169,153,,,,,,,120', -'108,109,110,112,114,113,,,,111,116,118,154,,,,122,123,119,124,,,,151', -',,,40,41,,40,41,,40,41,-239,,33,,80,,-239,,,296,297,76,,,170,,,170,', -',170,,-239,,33,,80,,-239,,298,296,297,76,,,,,,293,292,,,32,-239,,33', -',80,,-239,,298,296,297,76,,,,284,,293,292,,,32,-239,,33,,80,,-239,,298', -'296,297,76,,,,312,,293,292,,,32,,,,,,,,,298,,,,,,,360,,293,292,,33,32', -',,,,,,,,22,23,21,,26,,25,308,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,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,,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,152,,,155', -',153,,32,320,,,28,,,,,,,,,,,,,,154,,316,317,313,314,315,,,,318,151' ] - racc_action_table = arr = ::Array.new(2819, nil) +'115,105,106,107,121,,32,,,,28,,139,,140,142,,,,,,120,108,109,110,112', +'114,113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23', +'21,,26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', +'115,105,106,107,121,,32,,,,28,,139,,140,142,,,,,,120,108,109,110,112', +'114,113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23', +'21,,26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', +'115,105,106,107,121,,32,,,,28,,207,,,142,,,,,,120,108,109,110,112,114', +'113,,,,111,116,118,,,,,122,123,119,124,33,,,58,59,60,61,,,,22,23,21', +',26,-217,25,,30,,93,94,95,96,97,98,99,100,117,16,101,92,102,103,104', +'115,105,106,107,121,168,32,169,,,28,,207,,,142,,,,,,120,108,109,110', +'112,114,113,168,,169,111,116,118,58,59,60,61,122,123,119,124,,,,,,,', +'40,41,209,210,211,212,213,214,215,216,220,,217,208,218,219,104,115,105', +'106,107,121,170,40,41,,,,,207,,,142,,,,,,120,108,109,110,112,114,113', +'170,,,111,116,118,58,59,60,61,122,123,119,124,,,,,,,,,,209,210,211,212', +'213,214,215,216,220,,217,208,218,219,104,115,105,106,107,121,168,,169', +',,,,207,,,142,,,,,,120,108,109,110,112,114,113,168,,169,111,116,118', +'58,59,60,61,122,123,119,124,,,,,,,,40,41,209,210,211,212,213,214,215', +'216,220,,217,208,218,219,104,115,105,106,107,121,170,40,41,168,152,169', +'168,155,169,153,,,,,,,120,108,109,110,112,114,113,170,,,111,116,118', +'154,,,,122,123,119,124,,,,151,,,,,,,40,41,,40,41,-239,,33,,80,,-239', +',,296,297,76,-239,,33,,80,170,-239,,170,296,297,76,,,,-239,,33,298,80', +',-239,,,296,297,76,293,292,,298,32,,,,,,,,293,292,,-239,32,33,298,80', +'284,-239,,,296,297,76,293,292,,,32,308,,,,,,,,,,,,,298,,312,,,,,,,293', +'292,,33,32,,,,,,,,,22,23,21,,26,,25,360,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,,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,152,,,155,,153,,32,320,,,28,,,,,,,,,,,,,,154,,316,317,313,314', +'315,,,,318,151' ] + racc_action_table = arr = ::Array.new(2779, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -497,131 +497,129 @@ def initialize(message, subject:, location:) end clist = [ -'375,375,317,375,409,269,1,259,267,364,319,5,28,265,231,375,7,364,319', -'0,0,0,375,375,375,375,375,375,375,375,375,318,375,375,375,375,375,375', -'375,375,375,375,316,317,28,375,375,375,259,267,375,375,375,269,265,231', -'190,375,375,375,375,375,375,375,375,375,375,375,375,375,375,160,318', -'162,46,375,375,375,375,314,314,188,314,316,314,314,314,314,262,262,24', -'189,187,48,314,189,196,190,162,46,160,314,314,314,314,314,314,314,314', -'314,326,314,314,314,314,314,314,314,314,314,314,155,188,27,314,314,314', -'237,196,314,314,314,189,187,48,326,314,314,314,314,314,314,314,314,314', -'314,314,314,314,314,320,320,306,320,314,314,314,314,32,237,79,35,155', -'6,6,320,79,36,300,383,47,306,320,320,320,320,320,320,320,320,320,260', -'320,320,320,320,320,320,320,320,320,320,6,300,383,320,320,320,47,47', -'320,320,320,252,252,52,260,320,320,320,320,320,320,320,320,320,320,320', -'320,320,320,86,385,384,53,320,320,320,320,386,386,54,386,55,386,386', -'386,386,31,31,56,31,257,257,386,76,86,385,384,149,149,386,386,386,386', -'386,386,386,386,386,78,386,386,386,386,386,386,386,386,386,386,391,391', -'80,386,386,386,393,393,386,386,386,394,394,374,374,386,386,386,386,386', -'386,386,386,386,386,386,386,386,386,408,408,82,408,386,386,386,386,83', -'30,30,30,30,369,369,408,30,30,30,367,367,84,408,408,408,408,408,408', -'408,408,408,90,408,408,408,408,408,408,408,408,408,408,184,184,91,408', -'408,408,185,185,408,408,408,186,186,362,362,408,408,408,408,408,408', -'408,408,408,408,408,408,408,408,165,165,358,358,408,408,408,408,315', -'315,92,315,93,315,315,315,315,145,145,145,145,192,192,315,145,145,145', -'193,193,94,315,315,315,315,315,315,315,315,315,95,315,315,315,315,315', -'315,315,315,315,315,194,194,96,315,315,315,357,357,315,315,315,337,337', -'390,390,315,315,315,315,315,315,315,315,315,315,315,315,315,315,356', -'356,97,356,315,315,315,315,44,44,98,99,100,101,102,356,103,117,127,128', -'129,131,356,356,356,356,356,356,356,356,356,133,356,356,356,356,356', -'356,356,356,356,356,136,137,143,356,356,356,172,191,356,356,356,195', -'197,198,200,356,356,356,356,356,356,356,356,356,356,356,356,356,356', -'205,228,229,230,356,356,356,356,313,313,232,313,233,313,313,313,313', -'236,240,243,244,245,246,313,247,249,253,255,271,275,313,313,313,313', -'313,313,313,313,313,277,313,313,313,313,313,313,313,313,313,313,278', -'282,296,313,313,313,297,298,313,313,313,323,328,346,348,313,313,313', -'313,313,313,313,313,313,313,313,313,313,313,349,350,351,353,313,313', -'313,313,174,355,359,174,174,174,174,363,368,370,174,174,174,380,174', -'174,174,387,174,388,174,174,174,174,174,174,174,174,174,174,174,174', -'174,174,174,174,174,174,174,174,389,174,398,400,403,174,405,174,,174', -'174,,,,,,174,174,174,174,174,174,174,,,,174,174,174,,,,,174,174,174', -'174,139,,,139,139,139,139,,,,139,139,139,,139,,139,,139,,139,139,139', -'139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139', -',139,,,,139,,,,,,,,,,,139,139,139,139,139,139,139,,,,139,139,139,,,', -',139,139,139,139,241,,,241,241,241,241,,,,241,241,241,,241,241,241,', -'241,,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241', -'241,241,241,241,,241,,,,241,,241,,,241,,,,,,241,241,241,241,241,241', -'241,,,,241,241,241,,,,,241,241,241,241,175,,,175,175,175,175,,,,175', +'313,313,48,313,1,313,313,313,313,5,319,364,155,187,188,313,7,28,319', +'364,44,44,313,313,313,313,313,313,313,313,313,190,313,313,313,313,313', +'313,313,313,313,313,269,48,160,313,313,313,231,28,313,313,313,155,187', +'188,259,313,313,313,313,313,313,313,313,313,313,313,313,313,313,24,190', +'160,27,313,313,313,313,314,314,265,314,32,314,314,314,314,35,231,269', +'189,267,316,314,189,196,259,6,6,36,314,314,314,314,314,314,314,314,314', +'317,314,314,314,314,314,314,314,314,314,314,318,265,52,314,314,314,6', +'196,314,314,314,189,267,316,237,314,314,314,314,314,314,314,314,314', +'314,314,314,314,314,47,317,46,306,314,314,314,314,315,315,53,315,318', +'315,315,315,315,237,79,0,0,0,306,315,79,86,162,46,47,47,315,315,315', +'315,315,315,315,315,315,260,315,315,315,315,315,315,315,315,315,315', +'86,162,54,315,315,315,300,55,315,315,315,149,149,326,260,315,315,315', +'315,315,315,315,315,315,315,315,315,315,315,320,320,300,320,315,315', +'315,315,34,326,34,56,34,76,34,320,34,383,384,385,78,34,320,320,320,320', +'320,320,320,320,320,80,320,320,320,320,320,320,320,320,320,320,383,384', +'385,320,320,320,165,165,320,320,320,34,184,184,82,320,320,320,320,320', +'320,320,320,320,320,320,320,320,320,356,356,83,356,320,320,320,320,84', +'30,30,30,30,34,90,356,30,30,30,185,185,91,356,356,356,356,356,356,356', +'356,356,92,356,356,356,356,356,356,356,356,356,356,186,186,93,356,356', +'356,192,192,356,356,356,31,31,94,31,356,356,356,356,356,356,356,356', +'356,356,356,356,356,356,375,375,95,375,356,356,356,356,96,145,145,145', +'145,193,193,375,145,145,145,194,194,97,375,375,375,375,375,375,375,375', +'375,98,375,375,375,375,375,375,375,375,375,375,252,252,99,375,375,375', +'257,257,375,375,375,262,262,337,337,375,375,375,375,375,375,375,375', +'375,375,375,375,375,375,357,357,358,358,375,375,375,375,386,386,100', +'386,101,386,386,386,386,362,362,367,367,369,369,386,374,374,390,390', +'391,391,386,386,386,386,386,386,386,386,386,102,386,386,386,386,386', +'386,386,386,386,386,393,393,103,386,386,386,394,394,386,386,386,117', +'127,128,129,386,386,386,386,386,386,386,386,386,386,386,386,386,386', +'408,408,131,408,386,386,386,386,133,136,137,143,172,191,195,408,197', +'198,200,205,228,229,408,408,408,408,408,408,408,408,408,230,408,408', +'408,408,408,408,408,408,408,408,232,233,236,408,408,408,240,243,408', +'408,408,244,245,246,247,408,408,408,408,408,408,408,408,408,408,408', +'408,408,408,249,253,255,271,408,408,408,408,50,275,277,50,50,50,50,278', +'282,296,50,50,50,297,50,50,50,298,50,323,50,50,50,50,50,50,50,50,50', +'50,50,50,50,50,50,50,50,50,50,50,328,50,346,348,349,50,350,50,351,50', +'50,353,355,359,363,368,50,50,50,50,50,50,50,370,380,387,50,50,50,388', +'389,398,400,50,50,50,50,139,403,405,139,139,139,139,409,,,139,139,139', +',139,,139,,139,,139,139,139,139,139,139,139,139,139,139,139,139,139', +'139,139,139,139,139,139,139,,139,,,,139,,,,,,,,,,,139,139,139,139,139', +'139,139,,,,139,139,139,,,,,139,139,139,139,161,,,161,161,161,161,,,', +'161,161,161,,161,161,161,,161,,161,161,161,161,161,161,161,161,161,161', +'161,161,161,161,161,161,161,161,161,161,,161,,,,161,,161,,161,161,,', +',,,161,161,161,161,161,161,161,,,,161,161,161,,,,,161,161,161,161,173', +',,173,173,173,173,,,,173,173,173,,173,173,173,,173,,173,173,173,173', +'173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,,173', +',,,173,,173,,173,173,,,,,,173,173,173,173,173,173,173,,,,173,173,173', +',,,,173,173,173,173,174,,,174,174,174,174,,,,174,174,174,,174,174,174', +',174,,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174', +'174,174,174,174,,174,,,,174,,174,,174,174,,,,,,174,174,174,174,174,174', +'174,,,,174,174,174,,,,,174,174,174,174,175,,,175,175,175,175,,,,175', '175,175,,175,175,175,,175,,175,175,175,175,175,175,175,175,175,175,175', '175,175,175,175,175,175,175,175,175,,175,,,,175,,175,,,175,,,,,,175', -'175,175,175,175,175,175,,,,175,175,175,,,,,175,175,175,175,161,,,161', -'161,161,161,,,,161,161,161,,161,161,161,,161,,161,161,161,161,161,161', -'161,161,161,161,161,161,161,161,161,161,161,161,161,161,,161,,,,161', -',161,,161,161,,,,,,161,161,161,161,161,161,161,,,,161,161,161,,,,,161', -'161,161,161,173,,,173,173,173,173,,,,173,173,173,,173,173,173,,173,', -'173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173', -'173,173,173,34,173,34,,34,173,34,173,34,173,173,,,34,,,173,173,173,173', -'173,173,173,,,,173,173,173,,,,,173,173,173,173,,,,,,,,,34,,,,,,,,,,', -'180,50,180,,50,50,50,50,,,,50,50,50,,50,50,50,,50,34,50,50,50,50,50', -'50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,181,50,181,180,180,50,', -'50,,50,50,,,,,,50,50,50,50,50,50,50,,,180,50,50,50,177,177,177,177,50', -'50,50,50,,,,,,,,181,181,177,177,177,177,177,177,177,177,177,,177,177', -'177,177,177,177,177,177,177,177,181,,,,,,,177,,,177,,,,,,177,177,177', -'177,177,177,177,224,,224,177,177,177,176,176,176,176,177,177,177,177', -',,,,,,,,,176,176,176,176,176,176,176,176,176,,176,176,176,176,176,176', -'176,176,176,176,,224,224,,,,,176,,,176,,,,,,176,176,176,176,176,176', -'176,224,,,176,176,176,207,207,207,207,176,176,176,176,,,,,,,,,,207,207', -'207,207,207,207,207,207,207,,207,207,207,207,207,207,207,207,207,207', -'125,,125,178,77,178,182,77,182,77,,,,,,,207,207,207,207,207,207,207', -',,,207,207,207,77,,,,207,207,207,207,,,,77,,,,125,125,,178,178,,182', -'182,266,,266,,266,,266,,,266,266,266,,,125,,,178,,,182,,281,,281,,281', -',281,,266,281,281,281,,,,,,266,266,,,266,325,,325,,325,,325,,281,325', -'325,325,,,,266,,281,281,,,281,274,,274,,274,,274,,325,274,274,274,,', -',281,,325,325,,,325,,,,,,,,,274,,,,,,,325,,274,274,,156,274,,,,,,,,', -'156,156,156,,156,,156,274,156,,156,156,156,156,156,156,156,156,156,156', -'156,156,156,156,,,26,,,,,156,,,,156,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', -',,88,,,,,43,,,,43,88,88,88,,88,,88,,88,,88,88,88,88,88,88,88,88,88,88', -'88,88,88,88,,,25,,,,,88,,,,88,25,25,25,,25,,25,25,25,,25,25,25,25,25', -'25,25,25,25,25,25,25,25,25,,,235,,,,,25,,,,25,235,235,235,,235,,235', -',235,,235,235,235,235,235,235,235,235,235,235,235,235,235,235,,,268', -',,,,235,,,,235,268,268,268,,268,,268,,268,,268,268,268,268,268,268,268', -'268,268,268,268,268,268,268,,,140,,,,,268,,,,268,140,140,140,,140,,140', -',140,,140,140,140,140,140,140,140,140,140,140,140,140,140,140,,,141', -',,,,140,,,,140,141,141,141,,141,,141,,141,,141,141,141,141,141,141,141', -'141,141,141,141,141,141,141,,,142,,,,,141,,,,141,142,142,142,,142,,142', -',142,,142,142,142,142,142,142,142,142,142,142,142,142,142,142,,,234', -',,,,142,,,,142,234,234,234,,234,,234,,234,,234,234,234,234,234,234,234', -'234,234,234,234,234,234,234,,,146,,,,,234,,,,234,146,146,146,,146,,146', -',146,,146,146,146,146,146,146,146,146,146,146,146,146,146,146,,,147', -',,,,146,,,,146,147,147,147,,147,,147,,147,,147,147,147,147,147,147,147', -'147,147,147,147,147,147,147,,,57,,,,,147,,,,147,57,57,57,,57,,57,,57', -',57,57,57,57,57,57,57,57,57,57,57,57,57,57,,,309,,,,,57,,,,57,309,309', -'309,,309,,309,,309,,309,309,309,309,309,309,309,309,309,309,309,309', -'309,309,,,321,,,,,309,,,,309,321,321,321,,321,,321,,321,,321,321,321', -'321,321,321,321,321,321,321,321,321,321,321,,,322,,,,,321,,,,321,322', -'322,322,,322,,322,,322,,322,322,322,322,322,322,322,322,322,322,322', -'322,322,322,,,148,,,,,322,,,,322,148,148,148,,148,,148,,148,,148,148', -'148,148,148,148,148,148,148,148,148,148,148,148,,,327,,,,,148,,,,148', -'327,327,327,,327,,327,,327,,327,327,327,327,327,327,327,327,327,327', -'327,327,327,327,,,201,,,,,327,,,,327,201,201,201,,201,,201,,201,,201', -'201,201,201,201,201,201,201,201,201,201,201,201,201,,,2,,,,,201,,,,201', -'2,2,2,,2,,2,,2,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,,,345,,,,,2,,,,2,345,345', -'345,,345,,345,,345,,345,345,345,345,345,345,345,345,345,345,345,345', -'345,345,,,347,,,,,345,,,,345,347,347,347,,347,,347,,347,,347,347,347', -'347,347,347,347,347,347,347,347,347,347,347,,,157,,,,,347,,,,347,157', -'157,157,,157,,157,,157,,157,157,157,157,157,157,157,157,157,157,157', -'157,157,157,,,159,,,,,157,,,,157,159,159,159,,159,,159,,159,,159,159', -'159,159,159,159,159,159,159,159,159,159,159,159,,,51,,,,,159,,,,159', -'51,51,51,,51,,51,,51,,51,51,51,51,51,51,51,51,51,51,51,51,51,51,,,371', -',,,,51,,,,51,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,,,377,,,,,373,,,,373,377,377,377,,377,,377', -',377,,377,377,377,377,377,377,377,377,377,377,377,377,377,377,,,378', -',,,,377,,,,377,378,378,378,,378,,378,,378,,378,378,378,378,378,378,378', -'378,378,378,378,378,378,378,,,381,,,,,378,,,,378,381,381,381,,381,,381', -',381,,381,381,381,381,381,381,381,381,381,381,381,381,381,381,,,382', -',,,,381,,,,381,382,382,382,,382,,382,,382,,382,382,382,382,382,382,382', -'382,382,382,382,382,382,382,,,179,,,,,382,,,,382,179,179,179,,179,,179', -',179,,179,179,179,179,179,179,179,179,179,179,179,179,179,179,283,,', -'283,,283,,179,283,,,179,,,,,,,,,,,,,,283,,283,283,283,283,283,,,,283', -'283' ] - racc_action_check = arr = ::Array.new(2819, nil) +'175,175,175,175,175,175,,,,175,175,175,,,,,175,175,175,175,241,,,241', +'241,241,241,,,,241,241,241,,241,241,241,,241,,241,241,241,241,241,241', +'241,241,241,241,241,241,241,241,241,241,241,241,241,241,125,241,125', +',,241,,241,,,241,,,,,,241,241,241,241,241,241,241,178,,178,241,241,241', +'176,176,176,176,241,241,241,241,,,,,,,,125,125,176,176,176,176,176,176', +'176,176,176,,176,176,176,176,176,176,176,176,176,176,125,178,178,,,', +',176,,,176,,,,,,176,176,176,176,176,176,176,178,,,176,176,176,177,177', +'177,177,176,176,176,176,,,,,,,,,,177,177,177,177,177,177,177,177,177', +',177,177,177,177,177,177,177,177,177,177,180,,180,,,,,177,,,177,,,,', +',177,177,177,177,177,177,177,181,,181,177,177,177,207,207,207,207,177', +'177,177,177,,,,,,,,180,180,207,207,207,207,207,207,207,207,207,,207', +'207,207,207,207,207,207,207,207,207,180,181,181,182,77,182,224,77,224', +'77,,,,,,,207,207,207,207,207,207,207,181,,,207,207,207,77,,,,207,207', +'207,207,,,,77,,,,,,,182,182,,224,224,266,,266,,266,,266,,,266,266,266', +'274,,274,,274,182,274,,224,274,274,274,,,,281,,281,266,281,,281,,,281', +'281,281,266,266,,274,266,,,,,,,,274,274,,325,274,325,281,325,266,325', +',,325,325,325,281,281,,,281,274,,,,,,,,,,,,,325,,281,,,,,,,325,325,', +'2,325,,,,,,,,,2,2,2,,2,,2,325,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,,,51,,,,,43,', +',,43,51,51,51,,51,,51,,51,,51,51,51,51,51,51,51,51,51,51,51,51,51,51', +',,57,,,,,51,,,,51,57,57,57,,57,,57,,57,,57,57,57,57,57,57,57,57,57,57', +'57,57,57,57,,,88,,,,,57,,,,57,88,88,88,,88,,88,,88,,88,88,88,88,88,88', +'88,88,88,88,88,88,88,88,,,140,,,,,88,,,,88,140,140,140,,140,,140,,140', +',140,140,140,140,140,140,140,140,140,140,140,140,140,140,,,141,,,,,140', +',,,140,141,141,141,,141,,141,,141,,141,141,141,141,141,141,141,141,141', +'141,141,141,141,141,,,142,,,,,141,,,,141,142,142,142,,142,,142,,142', +',142,142,142,142,142,142,142,142,142,142,142,142,142,142,,,146,,,,,142', +',,,142,146,146,146,,146,,146,,146,,146,146,146,146,146,146,146,146,146', +'146,146,146,146,146,,,147,,,,,146,,,,146,147,147,147,,147,,147,,147', +',147,147,147,147,147,147,147,147,147,147,147,147,147,147,,,148,,,,,147', +',,,147,148,148,148,,148,,148,,148,,148,148,148,148,148,148,148,148,148', +'148,148,148,148,148,,,156,,,,,148,,,,148,156,156,156,,156,,156,,156', +',156,156,156,156,156,156,156,156,156,156,156,156,156,156,,,157,,,,,156', +',,,156,157,157,157,,157,,157,,157,,157,157,157,157,157,157,157,157,157', +'157,157,157,157,157,,,159,,,,,157,,,,157,159,159,159,,159,,159,,159', +',159,159,159,159,159,159,159,159,159,159,159,159,159,159,,,179,,,,,159', +',,,159,179,179,179,,179,,179,,179,,179,179,179,179,179,179,179,179,179', +'179,179,179,179,179,,,201,,,,,179,,,,179,201,201,201,,201,,201,,201', +',201,201,201,201,201,201,201,201,201,201,201,201,201,201,,,234,,,,,201', +',,,201,234,234,234,,234,,234,,234,,234,234,234,234,234,234,234,234,234', +'234,234,234,234,234,,,235,,,,,234,,,,234,235,235,235,,235,,235,,235', +',235,235,235,235,235,235,235,235,235,235,235,235,235,235,,,268,,,,,235', +',,,235,268,268,268,,268,,268,,268,,268,268,268,268,268,268,268,268,268', +'268,268,268,268,268,,,309,,,,,268,,,,268,309,309,309,,309,,309,,309', +',309,309,309,309,309,309,309,309,309,309,309,309,309,309,,,321,,,,,309', +',,,309,321,321,321,,321,,321,,321,,321,321,321,321,321,321,321,321,321', +'321,321,321,321,321,,,322,,,,,321,,,,321,322,322,322,,322,,322,,322', +',322,322,322,322,322,322,322,322,322,322,322,322,322,322,,,327,,,,,322', +',,,322,327,327,327,,327,,327,,327,,327,327,327,327,327,327,327,327,327', +'327,327,327,327,327,,,345,,,,,327,,,,327,345,345,345,,345,,345,,345', +',345,345,345,345,345,345,345,345,345,345,345,345,345,345,,,347,,,,,345', +',,,345,347,347,347,,347,,347,,347,,347,347,347,347,347,347,347,347,347', +'347,347,347,347,347,,,371,,,,,347,,,,347,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,,,377,,,,,373', +',,,373,377,377,377,,377,,377,,377,,377,377,377,377,377,377,377,377,377', +'377,377,377,377,377,,,378,,,,,377,,,,377,378,378,378,,378,,378,,378', +',378,378,378,378,378,378,378,378,378,378,378,378,378,378,,,381,,,,,378', +',,,378,381,381,381,,381,,381,,381,,381,381,381,381,381,381,381,381,381', +'381,381,381,381,381,,,382,,,,,381,,,,381,382,382,382,,382,,382,,382', +',382,382,382,382,382,382,382,382,382,382,382,382,382,382,283,,,283,', +'283,,382,283,,,382,,,,,,,,,,,,,,283,,283,283,283,283,283,,,,283,283' ] + racc_action_check = arr = ::Array.new(2779, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -631,47 +629,47 @@ def initialize(message, subject:, location:) end racc_action_pointer = [ - -54, 6, 2276, nil, nil, 11, 116, -35, nil, nil, + 96, 4, 1444, nil, nil, 9, 51, -35, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 70, 1700, 1520, 105, -6, nil, - 302, 236, 154, nil, 1033, 85, 147, nil, nil, nil, - 1556, 1592, nil, 1628, 411, nil, 53, 151, 89, nil, - 1086, 2456, 182, 178, 176, 178, 185, 2024, nil, nil, + nil, nil, nil, nil, 51, 1480, 1516, 56, -1, nil, + 302, 351, 79, nil, 237, 12, 80, nil, nil, nil, + 1552, 1588, nil, 1624, -27, nil, 131, 131, -2, nil, + 596, 1660, 100, 114, 147, 152, 185, 1696, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 232, 1297, 216, 158, - 229, nil, 284, 306, 273, nil, 200, nil, 1664, nil, - 312, 342, 337, 339, 356, 366, 379, 408, 416, 417, - 418, 419, 420, 448, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 423, nil, nil, - nil, nil, nil, nil, nil, 1325, nil, 424, 450, 424, - nil, 425, nil, 435, nil, nil, 446, 447, nil, 681, - 1808, 1844, 1880, 443, nil, 381, 1952, 1988, 2168, 202, - nil, nil, nil, nil, nil, 117, 1484, 2384, nil, 2420, - 49, 912, 52, nil, nil, 324, nil, nil, nil, nil, - nil, nil, 448, 989, 604, 835, 1218, 1152, 1328, 2744, - 1086, 1127, 1331, nil, 295, 301, 306, 88, 77, 87, - 52, 443, 345, 351, 374, 453, 78, 482, 486, nil, - 504, 2240, nil, nil, nil, 475, nil, 1284, nil, nil, + nil, nil, nil, nil, nil, nil, 229, 1269, 205, 166, + 216, nil, 267, 300, 260, nil, 154, nil, 1732, nil, + 295, 319, 287, 300, 311, 329, 335, 348, 358, 371, + 408, 410, 437, 476, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 459, nil, nil, + nil, nil, nil, nil, nil, 1099, nil, 460, 486, 460, + nil, 477, nil, 483, nil, nil, 484, 485, nil, 673, + 1768, 1804, 1840, 481, nil, 373, 1876, 1912, 1948, 164, + nil, nil, nil, nil, nil, 8, 1984, 2020, nil, 2056, + 22, 750, 155, nil, nil, 230, nil, nil, nil, nil, + nil, nil, 483, 827, 904, 981, 1124, 1190, 1122, 2092, + 1231, 1254, 1300, nil, 236, 272, 295, 9, 10, 87, + 27, 478, 301, 337, 343, 485, 78, 515, 519, nil, + 537, 2128, nil, nil, nil, 494, nil, 1256, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 1216, nil, nil, nil, 502, 503, - 504, 10, 511, 528, 1916, 1736, 515, 109, nil, nil, - 488, 758, nil, 522, 482, 463, 499, 499, nil, 526, - nil, nil, 156, 496, nil, 525, nil, 240, nil, 3, - 160, nil, 11, nil, nil, 9, 1378, 4, 1772, -8, - nil, 530, nil, nil, 1444, 530, nil, 481, 569, nil, - nil, 1400, 526, 2747, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 529, 533, 521, nil, - 147, nil, nil, nil, nil, nil, 109, nil, nil, 2060, - nil, nil, nil, 527, 77, 377, 38, -2, 27, -62, - 148, 2096, 2132, 571, nil, 1422, 89, 2204, 565, nil, - nil, nil, nil, nil, nil, nil, nil, 381, nil, nil, - nil, nil, nil, nil, nil, 2312, 566, 2348, 567, 580, - 581, 582, nil, 564, nil, 552, 448, 380, 326, 566, - nil, nil, 308, 571, -2, nil, nil, 272, 572, 266, - 573, 2492, 2528, 2564, 252, -2, nil, 2600, 2636, nil, - 602, 2672, 2708, 148, 202, 201, 227, 568, 570, 616, - 387, 224, nil, 230, 235, nil, nil, nil, 592, nil, - 607, nil, nil, 595, nil, 607, nil, nil, 298, -54, + nil, nil, nil, nil, 1303, nil, nil, nil, 521, 522, + 532, 44, 543, 559, 2164, 2200, 542, 117, nil, nil, + 518, 1058, nil, 552, 515, 496, 532, 531, nil, 572, + nil, nil, 366, 542, nil, 571, nil, 417, nil, 52, + 168, nil, 347, nil, nil, 77, 1350, 88, 2236, 29, + nil, 576, nil, nil, 1362, 581, nil, 523, 605, nil, + nil, 1377, 562, 2707, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 565, 569, 560, nil, + 185, nil, nil, nil, nil, nil, 110, nil, nil, 2272, + nil, nil, nil, -2, 77, 156, 89, 106, 117, -62, + 227, 2308, 2344, 608, nil, 1404, 192, 2380, 622, nil, + nil, nil, nil, nil, nil, nil, nil, 375, nil, nil, + nil, nil, nil, nil, nil, 2416, 624, 2452, 625, 624, + 626, 628, nil, 612, nil, 595, 298, 395, 397, 609, + nil, nil, 412, 610, 0, nil, nil, 414, 611, 416, + 619, 2488, 2524, 2560, 434, 369, nil, 2596, 2632, nil, + 645, 2668, 2704, 225, 226, 227, 448, 608, 612, 638, + 421, 423, nil, 445, 451, nil, nil, nil, 613, nil, + 628, nil, nil, 621, nil, 632, nil, nil, 519, 626, nil, nil ] racc_action_default = [ @@ -720,18 +718,18 @@ def initialize(message, subject:, location:) racc_goto_table = [ 6, 57, 77, 46, 82, 191, 49, 128, 79, 90, - 143, 52, 167, 247, 179, 203, 62, 206, 344, 344, - 344, 86, 91, 38, 47, 344, 261, 328, 346, 348, - 205, 205, 266, 34, 356, 404, 363, 35, 84, 85, + 143, 52, 167, 247, 179, 203, 1, 206, 328, 346, + 348, 86, 91, 38, 47, 356, 261, 344, 344, 344, + 205, 205, 266, 34, 344, 404, 363, 35, 84, 85, 221, 222, 68, 274, 150, 271, 411, 282, 125, 281, 258, 67, 81, 264, 368, 149, 370, 299, 310, 244, - 246, 344, 250, 303, 304, 223, 305, 225, 226, 227, - 376, 187, 188, 189, 190, 232, 269, 302, 353, 386, - 344, 249, 179, 256, 398, 160, 165, 195, 260, 389, - 278, 344, 325, 162, 204, 1, nil, 205, nil, nil, - 400, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 242, nil, 344, nil, 249, 57, 249, 198, nil, - nil, nil, 410, nil, nil, nil, 183, nil, nil, nil, + 246, 376, 250, 303, 304, 223, 305, 225, 226, 227, + 344, 187, 188, 189, 190, 232, 269, 302, 353, 386, + 389, 249, 179, 256, 398, 160, 165, 195, 260, 344, + 278, 400, 325, 162, 204, 62, nil, 205, nil, nil, + 344, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 242, nil, 410, nil, 249, 57, 249, 198, nil, + nil, nil, 344, nil, nil, nil, 183, nil, nil, nil, 202, nil, nil, nil, nil, nil, nil, 178, 180, 181, 182, nil, nil, nil, 184, 185, 186, nil, 228, 229, 230, nil, nil, nil, 192, 193, nil, 194, nil, 125, @@ -761,18 +759,18 @@ def initialize(message, subject:, location:) racc_goto_check = [ 2, 36, 16, 23, 18, 27, 51, 50, 59, 17, - 49, 61, 74, 25, 63, 69, 75, 69, 53, 53, - 53, 23, 59, 3, 2, 53, 55, 37, 37, 37, - 64, 64, 20, 4, 37, 46, 38, 5, 2, 2, + 49, 61, 74, 25, 63, 69, 1, 69, 37, 37, + 37, 23, 59, 3, 2, 37, 55, 53, 53, 53, + 64, 64, 20, 4, 53, 46, 38, 5, 2, 2, 70, 70, 6, 20, 16, 19, 46, 25, 2, 20, 22, 3, 3, 24, 38, 2, 38, 26, 55, 21, - 21, 53, 21, 29, 30, 74, 35, 74, 74, 74, - 37, 14, 14, 14, 14, 39, 40, 41, 42, 44, - 53, 27, 63, 69, 45, 47, 2, 48, 54, 37, - 57, 53, 20, 58, 65, 1, nil, 64, nil, nil, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 74, nil, 53, nil, 27, 36, 27, 50, nil, - nil, nil, 37, nil, nil, nil, 61, nil, nil, nil, + 21, 37, 21, 29, 30, 74, 35, 74, 74, 74, + 53, 14, 14, 14, 14, 39, 40, 41, 42, 44, + 37, 27, 63, 69, 45, 47, 2, 48, 54, 53, + 57, 37, 20, 58, 65, 75, nil, 64, nil, nil, + 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 74, nil, 37, nil, 27, 36, 27, 50, nil, + nil, nil, 53, nil, nil, nil, 61, nil, nil, nil, 50, nil, nil, nil, nil, nil, nil, 2, 2, 2, 2, nil, nil, nil, 2, 2, 2, nil, 17, 17, 17, nil, nil, nil, 2, 2, nil, 2, nil, 2, @@ -801,14 +799,14 @@ def initialize(message, subject:, location:) 2 ] racc_goto_pointer = [ - nil, 95, -2, 17, 30, 33, 8, nil, nil, nil, + nil, 16, -2, 17, 30, 33, 8, nil, nil, nil, nil, nil, nil, nil, -80, nil, -32, -39, -32, -212, -215, -170, -194, -22, -193, -218, -210, -150, nil, -206, - -205, nil, nil, nil, nil, -203, -29, -286, -292, -115, + -205, nil, nil, nil, nil, -203, -29, -295, -292, -115, -174, -192, -241, nil, -295, -302, -363, 3, -73, -41, - -43, -22, nil, -295, -157, -219, nil, -172, 10, -26, + -43, -22, nil, -286, -157, -219, nil, -172, 10, -26, nil, -19, nil, -125, -144, -80, nil, nil, nil, -158, - -136, nil, nil, nil, -113, -15 ] + -136, nil, nil, nil, -113, 64 ] racc_goto_default = [ nil, nil, 44, nil, nil, 405, 295, 69, 70, 71, diff --git a/lib/rbs/parser.y b/lib/rbs/parser.y index 5dd3e9b47..294fc311c 100644 --- a/lib/rbs/parser.y +++ b/lib/rbs/parser.y @@ -1294,10 +1294,10 @@ def next_token return [:"type_#{type}", nil] end - return if @eof + return new_token(false, '') if @eof while true - return if input.eos? + return new_token(false, '') if input.eos? case when input.scan(/\s+/) diff --git a/test/rbs/signature_parsing_test.rb b/test/rbs/signature_parsing_test.rb index 1486f2f27..1d2fd75a8 100644 --- a/test/rbs/signature_parsing_test.rb +++ b/test/rbs/signature_parsing_test.rb @@ -1090,4 +1090,15 @@ def bar: () -> ^->Integer end end end + + def test_syntax_error_on_eof + ex = assert_raises Parser::SyntaxError do + Parser.parse_signature(<<~SIG) + class Foo + SIG + end + loc = ex.error_value.location + assert_equal 1, loc.start_line + assert_equal 9, loc.start_column + end end