# File test/src/s_expression_test.rb, line 18 def parser expr = nil lazy_expr = lazy{expr} term = number.map(&To_f) | lparen >> lazy_expr << rparen binop = char('+') >> Plus | char('-') >> Minus | char('*') >> Mul | char('/') >> Div binop = ignore binop term = ignore term binary = sequence(binop, lazy_expr, lazy_expr) do |op, e1, e2| op.call(e1, e2) end expr = delim >> (term | binary) end