class Sass::Script::Parser
def production(name, sub, *ops)
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