Class: Ascode::Interpreter::Math

Inherits:
Object
  • Object
show all
Defined in:
lib/ascode/interpreter/math.rb

Class Method Summary collapse

Class Method Details

.bigger_than(env) ⇒ Object



38
39
40
41
42
# File 'lib/ascode/interpreter/math.rb', line 38

def self.bigger_than(env)
  a = env.pop
  b = env.pop
  env.push a > b ? 1 : 0
end

.change_sign(env) ⇒ Object



69
70
71
# File 'lib/ascode/interpreter/math.rb', line 69

def self.change_sign(env)
  env.push(-1 * env.pop)
end

.decrement(env) ⇒ Object



33
34
35
36
# File 'lib/ascode/interpreter/math.rb', line 33

def self.decrement(env)
  a = env.pop
  env.push a - 1
end

.divide(env) ⇒ Object



16
17
18
19
20
# File 'lib/ascode/interpreter/math.rb', line 16

def self.divide(env)
  a = env.pop
  b = env.pop
  env.push a / b
end

.equal(env) ⇒ Object



50
51
52
53
54
# File 'lib/ascode/interpreter/math.rb', line 50

def self.equal(env)
  a = env.pop
  b = env.pop
  env.push a == b ? 1 : 0
end

.even(env) ⇒ Object



56
57
58
# File 'lib/ascode/interpreter/math.rb', line 56

def self.even(env)
  env.push env.pop.even? ? 1 : 0
end

.increment(env) ⇒ Object



28
29
30
31
# File 'lib/ascode/interpreter/math.rb', line 28

def self.increment(env)
  a = env.pop
  env.push a + 1
end

.invert(env) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/ascode/interpreter/math.rb', line 60

def self.invert(env)
  a = env.pop
  if a.zero?
    env.push 1
  else
    env.push 0
  end
end

.less_than(env) ⇒ Object



44
45
46
47
48
# File 'lib/ascode/interpreter/math.rb', line 44

def self.less_than(env)
  a = env.pop
  b = env.pop
  env.push a < b ? 1 : 0
end

.minus(env) ⇒ Object



10
11
12
13
14
# File 'lib/ascode/interpreter/math.rb', line 10

def self.minus(env)
  a = env.pop
  b = env.pop
  env.push a - b
end

.multiply(env) ⇒ Object



22
23
24
25
26
# File 'lib/ascode/interpreter/math.rb', line 22

def self.multiply(env)
  a = env.pop
  b = env.pop
  env.push a * b
end

.plus(env) ⇒ Object



4
5
6
7
8
# File 'lib/ascode/interpreter/math.rb', line 4

def self.plus(env)
  a = env.pop
  b = env.pop
  env.push a + b
end