protected AbstractRule findWhitespaceRule(Grammar grammar) { for (AbstractRule hidden : grammar.getHiddenTokens()) if (isWhitespaceRule(hidden)) return hidden; if (!grammar.getUsedGrammars().isEmpty()) return findWhitespaceRule(grammar.getUsedGrammars().get(0)); return null; }
@Check public void checkHiddenTokenIsNotAFragment(Grammar grammar) { if (grammar.isDefinesHiddenTokens()) { checkHiddenTokenIsNotAFragment(grammar, grammar.getHiddenTokens(), XtextPackage.Literals.GRAMMAR__HIDDEN_TOKENS); } }
@Override public Void caseGrammar(Grammar object) { if (!visitedGrammars.add(object)) return null; if (object.isDefinesHiddenTokens()) for(AbstractRule rule: object.getHiddenTokens()) doSwitch(rule); for(Grammar grammar: object.getUsedGrammars()) { caseGrammar(grammar); } return null; }
public List<String> initialHiddenTokens(final Grammar it) { List<String> _xblockexpression = null; { boolean _isDefinesHiddenTokens = it.isDefinesHiddenTokens(); if (_isDefinesHiddenTokens) { final Function1<AbstractRule, String> _function = (AbstractRule it_1) -> { return this.ruleName(it_1); }; return IterableExtensions.<String>toList(ListExtensions.<AbstractRule, String>map(it.getHiddenTokens(), _function)); } int _size = it.getUsedGrammars().size(); boolean _equals = (_size == 1); if (_equals) { return this.initialHiddenTokens(IterableExtensions.<Grammar>head(it.getUsedGrammars())); } _xblockexpression = CollectionLiterals.<String>emptyList(); } return _xblockexpression; }
protected void updateOverriddenRules(Grammar grammar, Map<String, AbstractRule> rulePerName) { if (grammar.isDefinesHiddenTokens()) { updateHiddenTokens(grammar.getHiddenTokens(), rulePerName); } for (AbstractRule rule : grammar.getRules()) { if (rule instanceof ParserRule && ((ParserRule) rule).isDefinesHiddenTokens()) { updateHiddenTokens(((ParserRule) rule).getHiddenTokens(), rulePerName); } } final List<RuleCall> allRuleCalls = EcoreUtil2.getAllContentsOfType(grammar, RuleCall.class); for (RuleCall call : allRuleCalls) { if (call.getRule() != null) { AbstractRule rule = rulePerName.get(call.getRule().getName()); if (rule != null) call.setRule(rule); } } }