/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<? extends Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet<String>(); Set<Rule> rules = new HashSet<Rule>(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Rule r : delegate.getRules()) { if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<? extends Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet<String>(); Set<Rule> rules = new HashSet<Rule>(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Rule r : delegate.getRules()) { if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet(); Set<Rule> rules = new HashSet(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = (org.antlr.tool.Grammar) grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Iterator it = delegate.getRules().iterator(); it.hasNext();) { Rule r = (Rule)it.next(); if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }