@Override public RuleBasedScanner createItemParser() { List<IRule> rules = new ArrayList<IRule>(); for (Directive directive : Directive.values()) { if (!directive.isEndDirective()) { rules.add(new DirectiveRule(directive)); } } RuleBasedScanner result = new SyntaxModeListenerRuleBasedScanner(); result.setRules(rules.toArray(new IRule[rules.size()])); return result; }