diff options
author | Malte Voos <git@mal.tc> | 2024-06-23 23:31:59 +0200 |
---|---|---|
committer | Malte Voos <git@mal.tc> | 2024-06-24 00:16:55 +0200 |
commit | 5d227bcd0055d02e1d49a3dcd27e80a756923d5b (patch) | |
tree | da468ad3a8f3caf709b731ca2678c86a5a015990 /src/parser/Parser.ml | |
parent | 8d40541003736d5319ec981278338e8c8c66daf6 (diff) | |
download | toytt-5d227bcd0055d02e1d49a3dcd27e80a756923d5b.tar.gz toytt-5d227bcd0055d02e1d49a3dcd27e80a756923d5b.zip |
split code into smaller libraries and make a better repl
Diffstat (limited to 'src/parser/Parser.ml')
-rw-r--r-- | src/parser/Parser.ml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/parser/Parser.ml b/src/parser/Parser.ml new file mode 100644 index 0000000..4593d82 --- /dev/null +++ b/src/parser/Parser.ml @@ -0,0 +1,13 @@ +let parse_expr (s : string) : Ast.expr = + let lexbuf = Lexing.from_string s in + let string_source : Asai.Range.string_source = { + title = None; + content = s; + } in + let source = `String string_source in + Eff.run ~env:source @@ fun () -> + try Grammar.start_expr Lexer.token lexbuf with + | Lexer.IllegalCharacter illegal_char -> + Reporter.illegal_character ~loc:(Asai.Range.of_lexbuf ~source lexbuf) illegal_char + | Grammar.Error -> + Reporter.syntax_error ~loc:(Asai.Range.of_lexbuf ~source lexbuf) |