Class: SystemRDL::Evaluator::Processor
- Inherits:
-
AST::Processor
- Object
- AST::Processor
- SystemRDL::Evaluator::Processor
- Defined in:
- lib/systemrdl/evaluator/processor.rb
Instance Method Summary collapse
- #on_accesstype(node) ⇒ Object
- #on_address_alignment(node) ⇒ Object
- #on_address_assignment(node) ⇒ Object
- #on_address_stride(node) ⇒ Object
- #on_addressingtype(node) ⇒ Object
- #on_array(node) ⇒ Object
- #on_binary_operation(node) ⇒ Object
- #on_boolean(node) ⇒ Object
- #on_component_anon_def(node) ⇒ Object
- #on_component_inst(node) ⇒ Object
- #on_component_insts(node) ⇒ Object
- #on_component_named_def(node) ⇒ Object
- #on_default_prop_assignment(node) ⇒ Object
- #on_explicit_component_inst(node) ⇒ Object
- #on_id(node) ⇒ Object
- #on_instance_ref(node) ⇒ Object
- #on_instance_ref_element(node) ⇒ Object
- #on_number(node) ⇒ Object
- #on_onreadtype(node) ⇒ Object
- #on_onwritetype(node) ⇒ Object
- #on_post_prop_assignment(node) ⇒ Object
- #on_precedencetype(node) ⇒ Object
- #on_prop_assignment(node) ⇒ Object
- #on_prop_ref(node) ⇒ Object
- #on_range(node) ⇒ Object
- #on_reset_value(node) ⇒ Object
- #on_root(node) ⇒ Object
- #on_string(node) ⇒ Object
- #on_unary_operation(node) ⇒ Object
- #on_verilog_number(node) ⇒ Object
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 |