public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = labelDefs.get(x); if ( labels!=null ) return labels.get(0); return null; }
@Override public void ruleRef(GrammarAST ref, ActionAST arg) { // if ( inContext("DOT ...") ) qualifiedRulerefs.add((GrammarAST)ref.getParent()); rulerefs.add(ref); if ( currentRule!=null ) { currentRule.alt[currentOuterAltNumber].ruleRefs.map(ref.getText(), ref); } }
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; }
MultiMap<String, Rule> baseContexts = new MultiMap<String, Rule>(); for (Rule r : ruleCollector.rules.values()) { GrammarAST optionAST = r.ast.getOptionAST("baseContext"); baseContexts.map(r.getBaseContext(), r); for (Map.Entry<String, List<Rule>> entry : baseContexts.entrySet()) { for (Rule rule : entry.getValue()) { outerAltCount += rule.numberOfAlts; List<GrammarAST> altLabels = ruleCollector.ruleToAltLabels.get(rule.name); if (altLabels != null && !altLabels.isEmpty()) { if (altLabels.size() != rule.numberOfAlts) {
@Override public boolean needsImplicitLabel(GrammarAST ID, LabeledOp op) { Alternative currentOuterMostAlt = getCurrentOuterMostAlt(); boolean actionRefsAsToken = currentOuterMostAlt.tokenRefsInActions.containsKey(ID.getText()); boolean actionRefsAsRule = currentOuterMostAlt.ruleRefsInActions.containsKey(ID.getText()); return op.getLabels().isEmpty() && (actionRefsAsToken || actionRefsAsRule); }
public Set<String> getTokenRefs() { Set<String> refs = new HashSet<String>(); for (int i=1; i<=numberOfAlts; i++) { refs.addAll(alt[i].tokenRefs.keySet()); } return refs; }
for (int i = 1; i <= r.numberOfAlts; i++) { Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values()) { if (r.hasAltSpecificContexts()) {
@Override public boolean needsImplicitLabel(GrammarAST ID, LabeledOp op) { Alternative currentOuterMostAlt = getCurrentOuterMostAlt(); boolean actionRefsAsToken = currentOuterMostAlt.tokenRefsInActions.containsKey(ID.getText()); boolean actionRefsAsRule = currentOuterMostAlt.ruleRefsInActions.containsKey(ID.getText()); return op.getLabels().isEmpty() && (actionRefsAsToken || actionRefsAsRule); }
public Set<String> getTokenRefs() { Set<String> refs = new HashSet<String>(); for (int i=1; i<=numberOfAlts; i++) { refs.addAll(alt[i].tokenRefs.keySet()); } return refs; }
for (int i = 1; i <= r.numberOfAlts; i++) { Alternative a = r.alt[i]; for (List<LabelElementPair> pairs : a.labelDefs.values()) { if (r.hasAltSpecificContexts()) {
public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = labelDefs.get(x); if ( labels!=null ) return labels.get(0); return null; }
@Override public void tokenRef(TerminalAST ref) { terminals.add(ref); tokenIDRefs.add(ref); if ( currentRule!=null ) { currentRule.alt[currentOuterAltNumber].tokenRefs.map(ref.getText(), ref); } }
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; }
@Override public boolean needsImplicitLabel(GrammarAST ID, LabeledOp op) { Alternative currentOuterMostAlt = getCurrentOuterMostAlt(); boolean actionRefsAsToken = currentOuterMostAlt.tokenRefsInActions.containsKey(ID.getText()); boolean actionRefsAsRule = currentOuterMostAlt.ruleRefsInActions.containsKey(ID.getText()); return op.getLabels().isEmpty() && (actionRefsAsToken || actionRefsAsRule); }
public Set<String> getTokenRefs() { Set<String> refs = new HashSet<String>(); for (int i=1; i<=numberOfAlts; i++) { refs.addAll(alt[i].tokenRefs.keySet()); } return refs; }
/** 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); } } } } }
public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = labelDefs.get(x); if ( labels!=null ) return labels.get(0); return null; }