# Програмата реализира аритметичен калкулатор, който пресмята изрази в обратен полски запис, # образувани от цели или с десетична запетая числа, всяко възможно със знак + или -, и четирите # аритметични операции +, -, * и /. # За всеки въведен ред с правилно съставен израз на нов ред се извежда пресметнатата стойност. # За неправилно образувани редове се извежда текст error. # Празните редове, включително тези само от шпации и знаци за табулиране, се оставят без последствие. # За това как работи програмата виж http://www.math.bas.bg/bantchev/place/rpn/rpn.icon.html. procedure main() ws := ' \t' while stk := [] & line := " " || read() || " " do { line ? while tab(many(ws)) & s := tab(upto(ws)) do put(stk,real(s)) | (1 = *s & find(s,"+-*/") & y := pull(stk) & put(stk,s(pull(stk),y))) | (write("error") & break next) if y := pull(stk) then write((0 = *stk & y) | "error") } end