diff --git a/statemachine.solution/src/main/jastadd/ConnectedComponents.jrag b/statemachine.solution/src/main/jastadd/ConnectedComponents.jrag index 406e5f593ebcd4dabbd5f24d37f6a7eae8ab5296..1637d454cde282e02789bb3a5ae53458193c08e8 100644 --- a/statemachine.solution/src/main/jastadd/ConnectedComponents.jrag +++ b/statemachine.solution/src/main/jastadd/ConnectedComponents.jrag @@ -1,34 +1,4 @@ aspect ConnectedComponents { -// syn Set<State> State.successors() circular [new HashSet<>()] { -// Set<State> result = new HashSet<>(); -// for (Transition t : getOutgoingList()) { -// State s = t.getTo(); -// result.add(s); -// result.addAll(s.successors()); -// } -// return result; -// } - -// syn Set<State> State.predecessors() circular [new HashSet<>()] { -// Set<State> result = new HashSet<>(); -// for (Transition t : getIncomingList()) { -// State s = t.getFrom(); -// result.add(s); -// result.addAll(s.predecessors()); -// } -// return result; -// } - -// syn boolean State.hasCycle() = successors().contains(this); - -// syn Set<State> State.SCC() { -// Set<State> result = new HashSet<>(successors()); -// result.retainAll(predecessors()); -// return result; -// } - -// coll HashSet<Set<State>> StateMachine.SCC() with add root StateMachine; -// State contributes SCC() when SCC().size() > 0 to StateMachine.SCC(); /** * Kosaraju's algorithm diff --git a/statemachine.solution/src/main/jastadd/NameAnalysis.jrag b/statemachine.solution/src/main/jastadd/NameAnalysis.jrag index a381d9cbbc6a9d273ff019983b88ae79dd40bad7..ddd0f07e78771883c58a5d86e12dc4e3bafc4479 100644 --- a/statemachine.solution/src/main/jastadd/NameAnalysis.jrag +++ b/statemachine.solution/src/main/jastadd/NameAnalysis.jrag @@ -17,6 +17,7 @@ aspect NameAnalysis { return null; } + // required interface implementation for name analysis in parser eq StateMachine.globallyResolveStateByToken(String id) = resolveState(id); eq Element.globallyResolveStateByToken(String id) = containingStateMachine().resolveState(id); diff --git a/statemachine.task/src/main/jastadd/ConnectedComponents.jrag b/statemachine.task/src/main/jastadd/ConnectedComponents.jrag index 406e5f593ebcd4dabbd5f24d37f6a7eae8ab5296..1637d454cde282e02789bb3a5ae53458193c08e8 100644 --- a/statemachine.task/src/main/jastadd/ConnectedComponents.jrag +++ b/statemachine.task/src/main/jastadd/ConnectedComponents.jrag @@ -1,34 +1,4 @@ aspect ConnectedComponents { -// syn Set<State> State.successors() circular [new HashSet<>()] { -// Set<State> result = new HashSet<>(); -// for (Transition t : getOutgoingList()) { -// State s = t.getTo(); -// result.add(s); -// result.addAll(s.successors()); -// } -// return result; -// } - -// syn Set<State> State.predecessors() circular [new HashSet<>()] { -// Set<State> result = new HashSet<>(); -// for (Transition t : getIncomingList()) { -// State s = t.getFrom(); -// result.add(s); -// result.addAll(s.predecessors()); -// } -// return result; -// } - -// syn boolean State.hasCycle() = successors().contains(this); - -// syn Set<State> State.SCC() { -// Set<State> result = new HashSet<>(successors()); -// result.retainAll(predecessors()); -// return result; -// } - -// coll HashSet<Set<State>> StateMachine.SCC() with add root StateMachine; -// State contributes SCC() when SCC().size() > 0 to StateMachine.SCC(); /** * Kosaraju's algorithm diff --git a/statemachine.task/src/main/jastadd/NameAnalysis.jrag b/statemachine.task/src/main/jastadd/NameAnalysis.jrag index a381d9cbbc6a9d273ff019983b88ae79dd40bad7..ddd0f07e78771883c58a5d86e12dc4e3bafc4479 100644 --- a/statemachine.task/src/main/jastadd/NameAnalysis.jrag +++ b/statemachine.task/src/main/jastadd/NameAnalysis.jrag @@ -17,6 +17,7 @@ aspect NameAnalysis { return null; } + // required interface implementation for name analysis in parser eq StateMachine.globallyResolveStateByToken(String id) = resolveState(id); eq Element.globallyResolveStateByToken(String id) = containingStateMachine().resolveState(id);