From fc53f541a173d78067fddb941b11f5a74c004f87 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 27 Nov 2015 11:15:39 -0500 Subject: [PATCH] parser: Updated grammar to support prefixed and suffixed `String` and `Char` Signed-off-by: Lucas Bajolet --- src/parser/nit.sablecc3xx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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; -- 1.7.9.5