@Override public Map<String, Entry<V, CommonTree>> fromASTNode(CommonTree treeNode) throws ReadingException { if (treeNode.token != null && treeNode.token.getType() == headTokenType) { if (treeNode.getChildCount() < 1) { return null; } HashMap<String, Entry<V, CommonTree>> kVals = new HashMap<>(); for (Object obj : treeNode.getChildren()) { CommonTree node = (CommonTree) obj; if (node.token != null && node.token.getType() == SpiderDiagramsParser.PAIR && node.getChildCount() == 2) { String key = IDTranslator.Instance.fromASTNode((CommonTree) node.getChild(0)); ElementTranslator<? extends V> translator = null; if (typedValueTranslators != null) { translator = typedValueTranslators.get(key); } if (translator == null) { if (defaultValueTranslator != null) { translator = defaultValueTranslator; } else { throw new ReadingException( i18n( "ERR_TRANSLATE_UNEXPECTED_KEY_VALUE", key, typedValueTranslators == null ? "" : typedValueTranslators.keySet()), (CommonTree) node.getChild(0)); } } V value = translator.fromASTNode((CommonTree) node.getChild(1)); kVals.put(key, new SimpleEntry<>(value, node)); } else { throw new ReadingException( i18n("ERR_TRANSLATE_UNEXPECTED_ELEMENT", i18n("TRANSLATE_KEY_VALUE_PAIR")), node); } } return kVals; } throw new ReadingException( i18n("ERR_TRANSLATE_UNEXPECTED_ELEMENT", i18n(i18n("ERR_TRANSLATE_LIST_OR_SLIST"))), treeNode); }
@Override protected V fromASTChildAt(int i, CommonTree treeNode) throws ReadingException { return valueTranslator.fromASTNode(treeNode); }