From: Lucas Bajolet Date: Fri, 27 Nov 2015 16:15:39 +0000 (-0500) Subject: parser: Updated grammar to support prefixed and suffixed `String` and `Char` X-Git-Tag: v0.8~75^2~2 X-Git-Url: http://nitlanguage.org parser: Updated grammar to support prefixed and suffixed `String` and `Char` Signed-off-by: Lucas Bajolet --- diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index 694da7b..a485468 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -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;