for (int i = 0; i < alternatives.size(); i++) { GrammarAST alternative = alternatives.get(i); if (mode.includeUnfactoredAlts()) { GrammarAST unfactoredAlt = translateLeftFactoredAlternative(alternative.dupTree(), factoredRule, variant, DecisionFactorMode.PARTIAL_UNFACTORED, false); unfactoredAlternatives[i] = unfactoredAlt; if (mode.includeFactoredAlts()) { GrammarAST factoredAlt = translateLeftFactoredAlternative(alternative, factoredRule, variant, mode == DecisionFactorMode.COMBINED_FACTOR ? DecisionFactorMode.PARTIAL_FACTORED : DecisionFactorMode.FULL_FACTOR, includeFactoredElement); factoredAlternatives[i] = factoredAlt; if (factoredIntervals.isNil() && !mode.includeUnfactoredAlts()) { return false; } else if (unfactoredIntervals.isNil() && !mode.includeFactoredAlts()) { return false; if (unfactoredIntervals.isNil() && factoredIntervals.size() == alternatives.size() && mode.includeFactoredAlts() && !includeFactoredElement) { for (int i = 0; i < factoredAlternatives.length; i++) { GrammarAST translatedAlt = factoredAlternatives[i]; else if (factoredIntervals.isNil() && unfactoredIntervals.size() == alternatives.size() && mode.includeUnfactoredAlts()) { for (int i = 0; i < unfactoredAlternatives.length; i++) { GrammarAST translatedAlt = unfactoredAlternatives[i]; if (mode.includeFactoredAlts() && factoredIntervals.contains(i)) { boolean combineWithPrevious = i > 0 && factoredIntervals.contains(i - 1) && (!mode.includeUnfactoredAlts() || !unfactoredIntervals.contains(i - 1)); if (combineWithPrevious) { GrammarAST translatedAlt = factoredAlternatives[i]; if (mode.includeUnfactoredAlts() && unfactoredIntervals.contains(i)) {
assert !mode.includeFactoredAlts() || !mode.includeUnfactoredAlts(); if (!mode.includeFactoredAlts()) { return null; switch (ruleVariants) { case NONE: if (!mode.includeUnfactoredAlts()) { return null; if (!mode.includeFactoredAlts()) { return null; String marker = mode.includeFactoredAlts() ? ATNSimulator.RULE_LF_VARIANT_MARKER : ATNSimulator.RULE_NOLF_VARIANT_MARKER; element.setText(element.getText() + marker + factoredRule); assert mode.includeFactoredAlts(); RuleRefAST factoredRuleRef = new RuleRefAST(adaptor.createToken(ANTLRParser.RULE_REF, factoredRule)); factoredRuleRef.setOption(SUPPRESS_ACCESSOR, adaptor.create(ANTLRParser.ID, "true")); if (mode.includeFactoredAlts()) { if (includeFactoredElement) { Object factoredElement = adaptor.deleteChild(translatedElement, 0); if (mode.includeUnfactoredAlts()) { return element; if (mode.includeUnfactoredAlts()) { return element;