Class: SFRP::Flat::MatchExp
- Inherits:
-
Struct
- Object
- Struct
- SFRP::Flat::MatchExp
- Defined in:
- lib/sfrp/flat/expression.rb
Defined Under Namespace
Instance Attribute Summary collapse
-
#cases ⇒ Object
Returns the value of attribute cases.
-
#left_exp ⇒ Object
Returns the value of attribute left_exp.
-
#sp ⇒ Object
Returns the value of attribute sp.
Instance Method Summary collapse
- #alpha_convert(table, serial) ⇒ Object
- #lift_node_ref(collected_node_refs) ⇒ Object
- #to_poly ⇒ Object
Instance Attribute Details
#cases ⇒ Object
Returns the value of attribute cases
55 56 57 |
# File 'lib/sfrp/flat/expression.rb', line 55 def cases @cases end |
#left_exp ⇒ Object
Returns the value of attribute left_exp
55 56 57 |
# File 'lib/sfrp/flat/expression.rb', line 55 def left_exp @left_exp end |
#sp ⇒ Object
Returns the value of attribute sp
55 56 57 |
# File 'lib/sfrp/flat/expression.rb', line 55 def sp @sp end |
Instance Method Details
#alpha_convert(table, serial) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/sfrp/flat/expression.rb', line 90 def alpha_convert(table, serial) new_left_exp = left_exp.alpha_convert(table, serial) new_cases = cases.map do |c| c.pattern.duplicated_var_check new_table = table.clone new_pattern = c.pattern.alpha_convert(new_table, serial) new_exp = c.exp.alpha_convert(new_table, serial) Case.new(new_pattern, new_exp) end MatchExp.new(new_left_exp, new_cases) end |
#lift_node_ref(collected_node_refs) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/sfrp/flat/expression.rb', line 82 def lift_node_ref(collected_node_refs) new_left_exp = left_exp.lift_node_ref(collected_node_refs) new_cases = cases.map do |c| Case.new(c.pattern, c.exp.lift_node_ref(collected_node_refs)) end MatchExp.new(new_left_exp, new_cases, sp) end |