super(mathMode);
}
+ @Override
+ YangQNameExpr createExpr(final String localName) {
+ return YangQNameExpr.of(UnresolvedQName.Unqualified.of(localName));
+ }
+
@Override
YangQNameExpr createExpr(final String prefix, final String localName) {
return YangQNameExpr.of(UnresolvedQName.Qualified.of(prefix, localName));
}
+ @Override
+ QNameStep createChildStep(final String localName, final Collection<YangExpr> predicates) {
+ return YangXPathAxis.CHILD.asStep(UnresolvedQName.Unqualified.of(localName), predicates);
+ }
+
@Override
QNameStep createChildStep(final String prefix, final String localName, final Collection<YangExpr> predicates) {
return YangXPathAxis.CHILD.asStep(UnresolvedQName.Qualified.of(prefix, localName), predicates);
}
static final class Qualified extends InstanceIdentifierParser {
- final YangNamespaceContext namespaceContext;
+ private final YangNamespaceContext namespaceContext;
Qualified(final YangXPathMathMode mathMode, final YangNamespaceContext namespaceContext) {
super(mathMode);
}
@Override
- QNameStep createChildStep(final String prefix, final String localName, final Collection<YangExpr> predicates) {
- return YangXPathAxis.CHILD.asStep(namespaceContext.createQName(prefix, localName), predicates);
+ YangQNameExpr createExpr(final String localName) {
+ return YangQNameExpr.of(UnresolvedQName.Unqualified.of(localName));
}
-
@Override
YangQNameExpr createExpr(final String prefix, final String localName) {
return YangQNameExpr.of(namespaceContext.createQName(prefix, localName));
}
+ @Override
+ QNameStep createChildStep(final String localName, final Collection<YangExpr> predicates) {
+ return YangXPathAxis.CHILD.asStep(UnresolvedQName.Unqualified.of(localName), predicates);
+ }
+
+ @Override
+ QNameStep createChildStep(final String prefix, final String localName, final Collection<YangExpr> predicates) {
+ return YangXPathAxis.CHILD.asStep(namespaceContext.createQName(prefix, localName), predicates);
+ }
}
private final YangXPathMathSupport mathSupport;
return YangLocationPath.absolute(steps);
}
+ abstract YangQNameExpr createExpr(String localName);
+
abstract YangQNameExpr createExpr(String prefix, String localName);
+ abstract QNameStep createChildStep(String localName, Collection<YangExpr> predicates);
+
abstract QNameStep createChildStep(String prefix, String localName, Collection<YangExpr> predicates);
private QNameStep parsePathArgument(final PathArgumentContext expr) {
+ final var predicates = switch (expr.getChildCount()) {
+ case 1 -> ImmutableSet.<YangExpr>of();
+ case 2 -> parsePredicate(getChild(expr, PredicateContext.class, 1));
+ default -> throw illegalShape(expr);
+ };
+
final NodeIdentifierContext childExpr = getChild(expr, NodeIdentifierContext.class, 0);
- final String prefix = verifyIdentifier(childExpr, 0);
- final String localName = verifyIdentifier(childExpr, 2);
+ final String first = verifyIdentifier(childExpr, 0);
- return switch (expr.getChildCount()) {
- case 1 -> createChildStep(prefix, localName, ImmutableSet.of());
- case 2 -> createChildStep(prefix, localName, parsePredicate(getChild(expr, PredicateContext.class, 1)));
- default -> throw illegalShape(expr);
+ return switch (childExpr.getChildCount()) {
+ case 1 -> createChildStep(first, predicates);
+ case 3 -> createChildStep(first, verifyIdentifier(childExpr, 2), predicates);
+ default -> throw illegalShape(childExpr);
};
}
}
private YangQNameExpr createChildExpr(final NodeIdentifierContext expr) {
- return createExpr(verifyIdentifier(expr, 0), verifyIdentifier(expr, 2));
+ final var first = verifyIdentifier(expr, 0);
+ return switch (expr.getChildCount()) {
+ case 1 -> createExpr(first);
+ case 3 -> createExpr(first, verifyIdentifier(expr, 2));
+ default -> throw illegalShape(expr);
+ };
}
private static String verifyIdentifier(final NodeIdentifierContext expr, final int child) {