parser: Updated grammar to support prefixed and suffixed `String` and `Char`
authorLucas Bajolet <r4pass@hotmail.com>
Fri, 27 Nov 2015 16:15:39 +0000 (11:15 -0500)
committerLucas Bajolet <r4pass@hotmail.com>
Fri, 27 Nov 2015 16:19:52 +0000 (11:19 -0500)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

src/parser/nit.sablecc3xx

index 694da7b..a485468 100644 (file)
@@ -91,6 +91,8 @@ extern_code_char
        ;
 extern_code_body = extern_code_char*;
 
+id = lowercase letter*;
+
 /*****************************************************************************/
 States
 /*****************************************************************************/
@@ -203,16 +205,16 @@ at='@';
 semi=';';
 
 classid = uppercase letter*;
-id = lowercase letter*;
+id = id;
 attrid = '_' lowercase letter*;
 
 integer = (number | hex_number | bin_number | oct_number) (('u' prec) | ('i' prec) |);
 float = digit* '.' digit+ | (digit+ | digit* '.' digit+) ('E'|'e') ('+'|'-'|) digit+;
-string = '"' str_body '"' | '"' '"' '"' long_str_body lsend1 | ''' ''' ''' long_sstr_body ''' ''' ''';
-start_string = '"' str_body '{' | '"' '"' '"' long_str_body lsend2;
+string = id? '"' str_body '"' id? | id? '"' '"' '"' long_str_body lsend1 | id? ''' ''' ''' long_sstr_body ''' ''' ''' id?;
+start_string = id? '"' str_body '{' | id? '"' '"' '"' long_str_body lsend2;
 mid_string = '}' str_body '{' | '}' '}' '}' long_str_body lsend2;
-end_string = '}' str_body '"' | '}' '}' '}' long_str_body lsend1;
-char = (''' [[any - '''] - '\'] ''') | (''' '\' any ''');
+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_char = ''' '\'? any;