Define IfFeature via a specialized class 45/80745/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 8 Mar 2019 14:04:34 +0000 (15:04 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 9 Mar 2019 12:13:56 +0000 (13:13 +0100)
commit024e83fdfef852a995ba5d43e3f753cd391afd69
treee2a3d5240116a61ce54144ebfa33185f4a6a5f0a
parent48922a50215c704a610e03ac1a1e5635d9dc257e
Define IfFeature via a specialized class

This reworks the grammar to use less recursion, as we can use
wildcards to eagerly combine expressions like "foo || bar || baz"
into any(foo, bar, baz) rather than or(foo, or(bar, baz)).

In order to properly support this contract, we define IfFeatureExpr,
which we specialize, so that we do not need to lug an opaque
predicate tree.

JIRA: YANGTOOLS-964
Change-Id: I048c3ced9c074e340031ac53c1117ce881b0a78b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 5874f5da6ff34f70c5754f5a98dbd0a32820fba1)
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IfFeatureExpr.java [new file with mode: 0644]
yang/yang-parser-rfc7950/src/main/antlr/IfFeatureExpressionParser.g4
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeaturePredicateVisitor.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeatureStatementSupport.java