From 97f84ccace4e634b4e02178a702818e69292dc9f Mon Sep 17 00:00:00 2001 From: Malte Voos Date: Mon, 8 Jul 2024 22:01:42 +0200 Subject: implement top-level definitions --- src/driver/Driver.ml | 12 ++++++++++++ src/driver/dune | 12 ++++++++++++ src/driver/test.toytt | 1 + 3 files changed, 25 insertions(+) create mode 100644 src/driver/Driver.ml create mode 100644 src/driver/dune create mode 100644 src/driver/test.toytt (limited to 'src/driver') diff --git a/src/driver/Driver.ml b/src/driver/Driver.ml new file mode 100644 index 0000000..a2c4364 --- /dev/null +++ b/src/driver/Driver.ml @@ -0,0 +1,12 @@ +let process_item (toplvl : TopLevel.t) (item : Ast.item) : TopLevel.t = + let (name, item) = match item with + | Ast.Def { name; tp; tm } -> + let tp = Elaborator.check_tp_toplevel ~toplvl tp in + let tm = Elaborator.check_toplevel ~toplvl ~tm ~tp in + (name, TopLevel.Def { tp; tm = lazy (NbE.eval_toplevel tm) }) + in + Yuujinchou.Trie.update_singleton name.value (fun _ -> Some (item, ())) toplvl + +let process_file (path : string) : TopLevel.t = + let file = Parser.parse_file path in + List.fold_left process_item Yuujinchou.Trie.empty file diff --git a/src/driver/dune b/src/driver/dune new file mode 100644 index 0000000..db5f824 --- /dev/null +++ b/src/driver/dune @@ -0,0 +1,12 @@ +(library + (name Driver) + (public_name toytt.driver) + (libraries + algaeff + bwd + toytt.ast + toytt.elaborator + toytt.error + toytt.nbe + toytt.parser + toytt.toplevel)) diff --git a/src/driver/test.toytt b/src/driver/test.toytt new file mode 100644 index 0000000..273b42b --- /dev/null +++ b/src/driver/test.toytt @@ -0,0 +1 @@ +def t : bool := true -- cgit 1.4.1