public <S, ITERABLE extends Iterable<? extends S>> S find(Nfa<S> nfa, Iterable<S> starts, Predicate<S> matcher) { Set<S> visited = Sets.newHashSet(); for (S s : starts) { S r = find(nfa, s, matcher, visited); if (r != null) return r; } return null; }
public <S, ITERABLE extends Iterable<? extends S>> S find(Nfa<S> nfa, Iterable<S> starts, Predicate<S> matcher) { Set<S> visited = Sets.newHashSet(); for (S s : starts) { S r = find(nfa, s, matcher, visited); if (r != null) return r; } return null; }
public <S, ITERABLE extends Iterable<? extends S>> boolean canReach(Nfa<S> nfa, S state, Predicate<S> matcher) { return find(nfa, Collections.singleton(state), matcher) != null; }
public <S, ITERABLE extends Iterable<? extends S>> boolean canReach(Nfa<S> nfa, S state, Predicate<S> matcher) { return find(nfa, Collections.singleton(state), matcher) != null; }
public <S> S find(Nfa<S> nfa, Predicate<S> matcher) { Set<S> visited = Sets.newHashSet(); return find(nfa, nfa.getStart(), matcher, visited); }
public SynAbsorberNfaAdapter(ISynAbsorberState start) { super(); this.start = start; this.stop = new NfaUtil().find(this, new Predicate<ISynAbsorberState>() { public boolean apply(ISynAbsorberState input) { return input.getType().isStop(); } }); }
public <S, ITERABLE extends Iterable<? extends S>> boolean canReachFinalState(Nfa<S> nfa, S state) { return find(nfa, Collections.singleton(state), Predicates.equalTo(nfa.getStop())) != null; }
public <S> S find(Nfa<S> nfa, Predicate<S> matcher) { Set<S> visited = Sets.newHashSet(); return find(nfa, nfa.getStart(), matcher, visited); }
protected <S> S find(Nfa<S> nfa, S state, Predicate<S> matcher, Set<S> visited) { if (!visited.add(state)) return null; if (matcher.apply(state)) return state; for (S s : nfa.getFollowers(state)) { S r = find(nfa, s, matcher, visited); if (r != null) return r; } return null; }
protected <S, ITERABLE extends Iterable<? extends S>> S find(Nfa<S> nfa, S state, Predicate<S> matcher, Set<S> visited) { if (!visited.add(state)) return null; if (matcher.apply(state)) return state; for (S s : nfa.getFollowers(state)) { S r = find(nfa, s, matcher, visited); if (r != null) return r; } return null; }
public <S, ITERABLE extends Iterable<? extends S>> boolean canReach(Nfa<S> nfa, Predicate<S> matcher) { return find(nfa, Collections.singleton(nfa.getStart()), matcher) != null; }
public <S, ITERABLE extends Iterable<? extends S>> boolean canReachFinalState(Nfa<S> nfa, S state) { return find(nfa, Collections.singleton(state), Predicates.equalTo(nfa.getStop())) != null; }
protected ISerState findState(ISerializationContext ctx, AbstractElement ele) { Pda<ISerState, RuleCall> pda = pdas.get(ctx); return new NfaUtil().find(pda, s -> s.getGrammarElement() == ele); }