* Full RFC 7950 if-feature-expr support (Section 7.20.2)

* Previous implementation did not handle nested if-feature expressions
  * As part of fixing: [YANG if-feature does not support nested boolean expression](https://github.com/clicon/clixon/issues/341)
  * Added new yacc/lex parser for if-feature-expr string
This commit is contained in:
Olof hagsand 2022-06-26 10:56:03 +02:00
parent 5bb3767358
commit a00e36caa2
11 changed files with 484 additions and 155 deletions

View file

@ -1956,6 +1956,13 @@ ys_parse_sub(yang_stmt *ys,
goto done;
}
break;
case Y_IF_FEATURE:
/* Invoke next level parser on if-feature-expr string. Note do not send ys since
* pass 1 is not yet resolved, only check syntax, actual feature check made in next pass
*/
if (yang_if_feature_parse(yang_argument_get(ys), NULL, yang_linenum_get(ys), NULL) < 0)
goto done;
break;
case Y_UNKNOWN:{ /* save (optional) argument in ys_cv */
if (extra == NULL)
break;