Define IfFeature via a specialized class 49/80749/2
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 21:07:02 +0000 (22:07 +0100)
commitf7e65b670d932f2132b76e0c614bdf7ef2a17598
tree236daa7a208a1e45c2955dac4a1433edcb599c63
parent6a20d8e0c471bc4a3e3ecb9b4f974aa1a9910e8c
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)
(cherry picked from commit 024e83fdfef852a995ba5d43e3f753cd391afd69)
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