public Collection<T> matchNext(AbstractElement nextElement) { Pair<List<MatcherTransition>, List<MatcherState>> path = findTransitionPath(lastState, nextElement, false, true, Sets.<Pair<Boolean, MatcherState>> newHashSet()); if (path == null) { MatcherState previousState = lastState; lastState = nfaProvider.getNFA(nextElement); // System.out.println("Not Found! looking for " + new GrammarElementTitleSwitch().doSwitch(nextElement)); return patternsForTwoStates(previousState, lastState); } else { // System.out.println("Found " + path + " -> " + patternsForTransition(path)); lastState = path.getFirst().get(path.getFirst().size() - 1).getTarget(); return patternsForTransition(path); } }
else if (transition.getTarget().isParserRuleCall()) { ruleCallStack.push(transition.getTarget()); Pair<List<MatcherTransition>, List<MatcherState>> next = findTransitionPath( transition.getTarget(), to, false, transition.getTarget().isParserRuleCallOptional(), visited); Pair<List<MatcherTransition>, List<MatcherState>> next = findTransitionPath(lastRuleCall, to, true, true, visited); if (next != null) {