summaryrefslogtreecommitdiff
path: root/src/lexer.mll
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.mll')
-rw-r--r--src/lexer.mll24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/lexer.mll b/src/lexer.mll
index 36aefb1d..76f2e0a5 100644
--- a/src/lexer.mll
+++ b/src/lexer.mll
@@ -134,7 +134,7 @@ let kw_table =
]
-let default_type_names = ["bool";"unit";"vector";"range";"list";"bit";"nat"; "int";
+let default_type_names = ["bool";"unit";"vector";"range";"list";"bit";"nat"; "int"; "real";
"uint8";"uint16";"uint32";"uint64";"atom";"implicit";"string";"option"]
let custom_type_names : string list ref = ref []
@@ -310,16 +310,18 @@ rule token = parse
| "*_ui" oper_char+ as i { (StarUnderUiI(r i)) }
| "2^" oper_char+ as i { (TwoCarrotI(r i)) }
- | digit+ as i { (Num(int_of_string i)) }
- | "-" digit+ as i { (Num(int_of_string i)) }
- | "0b" (binarydigit+ as i) { (Bin(i)) }
- | "0x" (hexdigit+ as i) { (Hex(i)) }
- | '"' { (String(
- string (Lexing.lexeme_start_p lexbuf) (Buffer.create 10) lexbuf)) }
- | eof { Eof }
- | _ as c { raise (LexError(
- Printf.sprintf "Unexpected character: %c" c,
- Lexing.lexeme_start_p lexbuf)) }
+ | (digit* as i1) "." (digit+ as i2) { (Real (i1 ^ "." ^ i2)) }
+ | "-" (digit* as i1) "." (digit+ as i2) { (Real ("-" ^ i1 ^ "." ^ i2)) }
+ | digit+ as i { (Num(int_of_string i)) }
+ | "-" digit+ as i { (Num(int_of_string i)) }
+ | "0b" (binarydigit+ as i) { (Bin(i)) }
+ | "0x" (hexdigit+ as i) { (Hex(i)) }
+ | '"' { (String(
+ string (Lexing.lexeme_start_p lexbuf) (Buffer.create 10) lexbuf)) }
+ | eof { Eof }
+ | _ as c { raise (LexError(
+ Printf.sprintf "Unexpected character: %c" c,
+ Lexing.lexeme_start_p lexbuf)) }
and comment pos depth = parse