# 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