lexer: add token for bad extern segment, and bad triple quoted string
authorJean Privat <jean@pryen.org>
Thu, 23 Nov 2017 20:41:02 +0000 (15:41 -0500)
committerJean Privat <jean@pryen.org>
Thu, 23 Nov 2017 20:41:02 +0000 (15:41 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

src/parser/lexer.nit
src/parser/nit.sablecc3xx
src/parser/parser_abs.nit
src/parser/parser_nodes.nit
src/parser/tables_nit.c

index dc10ac9..f8431a0 100644 (file)
@@ -1326,7 +1326,7 @@ redef class TBadString
     end
 end
 
-redef class TBadChar
+redef class TBadTString
     redef fun parser_index: Int
     do
        return 110
@@ -1338,7 +1338,7 @@ redef class TBadChar
     end
 end
 
-redef class TExternCodeSegment
+redef class TBadChar
     redef fun parser_index: Int
     do
        return 111
@@ -1350,11 +1350,35 @@ redef class TExternCodeSegment
     end
 end
 
+redef class TExternCodeSegment
+    redef fun parser_index: Int
+    do
+       return 112
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadExtern
+    redef fun parser_index: Int
+    do
+       return 113
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
 
 redef class EOF
     redef fun parser_index: Int
     do
-       return 112
+       return 114
     end
 end
 
@@ -1692,11 +1716,17 @@ redef class Lexer
                        return new TBadString.init_tk(location)
                end
                if accept_token == 111 then
-                       return new TBadChar.init_tk(location)
+                       return new TBadTString.init_tk(location)
                end
                if accept_token == 112 then
+                       return new TBadChar.init_tk(location)
+               end
+               if accept_token == 113 then
                        return new TExternCodeSegment.init_tk(location)
                end
+               if accept_token == 114 then
+                       return new TBadExtern.init_tk(location)
+               end
                abort # unknown token index `accept_token`
        end
 end
index f626841..1931792 100644 (file)
@@ -218,10 +218,12 @@ start_string = id? '"' str_body '{' | id? '"' '"' '"' long_str_body lsend2;
 mid_string = '}' str_body '{' | '}' '}' '}' long_str_body lsend2;
 end_string = '}' str_body '"' id? | '}' '}' '}' long_str_body lsend1 id? ;
 char = id? ((''' [[any - '''] - '\'] ''') | (''' '\' any ''')) id?;
-bad_string = ('"'|'}') str_body | '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
+bad_string = ('"'|'}') str_body ;
+bad_t_string = '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
 bad_char = ''' '\'? any;
 
 extern_code_segment = '`' '{' extern_code_body '`' '}';
+bad_extern = '`' '{' extern_code_body;
 
 /*****************************************************************************/
 Ignored Tokens
index b6d7676..2f42bfc 100644 (file)
@@ -334,12 +334,18 @@ end
 class TBadString
        super Token
 end
+class TBadTString
+       super Token
+end
 class TBadChar
        super Token
 end
 class TExternCodeSegment
        super Token
 end
+class TBadExtern
+       super Token
+end
 class EOF
        super Token
 end
index 9726c3d..0c535c2 100644 (file)
@@ -1078,6 +1078,11 @@ class TBadString
        end
 end
 
+# A malformed triple quoted string
+class TBadTString
+       super TBadString
+end
+
 # A malformed char
 class TBadChar
        super Token
@@ -1092,6 +1097,15 @@ class TExternCodeSegment
        super Token
 end
 
+# A malformed extern code block
+class TBadExtern
+       super Token
+       redef fun to_s
+       do
+               do return "malformed extern segment {text}"
+       end
+end
+
 # A end of file
 class EOF
        super Token
index fe36ace..e424dc6 100644 (file)
@@ -3025,7 +3025,7 @@ const int* const lexer_goto_table[] = {
 };
 
 const int lexer_accept_table[] = {
-       -1,0,1,1,0,97,110,2,83,86,-1,56,57,80,78,60,79,77,82,103,103,61,99,90,63,93,98,100,58,59,85,-1,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,110,87,1,89,110,105,-1,106,2,2,2,68,72,111,111,111,81,66,64,65,76,104,67,-1,103,-1,-1,-1,-1,103,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,100,100,100,100,71,-1,102,-1,-1,-1,101,101,101,101,101,101,48,101,101,101,101,17,101,101,101,101,101,101,24,101,30,16,101,101,101,101,101,101,101,32,101,101,101,101,101,101,101,101,101,101,101,101,101,101,70,110,108,-1,107,110,105,110,105,110,2,109,110,111,69,75,103,103,103,-1,-1,104,103,103,103,103,103,103,103,-1,-1,103,-1,-1,103,73,96,74,-1,102,102,102,102,-1,-1,-1,-1,105,-1,-1,-1,-1,101,101,31,101,101,101,101,101,101,11,101,101,101,29,12,101,101,101,41,101,101,101,101,40,33,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,18,101,101,101,108,110,110,110,110,110,-1,-1,-1,105,105,105,105,109,110,110,110,-1,-1,109,103,103,103,103,-1,-1,-1,112,-1,-1,-1,-1,101,101,101,101,101,101,101,26,9,101,101,101,101,14,101,101,101,101,28,101,47,42,101,101,101,101,101,101,44,101,101,25,45,13,101,101,52,101,108,108,108,108,110,-1,-1,108,-1,107,-1,-1,110,-1,-1,109,109,109,109,110,110,110,-1,-1,110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,101,101,37,55,6,101,101,46,101,101,101,101,50,51,101,101,101,101,101,101,15,101,101,43,101,27,54,-1,-1,-1,-1,-1,108,-1,110,-1,-1,105,-1,-1,106,110,110,110,105,-1,110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,39,101,19,101,5,101,101,4,101,101,101,101,20,35,10,101,-1,108,108,108,108,108,-1,-1,107,105,106,105,110,-1,-1,-1,-1,-1,-1,-1,-1,101,101,34,101,23,101,3,22,101,101,108,108,107,105,105,105,105,-1,-1,7,36,101,49,101,101,108,108,108,108,53,8,21,9
+       -1,0,1,1,0,97,110,2,83,86,-1,56,57,80,78,60,79,77,82,103,103,61,99,90,63,93,98,100,58,59,85,-1,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,110,87,1,89,110,105,-1,106,2,2,2,68,72,112,112,112,81,66,64,65,76,104,67,-1,103,-1,-1,-1,-1,103,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,100,100,100,100,71,-1,102,114,-1,-1,101,101,101,101,101,101,48,101,101,101,101,17,101,101,101,101,101,101,24,101,30,16,101,101,101,101,101,101,101,32,101,101,101,101,101,101,101,101,101,101,101,101,101,101,70,110,108,-1,107,110,105,111,105,110,2,109,111,112,69,75,103,103,103,-1,-1,104,103,103,103,103,103,103,103,-1,-1,103,-1,-1,103,73,96,74,-1,102,102,102,102,114,-1,-1,-1,105,-1,-1,-1,-1,101,101,31,101,101,101,101,101,101,11,101,101,101,29,12,101,101,101,41,101,101,101,101,40,33,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,18,101,101,101,108,110,110,111,111,111,-1,-1,-1,105,105,105,105,109,111,111,111,-1,-1,109,103,103,103,103,-1,114,114,113,-1,-1,-1,-1,101,101,101,101,101,101,101,26,9,101,101,101,101,14,101,101,101,101,28,101,47,42,101,101,101,101,101,101,44,101,101,25,45,13,101,101,52,101,108,108,108,108,110,-1,-1,108,-1,107,-1,-1,111,-1,-1,109,109,109,109,111,111,111,-1,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,101,101,37,55,6,101,101,46,101,101,101,101,50,51,101,101,101,101,101,101,15,101,101,43,101,27,54,-1,-1,-1,-1,-1,108,-1,110,-1,-1,105,-1,-1,106,111,111,111,105,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,39,101,19,101,5,101,101,4,101,101,101,101,20,35,10,101,-1,108,108,108,108,108,-1,-1,107,105,106,105,111,-1,-1,-1,-1,-1,-1,-1,-1,101,101,34,101,23,101,3,22,101,101,108,108,107,105,105,105,105,-1,-1,7,36,101,49,101,101,108,108,108,108,53,8,21,9
 };
 
 static int parser_action_row1[] = {
@@ -3035,8 +3035,8 @@ static int parser_action_row1[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row2[] = {
        1,
@@ -3056,7 +3056,7 @@ static int parser_action_row4[] = {
 static int parser_action_row5[] = {
        2,
        -1, 3, 4,
-       112, 2, -1
+       114, 2, -1
 };
 static int parser_action_row6[] = {
        7,
@@ -3065,8 +3065,8 @@ static int parser_action_row6[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row7[] = {
        1,
@@ -3095,7 +3095,7 @@ static int parser_action_row12[] = {
 static int parser_action_row13[] = {
        2,
        -1, 1, 496,
-       112, 1, 23
+       114, 1, 23
 };
 static int parser_action_row14[] = {
        33,
@@ -3137,7 +3137,7 @@ static int parser_action_row15[] = {
        3,
        -1, 3, 14,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row16[] = {
        1,
@@ -3161,8 +3161,8 @@ static int parser_action_row19[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row20[] = {
        7,
@@ -3171,8 +3171,8 @@ static int parser_action_row20[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row21[] = {
        5,
@@ -3180,7 +3180,7 @@ static int parser_action_row21[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row22[] = {
        7,
@@ -3190,7 +3190,7 @@ static int parser_action_row22[] = {
        10, 1, 1075,
        29, 1, 1075,
        98, 0, 104,
-       111, 1, 1075
+       112, 1, 1075
 };
 static int parser_action_row23[] = {
        7,
@@ -3200,7 +3200,7 @@ static int parser_action_row23[] = {
        10, 1, 1077,
        29, 1, 1077,
        98, 0, 105,
-       111, 1, 1077
+       112, 1, 1077
 };
 static int parser_action_row24[] = {
        1,
@@ -3267,8 +3267,8 @@ static int parser_action_row29[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row30[] = {
        7,
@@ -3277,8 +3277,8 @@ static int parser_action_row30[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row31[] = {
        5,
@@ -3286,7 +3286,7 @@ static int parser_action_row31[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row32[] = {
        26,
@@ -3757,7 +3757,7 @@ static int parser_action_row86[] = {
 static int parser_action_row87[] = {
        2,
        -1, 3, 86,
-       111, 0, 263
+       112, 0, 263
 };
 static int parser_action_row88[] = {
        1,
@@ -3794,8 +3794,8 @@ static int parser_action_row95[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row96[] = {
        5,
@@ -3803,7 +3803,7 @@ static int parser_action_row96[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row97[] = {
        1,
@@ -3855,7 +3855,7 @@ static int parser_action_row100[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row101[] = {
        1,
@@ -3899,7 +3899,7 @@ static int parser_action_row108[] = {
        10, 1, 1076,
        29, 1, 1076,
        98, 0, 271,
-       111, 1, 1076
+       112, 1, 1076
 };
 static int parser_action_row109[] = {
        4,
@@ -3927,8 +3927,8 @@ static int parser_action_row112[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row113[] = {
        5,
@@ -3936,7 +3936,7 @@ static int parser_action_row113[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row114[] = {
        1,
@@ -3948,7 +3948,7 @@ static int parser_action_row115[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row116[] = {
        1,
@@ -5359,7 +5359,7 @@ static int parser_action_row266[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row267[] = {
        1,
@@ -5414,7 +5414,7 @@ static int parser_action_row275[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row276[] = {
        1,
@@ -7425,7 +7425,7 @@ static int parser_action_row522[] = {
        56, 1, 451,
        59, 1, 451,
        98, 1, 451,
-       112, 1, 451
+       114, 1, 451
 };
 static int parser_action_row523[] = {
        4,
@@ -9729,7 +9729,7 @@ static int parser_action_row726[] = {
        56, 1, 449,
        59, 1, 449,
        98, 1, 449,
-       112, 1, 449
+       114, 1, 449
 };
 static int parser_action_row727[] = {
        1,
@@ -10896,7 +10896,7 @@ static int parser_action_row866[] = {
        29, 0, 84,
        57, 0, 1015,
        98, 0, 3,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row867[] = {
        1,
@@ -12318,7 +12318,7 @@ static int parser_action_row1012[] = {
        3,
        -1, 3, 1011,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1013[] = {
        1,
@@ -14167,7 +14167,7 @@ static int parser_action_row1188[] = {
        3,
        -1, 3, 1187,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1189[] = {
        1,
@@ -15489,7 +15489,7 @@ static int parser_action_row1350[] = {
        16, 1, 83,
        29, 1, 83,
        98, 0, 3,
-       111, 1, 83
+       112, 1, 83
 };
 static int parser_action_row1351[] = {
        1,
@@ -17077,7 +17077,7 @@ static int parser_action_row1500[] = {
        1, 0, 2,
        29, 0, 84,
        98, 0, 3,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1501[] = {
        3,
@@ -19168,7 +19168,7 @@ static int parser_action_row1694[] = {
        3,
        -1, 3, 1693,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1695[] = {
        1,
@@ -19821,7 +19821,7 @@ static int parser_action_row1759[] = {
        3,
        -1, 3, 1758,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1760[] = {
        1,
@@ -20021,7 +20021,7 @@ static int parser_action_row1773[] = {
        3,
        -1, 3, 1772,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1774[] = {
        1,
@@ -20074,7 +20074,7 @@ static int parser_action_row1777[] = {
        3,
        -1, 3, 1776,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1778[] = {
        1,
@@ -20514,7 +20514,7 @@ static int parser_action_row1819[] = {
        3,
        -1, 3, 1818,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1820[] = {
        1,
@@ -20710,7 +20710,7 @@ static int parser_action_row1835[] = {
        3,
        -1, 3, 1834,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1836[] = {
        1,