Пример #1
0
        public KAOSModel Parse(string input, string filename)
        {
            KAOSModel       model   = new KAOSModel();
            GoalModelParser _parser = new GoalModelParser();

            Uri RelativePath = null;

            if (!string.IsNullOrEmpty(filename))
            {
                RelativePath = new Uri(Path.GetFullPath(Path.GetDirectoryName(filename) + "/"));
            }

            FirstStageBuilder  FSB = new FirstStageBuilder(model, RelativePath);
            FormulaBuilder     FB  = new FormulaBuilder(model, RelativePath);
            SecondStageBuilder SSB = new SecondStageBuilder(model, RelativePath);
            ThirdStageBuilder  TSB = new ThirdStageBuilder(model, FB, RelativePath);

            var elements = _parser.Parse(input, filename) as ParsedElements;

            FSB.BuildElementWithKeys(elements);
            SSB.BuildElement(elements);
            TSB.BuildElement(elements);

            return(model);
        }
Пример #2
0
        public KAOSModel Parse(string input, string filename)
        {
            KAOSModel model = new KAOSModel();
            Declarations = new Dictionary<KAOSMetaModelElement, IList<Declaration>> ();
            GoalModelParser _parser = new GoalModelParser ();

            Uri RelativePath = null;
            if (!string.IsNullOrEmpty (filename))
                RelativePath = new Uri(Path.GetFullPath (Path.GetDirectoryName(filename) + "/"));

            FirstStageBuilder FSB = new FirstStageBuilder (model, Declarations, RelativePath);
            FormulaBuilder FB = new FormulaBuilder (model, Declarations, FSB, RelativePath);
            SecondStageBuilder SSB = new SecondStageBuilder (model, Declarations, FSB, FB, RelativePath);
            ThirdStageBuilder TSB = new ThirdStageBuilder (model, Declarations, FSB, SSB, FB, RelativePath);

            var elements = _parser.Parse (input, filename) as ParsedElements;

            FSB.BuildElementWithKeys (elements);
            SSB.BuildElement (elements);
            TSB.BuildElement (elements);

            // Ensure that there is at least one alternative system
            if (model.AlternativeSystems().Count() == 0)
                model.Add (new AlternativeSystem (model) {
                    Name = "Default",
                    Definition = "Default alternative"
                });

            return model;
        }