main
main.dats
1#include "share/atspre_staload.hats"
2staload "libats/libc/SATS/stdio.sats"
3staload "libats/SATS/stringbuf.sats"
4staload "libats/DATS/stringbuf.dats"
5staload "scan.sats"
6staload "parse.sats"
7
8implement main0 () =
9let
10 val manifest = fileref_open_exn("build.ninja", file_mode_r)
11 (* initialize the scanner *)
12 var s: scanner = @{
13 file = manifest,
14 buf = stringbuf_make_nil(i2sz(64)),
15 cur = fgetc0(manifest),
16 line = 1,
17 col = 1 }
18 val result = parse(s, nil_vt(), nil_vt(), nil_vt())
19in
20 printrule(result.rules);
21 manifest_free(result);
22 let
23 val @{file = _, buf = buf, cur = _, line = _, col = _} = s
24 in
25 stringbuf_free(buf)
26 end;
27 fileref_close(manifest)
28end