@Override public Boolean caseRuleCall(RuleCall object) { if (!visitedRuleCalls.add(object)) return isOptional(object); acceptor.accept(object); Set<Parameter> oldConfig = currentConfig; try { if (!object.getArguments().isEmpty()) { currentConfig = ParameterConfigHelper.getAssignedArguments(object, getParameterValues(object)); } else { currentConfig = Collections.emptySet(); } Boolean result = doSwitch(object.getRule()) || isOptional(object); visitedRuleCalls.remove(object); return result; } finally { currentConfig = oldConfig; } }
@Override public Boolean caseKeyword(Keyword object) { acceptor.accept(object); return isOptional(object); }
@Override public Boolean caseAssignment(Assignment object) { acceptor.accept(object); return doSwitch(object.getTerminal()) || isOptional(object); }