def p_graph(p): '''expression : ID '=' ID '.' GRAPH LPAREN ID RPAREN SEMI | ID '=' ID '.' GRAPH LPAREN M0 RPAREN SEMI | ID '=' ID '.' GRAPH LPAREN Hmark RPAREN SEMI''' global net print 'parser: graph' com=list() if isinstance(p[7], set): #caso Hmark for i in p[7]: com.append(net[p[3]].place[i].index) elif p[7]=='M0': #caso M0 print net[p[3]].mark.keys() for i in net[p[3]].mark['M0']: com.append(net[p[3]].place[i].index) elif p[7] in net[p[3]].mark: #caso marcatura esistente for i in net[p[3]].mark[p[7]]: com.append(net[p[3]].place[i].index) else: print "SYNTAX ERROR: la marca"+p[7]+"non esiste" print com var[p[1]]=PetriNet.createCaseGraph(net[p[3]].net, com)
a2 = Arc() a3 = Arc() a4 = Arc() a5 = Arc() a6 = Arc() a7 = Arc() a8 = Arc() a9 = Arc() a10 = Arc() a11 = Arc() a12 = Arc() t1 = Transition("t1", [a1, a2], [a3]) t2 = Transition("t2", [a4], [a5]) t3 = Transition("t3", [a6], [a7, a8]) t4 = Transition("t4", [a9], [a10]) t5 = Transition("t5", [a11], [a12]) a1.assign_start_end(p2, t1) a2.assign_start_end(p3, t1) a3.assign_start_end(t1, p1) a4.assign_start_end(p1, t2) a5.assign_start_end(t2, p2) a6.assign_start_end(p1, t3) a7.assign_start_end(t3, p2) a8.assign_start_end(t3, p4) a9.assign_start_end(p3, t4) a10.assign_start_end(t4, p4) a11.assign_start_end(p4, t5) a12.assign_start_end(t5, p3) petri = PetriNet([t1, t2, t3, t4, t5])
from PetriNet import * p1 = Place("p1", 0) p2 = Place("p2", 1) p3 = Place("p3", 0) a1 = Arc(3) a2 = Arc(2) a3 = Arc() a4 = Arc() a5 = Arc() a6 = Arc() a7 = Arc() a8 = Arc() a9 = Arc() t1 = Transition("t1", [a2], [a3]) t2 = Transition("t2", [a4], [a5]) t3 = Transition("t3", [a6], [a7]) t4 = Transition("t4", [a8, a9], [a1]) a1.assign_start_end(t4, p1) a2.assign_start_end(p1, t1) a3.assign_start_end(t1, p2) a4.assign_start_end(p2, t2) a5.assign_start_end(t2, p3) a6.assign_start_end(p3, t3) a7.assign_start_end(t3, p2) a8.assign_start_end(p3, t4) a9.assign_start_end(p1, t4) petri = PetriNet([t1, t2, t3, t4])
a = Place('a') b = Place('b') c = Place('c',5) d = Place('b') t1 = Transition('t1') t2 = Transition('t2') l1 = Link(a,t1) l2 = Link(t1,b) l3 = Link(a,t2) l4 = Link(t2,d) l5 = Link(c,t2,5) m = PetriNet('m') m.add(a) m.add(b) m.add(t1) m.add(l1) m.add(l2) #m.add(Place('m.a')) n = PetriNet('n') #n.add(a) n.add(c) n.add(d) n.add(t2) #n.add(l3) n.add(l4) n.add(l5) #print n