summaryrefslogtreecommitdiff
path: root/src/lexer.mll
diff options
context:
space:
mode:
authorJon French2018-12-28 15:12:00 +0000
committerJon French2018-12-28 15:12:00 +0000
commitb59fba68e535f39b6285ec7f4f693107b6e34148 (patch)
tree3135513ac4b23f96b41f3d521990f1ce91206c99 /src/lexer.mll
parent9f6a95882e1d3d057bcb83d098ba1b63925a4d1f (diff)
parent2c887e7d01331d3165120695594eac7a2650ec03 (diff)
Merge branch 'sail2' into rmem_interpreter
Diffstat (limited to 'src/lexer.mll')
-rw-r--r--src/lexer.mll16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/lexer.mll b/src/lexer.mll
index cbefa601..57580e7a 100644
--- a/src/lexer.mll
+++ b/src/lexer.mll
@@ -97,8 +97,7 @@ let operators = ref
(List.fold_left
(fun r (x, y) -> M.add x y r)
M.empty
- [ ("==", mk_operator Infix 4 "==");
- ("/", mk_operator InfixL 7 "/");
+ [ ("/", mk_operator InfixL 7 "/");
("%", mk_operator InfixL 7 "%");
])
@@ -141,11 +140,13 @@ let kw_table =
("ref", (fun _ -> Ref));
("Int", (fun x -> Int));
("Order", (fun x -> Order));
+ ("Bool", (fun x -> Bool));
("pure", (fun x -> Pure));
("register", (fun x -> Register));
("return", (fun x -> Return));
("scattered", (fun x -> Scattered));
("sizeof", (fun x -> Sizeof));
+ ("constant", (fun x -> Constant));
("constraint", (fun x -> Constraint));
("struct", (fun x -> Struct));
("then", (fun x -> Then));
@@ -163,7 +164,6 @@ let kw_table =
("do", (fun _ -> Do));
("mutual", (fun _ -> Mutual));
("bitfield", (fun _ -> Bitfield));
- ("tuple", (fun _ -> Tuple));
("where", (fun _ -> Where));
("barr", (fun x -> Barr));
@@ -225,9 +225,7 @@ rule token = parse
| "," { Comma }
| ".." { DotDot }
| "." { Dot }
- | "==" as op
- { try M.find op !operators
- with Not_found -> raise (LexError ("Operator fixity undeclared " ^ op, Lexing.lexeme_start_p lexbuf)) }
+ | "==" { EqEq(r"==") }
| "=" { (Eq(r"=")) }
| ">" { (Gt(r">")) }
| "-" { Minus }
@@ -329,12 +327,12 @@ and string pos b = parse
| ([^'"''\n''\\']* as i) { Buffer.add_string b i; string pos b lexbuf }
| escape_sequence as i { Buffer.add_string b i; string pos b lexbuf }
| '\\' '\n' ws { Lexing.new_line lexbuf; string pos b lexbuf }
- | '\\' { assert false (*raise (Reporting_basic.Fatal_error (Reporting_basic.Err_syntax (pos,
+ | '\\' { assert false (*raise (Reporting.Fatal_error (Reporting.Err_syntax (pos,
"illegal backslash escape in string"*) }
| '"' { let s = unescaped(Buffer.contents b) in
(*try Ulib.UTF8.validate s; s
with Ulib.UTF8.Malformed_code ->
- raise (Reporting_basic.Fatal_error (Reporting_basic.Err_syntax (pos,
+ raise (Reporting.Fatal_error (Reporting.Err_syntax (pos,
"String literal is not valid utf8"))) *) s }
- | eof { assert false (*raise (Reporting_basic.Fatal_error (Reporting_basic.Err_syntax (pos,
+ | eof { assert false (*raise (Reporting.Fatal_error (Reporting.Err_syntax (pos,
"String literal not terminated")))*) }