public void map(K key, V value) { List<V> elementsForKey = get(key); if ( elementsForKey==null ) { elementsForKey = new ArrayList<V>(); super.put(key, elementsForKey); } elementsForKey.add(value); }
/** * Return all nodes matching a rule or token tag with the specified label. * * <p>If the {@code label} is the name of a parser rule or token in the * grammar, the resulting list will contain both the parse trees matching * rule or tags explicitly labeled with the label and the complete set of * parse trees matching the labeled and unlabeled tags in the pattern for * the parser rule or token. For example, if {@code label} is {@code "foo"}, * the result will contain <em>all</em> of the following.</p> * * <ul> * <li>Parse tree nodes matching tags of the form {@code <foo:anyRuleName>} and * {@code <foo:AnyTokenName>}.</li> * <li>Parse tree nodes matching tags of the form {@code <anyLabel:foo>}.</li> * <li>Parse tree nodes matching tags of the form {@code <foo>}.</li> * </ul> * * @param label The label. * * @return A collection of all {@link ParseTree} nodes matching tags with * the specified {@code label}. If no nodes matched the label, an empty list * is returned. */ public List<ParseTree> getAll(String label) { List<ParseTree> nodes = labels.get(label); if ( nodes==null ) { return Collections.emptyList(); } return nodes; }
/** * Get the last node associated with a specific {@code label}. * * <p>For example, for pattern {@code <id:ID>}, {@code get("id")} returns the * node matched for that {@code ID}. If more than one node * matched the specified label, only the last is returned. If there is * no node associated with the label, this returns {@code null}.</p> * * <p>Pattern tags like {@code <ID>} and {@code <expr>} without labels are * considered to be labeled with {@code ID} and {@code expr}, respectively.</p> * * @param label The label to check. * * @return The last {@link ParseTree} to match a tag with the specified * label, or {@code null} if no parse tree matched a tag with the label. */ public ParseTree get(String label) { List<ParseTree> parseTrees = labels.get(label); if ( parseTrees==null || parseTrees.size()==0 ) { return null; } return parseTrees.get( parseTrees.size()-1 ); // return last if multiple }
public List<Pair<K,V>> getPairs() { List<Pair<K,V>> pairs = new ArrayList<Pair<K,V>>(); for (K key : keySet()) { for (V value : get(key)) { pairs.add(new Pair<K,V>(key, value)); } } return pairs; } }
public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = labelDefs.get(x); if ( labels!=null ) return labels.get(0); return null; }
public void map(K key, V value) { List<V> elementsForKey = get(key); if ( elementsForKey==null ) { elementsForKey = new ArrayList<V>(); super.put(key, elementsForKey); } elementsForKey.add(value); }
public void map(K key, V value) { List<V> elementsForKey = get(key); if ( elementsForKey==null ) { elementsForKey = new ArrayList<V>(); super.put(key, elementsForKey); } elementsForKey.add(value); }
public void map(K key, V value) { List<V> elementsForKey = get(key); if ( elementsForKey==null ) { elementsForKey = new ArrayList<V>(); super.put(key, elementsForKey); } elementsForKey.add(value); }
public void map(K key, V value) { List<V> elementsForKey = get(key); if ( elementsForKey==null ) { elementsForKey = new ArrayList<V>(); super.put(key, elementsForKey); } elementsForKey.add(value); }
public LabelElementPair getAnyLabelDef(String x) { List<LabelElementPair> labels = getElementLabelDefs().get(x); if ( labels!=null ) return labels.get(0); return null; }
@Override public boolean undefineRule(Rule r) { if (!super.undefineRule(r)) { return false; } boolean removed = modes.get(r.mode).remove(r); assert removed; return true; } }
@Override public boolean undefineRule(Rule r) { if (!super.undefineRule(r)) { return false; } boolean removed = modes.get(r.mode).remove(r); assert removed; return true; } }
@Override public boolean undefineRule(Rule r) { if (!super.undefineRule(r)) { return false; } boolean removed = modes.get(r.mode).remove(r); assert removed; return true; } }
@Override public boolean undefineRule(Rule r) { if (!super.undefineRule(r)) { return false; } boolean removed = modes.get(r.mode).remove(r); assert removed; return true; } }
@Override public boolean undefineRule(Rule r) { if (!super.undefineRule(r)) { return false; } boolean removed = modes.get(r.mode).remove(r); assert removed; return true; } }
public List<Pair<K,V>> getPairs() { List<Pair<K,V>> pairs = new ArrayList<Pair<K,V>>(); for (K key : keySet()) { for (V value : get(key)) { pairs.add(new Pair<K,V>(key, value)); } } return pairs; } }
public List<Pair<K,V>> getPairs() { List<Pair<K,V>> pairs = new ArrayList<Pair<K,V>>(); for (K key : keySet()) { for (V value : get(key)) { pairs.add(new Pair<K,V>(key, value)); } } return pairs; } }
public List<Pair<K,V>> getPairs() { List<Pair<K,V>> pairs = new ArrayList<Pair<K,V>>(); for (K key : keySet()) { for (V value : get(key)) { pairs.add(new Pair<K,V>(key, value)); } } return pairs; } }
public List<Tuple2<K, V>> getPairs() { List<Tuple2<K, V>> pairs = new ArrayList<Tuple2<K, V>>(); for (K key : keySet()) { for (V value : get(key)) { pairs.add(Tuple.create(key, value)); } } return pairs; } }