Class: OrigenVerilog::Verilog::Evaluator

Inherits:
Processor
  • Object
show all
Defined in:
lib/origen_verilog/verilog/evaluator.rb

Instance Method Summary collapse

Methods inherited from Processor

#handler_missing, #inline, #process, #process_all

Instance Method Details

#on_constant_expression(node) ⇒ Object



8
9
10
11
12
13
# File 'lib/origen_verilog/verilog/evaluator.rb', line 8

def on_constant_expression(node)
  nodes = process_all(node.children)
  nodes = nodes.map { |n| n.is_a?(Node) ? process(n.value) : n }
  # Ruby should be close enough to Verilog to just eval the expression for most cases
  eval(nodes.join(' '))
end

#on_constant_primary(node) ⇒ Object



19
20
21
# File 'lib/origen_verilog/verilog/evaluator.rb', line 19

def on_constant_primary(node)
  process(node.value)
end

#on_decimal_number(node) ⇒ Object



15
16
17
# File 'lib/origen_verilog/verilog/evaluator.rb', line 15

def on_decimal_number(node)
  process(node.value)
end

#run(ast) ⇒ Object



4
5
6
# File 'lib/origen_verilog/verilog/evaluator.rb', line 4

def run(ast)
  ast.updated(nil, process_all(ast.children))
end