X-Git-Url: http://nitlanguage.org diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index eb80d5f..4a90050 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -27,7 +27,9 @@ all = [0 .. 0xFF]; lowercase = ['a' .. 'z']; uppercase = ['A' .. 'Z']; digit = ['0' .. '9']; -hexdigit = ['0'..'9'] | ['a'..'f'] | ['A'..'F']; +hexdigit = ['0'..'9'] | ['a'..'f'] | ['A'..'F'] | '_'; +bindigit = '0' | '1' | '_'; +octdigit = ['0' .. '7'] | '_'; letter = lowercase | uppercase | digit | '_'; tab = 9; @@ -199,6 +201,8 @@ attrid = '_' lowercase letter*; number = digit+; hex_number = ('0x' | '0X') hexdigit+; +bin_number = ('0b' | '0B') bindigit+; +oct_number = ('0o' | '0O') octdigit+; float = digit* '.' digit+; string = '"' str_body '"' | '"' '"' '"' long_str_body lsend1 | ''' ''' ''' long_sstr_body ''' ''' '''; start_string = '"' str_body '{' | '"' '"' '"' long_str_body lsend2; @@ -634,6 +638,8 @@ expr_single~nopar~nobra {-> expr} | {null} kwnull annotations_o {-> New expr.null(kwnull, annotations_o.annotations)} | {int} number annotations_o {-> New expr.dec_int(number, annotations_o.annotations)} | {hex_int} hex_number annotations_o {-> New expr.hex_int(hex_number, annotations_o.annotations)} + | {bin_int} bin_number annotations_o {-> New expr.bin_int(bin_number, annotations_o.annotations)} + | {oct_int} oct_number annotations_o {-> New expr.oct_int(oct_number, annotations_o.annotations)} | {float} float annotations_o {-> New expr.float(float, annotations_o.annotations)} | {char} char annotations_o {-> New expr.char(char, annotations_o.annotations)} | {string} string annotations_o {-> New expr.string(string, annotations_o.annotations)} @@ -999,6 +1005,8 @@ expr = {block} expr* kwend? | {null} kwnull annotations? | {dec_int} number annotations? | {hex_int} hex_number annotations? + | {bin_int} bin_number annotations? + | {oct_int} oct_number annotations? | {float} float annotations? | {char} char annotations? | {string} string annotations?