set stack [list]
proc K {x y} {return $x}
proc pop {} {K [lindex $::stack end] [set ::stack [lrange $::stack 0 end-1]]}
interp alias {} push {} lappend stack

while {![eof stdin]} {
    foreach token [split [gets stdin]] {
        if [catch {switch -regexp -- $token {
            {^[-+]?(\d*\.)?\d+([Ee][-+]?\d+)?$} {push $token}
            {^[+*/-]$} {set n [pop]; push [expr "[pop] $token $n"]}
        }}] {error "stack underflow"}
    }
    puts [lindex $stack end]
}

