Class: OrigenVerilog::Preprocessor::VerilogParser

Inherits:
OrigenVerilog::Processor show all
Defined in:
lib/origen_verilog/preprocessor/verilog_parser.rb

Overview

Invokes the Verilog parser on all text_block nodes, transforming the given pre-processor output AST into a Verilog AST

Instance Method Summary collapse

Methods inherited from OrigenVerilog::Processor

#inline, #process, #process_all

Instance Method Details

#handler_missing(node) ⇒ Object



27
28
29
# File 'lib/origen_verilog/preprocessor/verilog_parser.rb', line 27

def handler_missing(node)
  fail "No handler defined for node type: #{node.type}"
end

#on_file(node) ⇒ Object



20
21
22
23
24
25
# File 'lib/origen_verilog/preprocessor/verilog_parser.rb', line 20

def on_file(node)
  file, *nodes = *node
  node = VerilogParser.new.run(node.updated(nil, nodes), @options.merge(file: file))
  @nodes += node.children
  nil
end

#on_text_block(node) ⇒ Object



14
15
16
17
18
# File 'lib/origen_verilog/preprocessor/verilog_parser.rb', line 14

def on_text_block(node)
  node = Verilog::Parser.parse(node.to_a[0], @options.merge(file: @file))
  @nodes += node.children
  nil
end

#run(node, options = {}) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/origen_verilog/preprocessor/verilog_parser.rb', line 6

def run(node, options = {})
  @nodes = []
  @file = options[:file]
  @options = options
  process_all(node.children)
  Verilog::Node.new(:verilog_source, @nodes, file: @file)
end