Class: SystemRDL::Evaluator::Processor

Inherits:
AST::Processor
  • Object
show all
Defined in:
lib/systemrdl/evaluator/processor.rb

Instance Method Summary collapse

Instance Method Details

#on_accesstype(node) ⇒ Object



27
28
29
# File 'lib/systemrdl/evaluator/processor.rb', line 27

def on_accesstype(node)
  AccessType.new(node)
end

#on_address_alignment(node) ⇒ Object



115
116
117
# File 'lib/systemrdl/evaluator/processor.rb', line 115

def on_address_alignment(node)
  process(node.children[0])
end

#on_address_assignment(node) ⇒ Object



107
108
109
# File 'lib/systemrdl/evaluator/processor.rb', line 107

def on_address_assignment(node)
  process(node.children[0])
end

#on_address_stride(node) ⇒ Object



111
112
113
# File 'lib/systemrdl/evaluator/processor.rb', line 111

def on_address_stride(node)
  process(node.children[0])
end

#on_addressingtype(node) ⇒ Object



39
40
41
# File 'lib/systemrdl/evaluator/processor.rb', line 39

def on_addressingtype(node)
  AddressingType.new(node)
end

#on_array(node) ⇒ Object



60
61
62
63
# File 'lib/systemrdl/evaluator/processor.rb', line 60

def on_array(node)
  elements = process_all(node.children)
  List.new(elements, node.token_range)
end

#on_binary_operation(node) ⇒ Object



53
54
55
56
57
58
# File 'lib/systemrdl/evaluator/processor.rb', line 53

def on_binary_operation(node)
  operator = node.children[0].to_sym
  l_operand = process(node.children[1])
  r_operand = process(node.children[2])
  BinaryOperation.new(operator, l_operand, r_operand, node.token_range)
end

#on_boolean(node) ⇒ Object



11
12
13
# File 'lib/systemrdl/evaluator/processor.rb', line 11

def on_boolean(node)
  Boolean.new(node)
end

#on_component_anon_def(node) ⇒ Object



144
145
146
147
# File 'lib/systemrdl/evaluator/processor.rb', line 144

def on_component_anon_def(node)
  *elements, insts = process_all(node.children[1..])
  component_definition(node).new(nil, elements, insts, node.token_range)
end

#on_component_inst(node) ⇒ Object



119
120
121
122
123
124
125
126
# File 'lib/systemrdl/evaluator/processor.rb', line 119

def on_component_inst(node)
  inst_id = process(node.children[0])
  inst_values =
    [
      :array, :range, :reset_value, :address_assignment, :address_stride, :address_alignment
    ].zip(node.children[1..]).to_h { |k, n| [k, process(n)] }
  ComponentInst.new(inst_id, inst_values, node.token_range)
end

#on_component_insts(node) ⇒ Object



128
129
130
131
# File 'lib/systemrdl/evaluator/processor.rb', line 128

def on_component_insts(node)
  insts = process_all(node.children)
  ComponentInsts.new(insts, node.token_range)
end

#on_component_named_def(node) ⇒ Object



139
140
141
142
# File 'lib/systemrdl/evaluator/processor.rb', line 139

def on_component_named_def(node)
  id, *elements = process_all(node.children[1..])
  component_definition(node).new(id, elements, nil, node.token_range)
end

#on_default_prop_assignment(node) ⇒ Object



87
88
89
90
# File 'lib/systemrdl/evaluator/processor.rb', line 87

def on_default_prop_assignment(node)
  prop_name, value = process_all(node.children)
  DefaultPropertyAssignment.new(prop_name, value, node.token_range)
end

#on_explicit_component_inst(node) ⇒ Object



133
134
135
136
137
# File 'lib/systemrdl/evaluator/processor.rb', line 133

def on_explicit_component_inst(node)
  id = process(node.children[0])
  insts = process(node.children[1])
  ExplicitComponentInst.new(id, insts, node.token_range)
end

#on_id(node) ⇒ Object



6
7
8
9
# File 'lib/systemrdl/evaluator/processor.rb', line 6

def on_id(node)
  id = node.children[0].to_sym
  Value.new(id, nil, nil, node.token_range)
end

#on_instance_ref(node) ⇒ Object



76
77
78
79
# File 'lib/systemrdl/evaluator/processor.rb', line 76

def on_instance_ref(node)
  elements = process_all(node.children)
  InstanceRef.new(elements, node.token_range)
end

#on_instance_ref_element(node) ⇒ Object



70
71
72
73
74
# File 'lib/systemrdl/evaluator/processor.rb', line 70

def on_instance_ref_element(node)
  id = process(node.children[0])
  array = process(node.children[1])
  InstanceRefElement.new(id, array, node.token_range)
end

#on_number(node) ⇒ Object



15
16
17
# File 'lib/systemrdl/evaluator/processor.rb', line 15

def on_number(node)
  Number.new(node)
end

#on_onreadtype(node) ⇒ Object



31
32
33
# File 'lib/systemrdl/evaluator/processor.rb', line 31

def on_onreadtype(node)
  OnReadType.new(node)
end

#on_onwritetype(node) ⇒ Object



35
36
37
# File 'lib/systemrdl/evaluator/processor.rb', line 35

def on_onwritetype(node)
  OnWriteType.new(node)
end

#on_post_prop_assignment(node) ⇒ Object



98
99
100
101
# File 'lib/systemrdl/evaluator/processor.rb', line 98

def on_post_prop_assignment(node)
  prop_ref, value = process_all(node.children)
  PostPropertyAssignment.new(prop_ref, value, node.token_range)
end

#on_precedencetype(node) ⇒ Object



43
44
45
# File 'lib/systemrdl/evaluator/processor.rb', line 43

def on_precedencetype(node)
  PrecedenceType.new(node)
end

#on_prop_assignment(node) ⇒ Object



92
93
94
95
96
# File 'lib/systemrdl/evaluator/processor.rb', line 92

def on_prop_assignment(node)
  id, value = process_all(node.children)
  prop_ref = PropRef.new(nil, id, node.children[0].token_range)
  PropertyAssignment.new(prop_ref, value, node.token_range)
end

#on_prop_ref(node) ⇒ Object



81
82
83
84
85
# File 'lib/systemrdl/evaluator/processor.rb', line 81

def on_prop_ref(node)
  instance_ref = process(node.children[0])
  prop = process(node.children[1])
  PropRef.new(instance_ref, prop, node.token_range)
end

#on_range(node) ⇒ Object



65
66
67
68
# File 'lib/systemrdl/evaluator/processor.rb', line 65

def on_range(node)
  elements = process_all(node.children)
  List.new(elements, node.token_range)
end

#on_reset_value(node) ⇒ Object



103
104
105
# File 'lib/systemrdl/evaluator/processor.rb', line 103

def on_reset_value(node)
  process(node.children[0])
end

#on_root(node) ⇒ Object



149
150
151
152
# File 'lib/systemrdl/evaluator/processor.rb', line 149

def on_root(node)
  elements = process_all(node.children)
  Root.new(elements, node.token_range)
end

#on_string(node) ⇒ Object



23
24
25
# File 'lib/systemrdl/evaluator/processor.rb', line 23

def on_string(node)
  String.new(node)
end

#on_unary_operation(node) ⇒ Object



47
48
49
50
51
# File 'lib/systemrdl/evaluator/processor.rb', line 47

def on_unary_operation(node)
  operator = node.children[0].to_sym
  operand = process(node.children[1])
  UnaryOperation.new(operator, operand, node.token_range)
end

#on_verilog_number(node) ⇒ Object



19
20
21
# File 'lib/systemrdl/evaluator/processor.rb', line 19

def on_verilog_number(node)
  VerilogNumber.new(node)
end