import Ġjava . lang . RuntimeException Ċ Ċ class ĠUnary Operator Parser ( private Ġval Ġvalues : ĠMutable List < Value >) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvalues . indices . reversed (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Unary Operator ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperator ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Unary Operator ( i : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġvalues [ i ]. is Operator Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOperators . is Unary ( values [ i ]. str ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( i Ġ== Ġ 0 Ġ|| Ġvalues [ i - 1 ]. is Operator ) ĊĊĠĠĠ Ġprivate Ġfun Ġoperator ( i : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġvalues [ i + 1 ] ĊĠĠĠĠĠĠĠ Ġcheck Operand ( right ) ĊĊĠĠĠĠĠĠĠ Ġvalues [ i ]. expr Ġ= Ġunary Expr ( values [ i ]. str , Ġright . expr !! ) ĊĠĠĠĠĠĠĠ Ġvalues [ i ]. pre cedence Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvalues . remove At ( i Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Operand ( value : ĠValue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! value . parsed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Error : ĠInvalid Ġoperand Ġ\" ${ value . str }\" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ