package Ġcom . mat tm ik . rap ira . interpreter Ċ Ċ import Ġcom . github . aj alt . cli kt . output . Term Ui . echo Ċ import Ġcom . mat tm ik . rap ira . Environment Ċ import Ġcom . mat tm ik . rap ira . visitor s . Statement Visitor Ċ import Ġjava . io . InputStream Ċ Ċ object ĠInterpreter Factory Ġ{ ĊĊĠĠĠ Ġfun Ġmake InputStream Interpreter (): ĠInterpreter < InputStream > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatement Visitor Ġ= ĠStatement Visitor ( Environment ()) ĊĠĠĠĠĠĠĠ Ġval Ġchar Stream Interpreter Ġ= ĠChar Stream Interpreter ( statement Visitor ) ĊĠĠĠĠĠĠĠ Ġval Ġerror Handling Interpreter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Handling Interpreter ( char Stream Interpreter , Ġabort OnError Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġreturn ĠInputStream Interpreter ( error Handling Interpreter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake REPL Interpreter (): ĠInterpreter < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatement Visitor Ġ= ĠStatement Visitor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput To Repl Ġ= Ġ{ Ġobj Ġ-> Ġecho ( obj ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġchar Stream Interpreter Ġ= ĠChar Stream Interpreter ( statement Visitor ) ĊĠĠĠĠĠĠĠ Ġval Ġerror Handling Interpreter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Handling Interpreter ( char Stream Interpreter , Ġabort OnError Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠREPL Interpreter ( error Handling Interpreter ) ĊĠĠĠ Ġ} Ċ } Ċ