class Pione::PNML::FlowRuleBuilder

FlowRuleBuilder builds a flow rule definition for PNML net.

Public Class Methods

new(net, net_name, env) click to toggle source

@param net [PNML::Net]

PNML net

@param net_name [String]

name of the net

@param env [Lang::Environment]

language environment
# File lib/pione/pnml/compiler.rb, line 389
def initialize(net, net_name, env)
  @net = net
  @net_name = net_name
  @env = env
end

Public Instance Methods

build(flow_elements, params, features, variable_bindings) click to toggle source

Build a flow rule definition for PNML net.

@param flow_elements [Array]

flow elements

@return [RuleDefinition]

a flow rule definition for PNML net
# File lib/pione/pnml/compiler.rb, line 401
def build(flow_elements, params, features, variable_bindings)
  inputs = @net.places.select {|place| Perspective.net_input_data_place?(@env, place)}
  inputs = inputs.map {|input| InputData.new(input)}

  outputs = @net.places.select {|place| Perspective.net_output_data_place?(@env, place)}
  outputs = outputs.map {|output| OutputData.new(output)}

  option = {
    :inputs => inputs,
    :outputs => outputs,
    :params => params,
    :features => features,
    :variable_bindings => variable_bindings,
    :flow_elements => flow_elements
  }

  RuleDefinition.new(@net_name, :flow, false, @net_name, 0, option)
end