package Ġnet . fr an ck ben ault Ċ Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ interface ĠExp Ċ Ċ class ĠNum ( val Ġvalue Ġ: ĠInt ) Ġ: ĠExp Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ value }" ĊĠĠĠ Ġ} Ċ } Ċ class ĠSum ( val Ġleft : ĠExp , Ġval Ġright Ġ: ĠExp ) Ġ: ĠExp Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" (${ left }) Ġ+ Ġ(${ right })" ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġeval ( e Ġ: ĠExp ) Ġ: ĠInt Ġ= ĊĠĠĠ Ġwhen ( e ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠNum Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Num : Ġ${ e . value }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠSum Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Sum : Ġ${ e }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeval ( e . left ) Ġ+ Ġeval ( e . right ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" unk now Ġexpression ") ĊĠĠĠ Ġ}