module T = Translator module P = T.Parser module Parser = P.Make(Sounds) module I = Parser.MenhirInterpreter let process (optional_line : string option) = match optional_line with | None -> () | Some line -> match T.Reader.process line 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)