public MultiMap<String, LabelElementPair> getElementLabelDefs() { MultiMap<String, LabelElementPair> defs = new MultiMap<String, LabelElementPair>(); for (int i=1; i<=numberOfAlts; i++) { for (List<LabelElementPair> pairs : alt[i].labelDefs.values()) { for (LabelElementPair p : pairs) { defs.map(p.label.getText(), p); } } } return defs; }
public MultiMap<String, LabelElementPair> getElementLabelDefs() { MultiMap<String, LabelElementPair> defs = new MultiMap<String, LabelElementPair>(); for (int i=1; i<=numberOfAlts; i++) { for (List<LabelElementPair> pairs : alt[i].labelDefs.values()) { for (LabelElementPair p : pairs) { defs.map(p.label.getText(), p); } } } return defs; }
public MultiMap<String, LabelElementPair> getElementLabelDefs() { MultiMap<String, LabelElementPair> defs = new MultiMap<String, LabelElementPair>(); for (int i=1; i<=numberOfAlts; i++) { for (List<LabelElementPair> pairs : alt[i].labelDefs.values()) { for (LabelElementPair p : pairs) { defs.map(p.label.getText(), p); } } } return defs; }
public MultiMap<String, LabelElementPair> getElementLabelDefs() { MultiMap<String, LabelElementPair> defs = new MultiMap<String, LabelElementPair>(); for (int i=1; i<=numberOfAlts; i++) { for (List<LabelElementPair> pairs : alt[i].labelDefs.values()) { for (LabelElementPair p : pairs) { defs.map(p.label.getText(), p); } } } return defs; }
for (int i = 1; i <= r.numberOfAlts; i++) { Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values()) { if (r.hasAltSpecificContexts()) {
for (int i = 1; i <= r.numberOfAlts; i++) { Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values()) { if (r.hasAltSpecificContexts()) {
/** Make sure a label doesn't conflict with another symbol. * Labels must not conflict with: rules, tokens, scope names, * return values, parameters, and rule-scope dynamic attributes * defined in surrounding rule. Also they must have same type * for repeated defs. */ public void checkForLabelConflicts(Collection<Rule> rules) { for (Rule r : rules) { checkForAttributeConflicts(r); Map<String, LabelElementPair> labelNameSpace = new HashMap<String, LabelElementPair>(); for (int i=1; i<=r.numberOfAlts; i++) { if (r.hasAltSpecificContexts()) { labelNameSpace.clear(); } Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values() ) { for (LabelElementPair p : pairs) { checkForLabelConflict(r, p.label); String name = p.label.getText(); LabelElementPair prev = labelNameSpace.get(name); if ( prev==null ) labelNameSpace.put(name, p); else checkForTypeMismatch(prev, p); } } } } }
/** Make sure a label doesn't conflict with another symbol. * Labels must not conflict with: rules, tokens, scope names, * return values, parameters, and rule-scope dynamic attributes * defined in surrounding rule. Also they must have same type * for repeated defs. */ public void checkForLabelConflicts(Collection<Rule> rules) { for (Rule r : rules) { checkForAttributeConflicts(r); Map<String, LabelElementPair> labelNameSpace = new HashMap<String, LabelElementPair>(); for (int i=1; i<=r.numberOfAlts; i++) { if (r.hasAltSpecificContexts()) { labelNameSpace.clear(); } Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values() ) { for (LabelElementPair p : pairs) { checkForLabelConflict(r, p.label); String name = p.label.getText(); LabelElementPair prev = labelNameSpace.get(name); if ( prev==null ) labelNameSpace.put(name, p); else checkForTypeMismatch(prev, p); } } } } }