Class: Pione::PNML::ConstituentRuleBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/pione/pnml/compiler.rb

Overview

ConstituentRuleBuilder builds constituent rule definitions.

Instance Method Summary collapse

Constructor Details

#initialize(net, net_name, env) ⇒ ConstituentRuleBuilder

Returns a new instance of ConstituentRuleBuilder.

Parameters:



98
99
100
101
102
# File 'lib/pione/pnml/compiler.rb', line 98

def initialize(net, net_name, env)
  @net = net
  @net_name = net_name
  @env = env
end

Instance Method Details

#buildArray(Array<RuleDefinition>,Array)

Build a consituent rule definitions by transitions in the net.



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/pione/pnml/compiler.rb', line 107

def build
  definition = build_rule_definition_table()

  # save all inner rules
  rules = definition.values.compact
  flow_elements = definition.values.compact

  # conditional branch
  @net.transitions.each do |transition|
    inputs = @net.find_all_places_by_target_id(transition.id).select do |place|
      Perspective.data_place?(@env, place)
    end.map {|input| InputData.new(input)}

    if Perspective.if_transition?(@env, transition)
      flow_elements << create_if_branch(transition, definition, inputs, flow_elements)
    elsif Perspective.case_transition?(@env, transition)
      flow_elements << create_case_branch(transition, definition, inputs, flow_elements)
    end
  end

  return [rules, flow_elements]
end