<artifactId>yang-xpath-api</artifactId>
<version>2.0.4-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-xpath-antlr</artifactId>
+ <version>2.0.4-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-xpath-impl</artifactId>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-xpath-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-xpath-antlr</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-xpath-impl</artifactId>
<!-- YANG XPath API and implementation -->
<module>yang-xpath-api</module>
+ <module>yang-xpath-antlr</module>
<module>yang-xpath-impl</module>
<!-- End-user utility for validating YANG models -->
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>bundle-parent</artifactId>
+ <version>4.0.4-SNAPSHOT</version>
+ <relativePath>../../bundle-parent</relativePath>
+ </parent>
+
+ <artifactId>yang-xpath-antlr</artifactId>
+ <version>2.0.4-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+ <name>${project.artifactId}</name>
+ <description>YANG XPath ANTLR grammars</description>
+
+ <properties>
+ <!-- antlr-generated code does not pass SB -->
+ <odlparent.spotbugs.skip>true</odlparent.spotbugs.skip>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4-runtime</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>antlr4</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <listener>false</listener>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Automatic-Module-Name>org.opendaylight.yangtools.yang.xpath.antlr</Automatic-Module-Name>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
<name>${project.artifactId}</name>
<description>YANG XPath parser</description>
- <properties>
- <!-- FIXME: antlr-generated code does not pass SB -->
- <odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
- </properties>
-
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-xpath-api</artifactId>
</dependency>
-
<dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-runtime</artifactId>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-xpath-antlr</artifactId>
</dependency>
+
<dependency>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>metainf-services</artifactId>
<build>
<plugins>
- <plugin>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-maven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>antlr4</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <listener>false</listener>
- </configuration>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.common.YangNamespaceContext;
import org.opendaylight.yangtools.yang.common.YangVersion;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathLexer;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.AbbreviatedStepContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.AbsoluteLocationPathNorootContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.AdditiveExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.AndExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.AxisSpecifierContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.EqualityExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.ExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.FilterExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.FunctionCallContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.FunctionNameContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.LocationPathContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.MultiplicativeExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.NCNameContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.NameTestContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.NodeTestContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.OrExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.PathExprNoRootContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.PredicateContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.PrimaryExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.QNameContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.RelationalExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.RelativeLocationPathContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.StepContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.UnaryExprNoRootContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.UnionExprNoRootContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathParser.VariableReferenceContext;
import org.opendaylight.yangtools.yang.xpath.api.YangBinaryOperator;
import org.opendaylight.yangtools.yang.xpath.api.YangBooleanConstantExpr;
import org.opendaylight.yangtools.yang.xpath.api.YangExpr;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathMathSupport;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathNodeType;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathParser;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.AbbreviatedStepContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.AbsoluteLocationPathNorootContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.AdditiveExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.AndExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.AxisSpecifierContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.EqualityExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.ExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.FilterExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.FunctionCallContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.FunctionNameContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.LocationPathContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.MultiplicativeExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.NCNameContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.NameTestContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.NodeTestContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.OrExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.PathExprNoRootContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.PredicateContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.PrimaryExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.QNameContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.RelationalExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.RelativeLocationPathContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.StepContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.UnaryExprNoRootContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.UnionExprNoRootContext;
-import org.opendaylight.yangtools.yang.xpath.impl.xpathParser.VariableReferenceContext;
/**
* ANTLR-based XPath parser. Uses {@code xpath.g4} ANTLR grammar.
*/
package org.opendaylight.yangtools.yang.xpath.impl;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import javax.xml.xpath.XPathExpressionException;
import org.antlr.v4.runtime.BaseErrorListener;
import org.antlr.v4.runtime.RecognitionException;
import org.eclipse.jdt.annotation.Nullable;
final class CapturingErrorListener extends BaseErrorListener {
+ @SuppressFBWarnings(value = "NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR",
+ justification = "SB does not grok CDT")
private @Nullable XPathExpressionException error;
@Override
if (args.isEmpty()) {
return NORMALIZE_SPACE;
}
- final YangExpr arg = args.get(0);
- if (arg instanceof YangLiteralExpr) {
- // TODO: normalize value
- }
+ // final YangExpr arg = args.get(0);
+ // if (arg instanceof YangLiteralExpr) {
+ // // TODO: normalize value
+ // }
return YangFunctionCallExpr.of(YangFunction.NORMALIZE_SPACE.getIdentifier(), args);
}
import org.antlr.v4.runtime.tree.ParseTree;
import org.opendaylight.yangtools.yang.common.QualifiedQName;
import org.opendaylight.yangtools.yang.common.YangNamespaceContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.EqQuotedStringContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.InstanceIdentifierContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.KeyPredicateContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.KeyPredicateExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.LeafListPredicateContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.LeafListPredicateExprContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.NodeIdentifierContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.PathArgumentContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.PosContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.PredicateContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.instanceIdentifierParser.QuotedStringContext;
+import org.opendaylight.yangtools.yang.xpath.antlr.xpathLexer;
import org.opendaylight.yangtools.yang.xpath.api.YangBinaryOperator;
import org.opendaylight.yangtools.yang.xpath.api.YangExpr;
import org.opendaylight.yangtools.yang.xpath.api.YangLiteralExpr;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathAxis;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathMathMode;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathMathSupport;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.EqQuotedStringContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.InstanceIdentifierContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.KeyPredicateContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.KeyPredicateExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.LeafListPredicateContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.LeafListPredicateExprContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.NodeIdentifierContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.PathArgumentContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.PosContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.PredicateContext;
-import org.opendaylight.yangtools.yang.xpath.impl.instanceIdentifierParser.QuotedStringContext;
abstract class InstanceIdentifierParser {
static final class Base extends InstanceIdentifierParser {