summaryrefslogtreecommitdiff
path: root/src/bin/transcriptor.ml
blob: f86852f9f1802317683ab02af3896118f9ee9d76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module T = Translator

let process (optional_line : string option) =
  match optional_line with
  | None -> ()
  | Some line ->

    let res = Result.map
        (fun t-> Sounds.repr (module Repr.Default) t)
        (T.Reader.process line) in
    match res with
    | Ok response -> print_endline response
    | Error err -> print_endline err

let rec repeat channel =
  (* Attempt to read one line. *)
  let optional_line, continue = T.Lexer.line channel in
  process optional_line;
  if continue then
    repeat channel

let () =
  repeat (Lexing.from_channel stdin)