class Ascode::Interpreter::Environment

Attributes

ast[RW]
register[RW]
stack[RW]

Public Class Methods

new(ast = "") click to toggle source
# File lib/ascode/interpreter/environment.rb, line 8
def initialize(ast = "")
  @ast = ast
  @stack = []
  @register = nil
end

Public Instance Methods

duplicate() click to toggle source
# File lib/ascode/interpreter/environment.rb, line 43
def duplicate
  a = pop
  push a
  push a
end
pop(ask = true) click to toggle source
# File lib/ascode/interpreter/environment.rb, line 26
def pop(ask = true)
  value = @stack.pop
  if value
    value
  elsif ask
    IO.input itself
    @stack.pop
  end
end
push(what) click to toggle source
# File lib/ascode/interpreter/environment.rb, line 14
def push(what)
  @stack.push what
end
reg_copy() click to toggle source
# File lib/ascode/interpreter/environment.rb, line 18
def reg_copy
  @register = pop
end
reg_paste() click to toggle source
# File lib/ascode/interpreter/environment.rb, line 22
def reg_paste
  push @register
end
swap() click to toggle source
# File lib/ascode/interpreter/environment.rb, line 36
def swap
  a = pop false
  b = pop false
  push a
  push b
end