Esempio n. 1
0
 public PlaceSpecifier(CreatePetriNet createPetriNet, string placeName)
 {
     Contract.Requires(createPetriNet != null);
     Contract.Requires(createPetriNet.PlaceCapacities != null);
     Contract.Requires(createPetriNet.PlaceMarkings != null);
     _createPetriNet = createPetriNet;
     _placeName      = placeName;
 }
Esempio n. 2
0
    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>());
            }
        }
Esempio n. 4
0
        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;
 }
Esempio n. 6
0
    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();
        }
    }