class Pione::PNML::NetRewriter
‘NetRewriter` is a class for rewriting PNML’s net by PIONE’s rewriting rules likes “input reduction”, “output reduction”, “IO expansion”, and etc.
Public Class Methods
new() { |rules| ... }
click to toggle source
Create a new net rewriter. Rewriting rules are setuped by the block.
PNML::NetRewriter.new do |rules| rules << PNML::InputReduction rules << PNML::OutputReduction rules << PNML::IOExpansion end
# File lib/pione/pnml/net-rewriter.rb, line 14 def initialize(&b) @rules = [] if block_given? yield @rules end end
Public Instance Methods
rewrite(net, env)
click to toggle source
Rewrite the net by rewriting rules recursively.
@param net [PNML::Net]
a net that is a target of this transformation
@param env [Lang::Environment]
language environment
@return [void]
# File lib/pione/pnml/net-rewriter.rb, line 28 def rewrite(net, env) # find rewriting subjects rule, subjects = @rules.inject(nil) do |res, _rule| if res.nil? and _subjects = _rule.find_subjects(net, env) [_rule, _subjects] else res end end # rewrite the net with subjects and go next if subjects rule.rewrite(net, subjects, env) rewrite(net, env) end end