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); }
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; }