package Ġedu . tom er bu . calc Ċ Ċ import Ġjava . util .* Ċ Ċ class ĠRP N No Parent heses Ġ{ ĊĊĠĠĠ Ġfun Ġto RP N ( expression : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= ĠStack < Char >() ĊĠĠĠĠĠĠĠ Ġvar Ġres Ġ= ĠStack < Char >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( char Ġin Ġexpression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Operand ( char )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . push ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( is Operator ( char )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// look Ġfor Ġother Ġoperators Ġin Ġthe Ġstack Ġhaving Ġhigher Ġprecedence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( s . isNotEmpty () Ġ&& Ġhas High er Pre cedence ( s . peek (), Ġchar )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . push ( s . pop ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . push ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile Ġ( s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . push ( s . pop ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ( res ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġoperators Ġ= ĠarrayOf (' =', Ġ'+', Ġ'-', Ġ'*', Ġ'/ '); ĊĠĠĠ Ġprivate Ġval Ġprecedence Ġ= Ġmap Of < Char , ĠInt >( Pair ('* ', Ġ 1 2 ), ĠPair ('/', Ġ 1 2 ), ĠPair ('+ ', Ġ 1 1 ), ĠPair ('- ', Ġ 1 1 )) ĊĠĠĠ Ġprivate Ġfun Ġhas High er Pre cedence ( op 1 : ĠChar , Ġop 2 : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 1 Ġ= Ġprecedence [ op 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= Ġprecedence [ op 2 ] ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv 1 Ġ?: Ġ 0 Ġ> Ġv 2 Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Operand ( char : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ! is Operator ( char ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Operator ( char : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoperators . contains ( char ); ĊĠĠĠ Ġ} Ċ }