Sha256: 7985901a8ff7358fdc1a34a53f8bed3b4505d4bb0d802aef93ab3a553a4dced8

Contents?: true

Size: 395 Bytes

Versions: 1

Compression:

Stored size: 395 Bytes

Contents

module Whitespace::ISA
  class Binop < Instruction
    def initialize(vm, op)
      unless Whitespace::Util.is_binop?(op)
        raise ArgumentError, "must be a binary operator: #{op}"
      end
      super(vm)
      @op = op
    end

    def execute
      right = vm.vstack.pop
      left = vm.vstack.pop

      vm.vstack.push Whitespace::Util::BINOPS[@op].call(left, right)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whitespace-ruby-1.0.0 lib/whitespace/instructions/arithmetic/binop.rb