class Sass::Script::Parser

def production(name, sub, *ops)

and ops is a list of operators for this precedence level
sub is the name of the production beneath it,
name is the name of the production,
Defines a simple left-associative production.
def production(name, sub, *ops)
  class_eval <<RUBY
    def #{name}
      interp = try_ops_after_interp(#{ops.inspect}, #{name.inspect}) and return interp
      return unless e = #{sub}
      while tok = try_tok(#{ops.map {|o| o.inspect}.join(', ')})
        interp = try_op_before_interp(tok, e) and return interp
        line = @lexer.line
        e = Operation.new(e, assert_expr(#{sub.inspect}), tok.type)
        e.line = line
      end
      e
    end
end