/// <summary> /// Given a listener that has traversed the tree, extract all the data into a DFS. /// </summary> /// <param name="parsedState"></param> /// <returns></returns> private static DetectorFinalState BuildDFS(this FinalStatePatternListener parsedState) { var result = new DetectorFinalState(); result.FinalStateObjects.AddRange(parsedState.FSOs); result.Criteria.Arguments.AddRange(parsedState.TopLevelCriteria); return(result); }
/// <summary> /// Emit the top dog /// </summary> /// <param name="state"></param> /// <param name="wr"></param> /// <returns></returns> public static string Emit(this DetectorFinalState state, TextWriter wr) { foreach (var fso in state.FinalStateObjects) { fso.Emit(wr); wr.WriteLine(); } var sname = state.Criteria.Emit(wr); wr.WriteLine(); var name = MakeName("detectorFinalState"); wr.WriteLine($"{OWLNamespace}:{name} rdf:type dfs:DetectorFinalState ;"); wr.WriteLine($" dfs:hasSelectionCriteria {OWLNamespace}:{sname} ."); return(name); }