public PlaceSpecifier(CreatePetriNet createPetriNet, string placeName) { Contract.Requires(createPetriNet != null); Contract.Requires(createPetriNet.PlaceCapacities != null); Contract.Requires(createPetriNet.PlaceMarkings != null); _createPetriNet = createPetriNet; _placeName = placeName; }
void PetriNetSpec() { Expect(3); Expect(2); Builder = CreatePetriNet.Called(t.val); Expect(15); ArcSetSpec(); while (la.kind == 2 || la.kind == 12) { ArcSetSpec(); } Expect(16); while (la.kind == 2) { MarkingSpec(); } }
public IEnumerable <TModelType> Load(string modelPath) { Contract.Requires(!string.IsNullOrWhiteSpace(modelPath)); if (!File.Exists(modelPath)) { throw new ApplicationException("Model cannot be found"); } XDocument doc = XDocument.Parse(File.ReadAllText(modelPath)); if (doc == null) { throw new ApplicationException("Unable to read contents of model file"); } var names = GetModelNames(doc); foreach (string name in names) { var netroot = doc.Descendants("net").Where(element => element.Attribute("id").Value.Equals(name)).Single(); this.Builder = new CreatePetriNet(name); var placeNames = GatherPlaceNames(netroot); var transitionNames = GatherTransitionNames(netroot); var inArcs = GatherInArcs(netroot, transitionNames); var outArcs = GatherOutArcs(netroot, placeNames); Builder.WithPlaces(placeNames.Select(tuple => tuple.Item1).ToArray()); Builder.WithTransitions(transitionNames.Select(tuple => tuple.Item1).ToArray()); foreach (var inArc in inArcs) { var arc = Builder.With(inArc.Item3).FedBy(inArc.Item2).Weight(inArc.Item4); if (inArc.Item5) // is inhibitor { arc.AsInhibitor(); } arc.Done(); } foreach (var outArc in outArcs) { var arc = Builder.With(outArc.Item2).Feeding(outArc.Item3).Weight(outArc.Item4); arc.Done(); } yield return(Builder.CreateNet <TModelType>()); } }
public static CreatePetriNet Called(string name) { var result = new CreatePetriNet(name); return(result); }
public PetriNetEventBuilder(CreatePetriNet createPetriNet, string transitionName) { this._builder = createPetriNet; this._transitionName = transitionName; }