Class: OrigenVerilog::Parser
- Inherits:
-
Object
- Object
- OrigenVerilog::Parser
show all
- Defined in:
- lib/origen_verilog/parser.rb
Class Method Summary
collapse
Class Method Details
.file ⇒ Object
39
40
41
|
# File 'lib/origen_verilog/parser.rb', line 39
def self.file
@file
end
|
.last_error_msg ⇒ Object
35
36
37
|
# File 'lib/origen_verilog/parser.rb', line 35
def self.last_error_msg
@last_error_msg || []
end
|
.parse(data, options = {}) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/origen_verilog/parser.rb', line 9
def self.parse(data, options = {})
@file = options[:file]
Treetop.origen_verilog_parser = self
tree = parser.parse(data)
if tree.nil? && !options[:quiet]
parser.failure_reason =~ /^(Expected .+) (after|at)/m
@last_error_msg = []
@last_error_msg << "#{Regexp.last_match(1).gsub("\n", '$NEWLINE')}:" if Regexp.last_match(1)
if parser.failure_line >= data.lines.to_a.size
@last_error_msg << 'EOF'
else
@last_error_msg << data.lines.to_a[parser.failure_line - 1].gsub("\t", ' ')
end
@last_error_msg << "#{'~' * (parser.failure_column - 1)}^"
puts "Failed parsing Verilog file: #{file}"
puts @last_error_msg
end
if tree
tree.to_ast
end
end
|
.parse_file(path, options = {}) ⇒ Object
5
6
7
|
# File 'lib/origen_verilog/parser.rb', line 5
def self.parse_file(path, options = {})
parse(File.read(path), options.merge(file: path))
end
|