import Ġtoken . Tokenizer Ċ import Ġvisitor . Calc Visitor Ċ import Ġvisitor . Parser Visitor Ċ import Ġvisitor . Print Visitor Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġread Line () ĊĊĠĠĠ Ġif Ġ( input Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" No Ġinput Ġprovided ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprint Visitor Ġ= ĠPrint Visitor () ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠToken izer (). tokenize ( input ) ĊĠĠĠĠĠĠĠ Ġprintln (" Initial Ġexpression ") ĊĠĠĠĠĠĠĠ Ġprint Visitor . visit All ( tokens ) ĊĠĠĠĠĠĠĠ Ġval Ġparse Visitor Ġ= ĠParser Visitor () ĊĠĠĠĠĠĠĠ Ġparse Visitor . visit All ( tokens ) ĊĠĠĠĠĠĠĠ Ġval Ġreverse Pol ish Not ation Ġ= Ġparse Visitor . result ĊĠĠĠĠĠĠĠ Ġprintln (" Trans formed Ġto Ġreverse Ġpol ish Ġnotation ") ĊĠĠĠĠĠĠĠ Ġprint Visitor . visit All ( reverse Pol ish Not ation ) ĊĠĠĠĠĠĠĠ Ġval Ġcalc Visitor Ġ= ĠCalc Visitor () ĊĠĠĠĠĠĠĠ Ġcalc Visitor . visit All ( reverse Pol ish Not ation ) ĊĠĠĠĠĠĠĠ Ġprintln (" Calculated Ġresult : Ġ${ calc Visitor . result }") ĊĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Error Ġoccurred , Ġmore Ġinfo : Ġ${ t . message }") ĊĠĠĠ Ġ} Ċ }