Sha256: b19d068bbee1f6597770e3c37340545c4395adb0b203f0b3e1de2b6dabaa749f

Contents?: true

Size: 618 Bytes

Versions: 8

Compression:

Stored size: 618 Bytes

Contents

module OrigenVerilog
  module Verilog
    class Evaluator < OrigenVerilog::Processor
      def run(ast)
        ast.updated(nil, process_all(ast.children))
      end

      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

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

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
origen_verilog-0.6.3 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.6.2 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.6.1 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.6.0 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.5.2 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.5.1 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.5.0 lib/origen_verilog/verilog/evaluator.rb
origen_verilog-0.4.0 lib/origen_verilog/verilog/evaluator.rb