Class: Packcr::Node::ErrorNode
Instance Attribute Summary collapse
Instance Method Summary
collapse
#alt, #link_references, #reversible?, #seq, #sequence?, #setup
Constructor Details
#initialize(expr = nil, code = nil, index = nil) ⇒ ErrorNode
6
7
8
9
10
11
12
13
|
# File 'lib/packcr/node/error_node.rb', line 6
def initialize(expr = nil, code = nil, index = nil)
super()
@expr = expr
@code = code
@index = index
self.vars = []
self.capts = []
end
|
Instance Attribute Details
#capts ⇒ Object
Returns the value of attribute capts.
4
5
6
|
# File 'lib/packcr/node/error_node.rb', line 4
def capts
@capts
end
|
#code ⇒ Object
Returns the value of attribute code.
4
5
6
|
# File 'lib/packcr/node/error_node.rb', line 4
def code
@code
end
|
#expr ⇒ Object
Returns the value of attribute expr.
4
5
6
|
# File 'lib/packcr/node/error_node.rb', line 4
def expr
@expr
end
|
#index ⇒ Object
Returns the value of attribute index.
4
5
6
|
# File 'lib/packcr/node/error_node.rb', line 4
def index
@index
end
|
#vars ⇒ Object
Returns the value of attribute vars.
4
5
6
|
# File 'lib/packcr/node/error_node.rb', line 4
def vars
@vars
end
|
Instance Method Details
#debug_dump(indent = 0) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/packcr/node/error_node.rb', line 15
def debug_dump(indent = 0)
$stdout.print "#{" " * indent}Error(index:"
Packcr.dump_integer_value(index)
$stdout.print ", code:{"
Packcr.dump_escaped_string(code.text)
$stdout.print "}, vars:\n"
vars.each do |ref|
$stdout.print "#{" " * (indent + 2)}'#{ref.var}'\n"
end
capts.each do |capt|
$stdout.print "#{" " * (indent + 2)}$#{capt.index + 1}\n"
end
$stdout.print "#{" " * indent}) {\n"
expr.debug_dump(indent + 2)
$stdout.print "#{" " * indent}}\n"
end
|
#generate_code(gen, onfail, indent, bare, oncut: nil) ⇒ Object
32
33
34
|
# File 'lib/packcr/node/error_node.rb', line 32
def generate_code(gen, onfail, indent, bare, oncut: nil)
gen.write Packcr.template("node/error.#{gen.lang}.erb", binding, indent: indent, unwrap: bare)
end
|
#nodes ⇒ Object
50
51
52
|
# File 'lib/packcr/node/error_node.rb', line 50
def nodes
[expr]
end
|
#reachability ⇒ Object
36
37
38
|
# File 'lib/packcr/node/error_node.rb', line 36
def reachability
expr.reachability
end
|
#setup_rule(rule) ⇒ Object
54
55
56
57
|
# File 'lib/packcr/node/error_node.rb', line 54
def setup_rule(rule)
@index = rule.codes.length
rule.codes.push(self)
end
|
#to_h ⇒ Object
59
60
61
62
63
64
65
66
67
|
# File 'lib/packcr/node/error_node.rb', line 59
def to_h
{
type: :error,
code: code&.text,
vars: vars&.map(&:to_h),
capts: capts&.map(&:to_h),
index: @index,
}
end
|
#verify_captures(ctx, capts) ⇒ Object
45
46
47
48
|
# File 'lib/packcr/node/error_node.rb', line 45
def verify_captures(ctx, capts)
@capts = capts
super
end
|
#verify_variables(vars) ⇒ Object
40
41
42
43
|
# File 'lib/packcr/node/error_node.rb', line 40
def verify_variables(vars)
@vars = vars
super
end
|