d = '0123456789'; op = any('+-*/'); ws = ' ' char(9) sp1 = span(ws); sp0 = sp1 | '' int = span(d) num = (any('+-') | '') int ('.' (int | '') | '') xpr = num . x sp1 num . y sp1 op . o (sp1 | rpos(0)) read line = input :f(end) line pos(0) sp0 rpos(0) :s(read) zapp line (pos(0) | notany(d)) . p '.' any(d) . q + = p '0.' q :s(zapp) doop line sp0 xpr = ' ' eval(x + 0. ' ' o ' ' y) ' ' :s(doop) line pos(0) sp0 (num . output) sp0 rpos(0) :s(read) output = 'error' :(read) end