[YANGTOOLS-1089] Cannot parse yang files containing plus Created: 11/Mar/20  Updated: 26/Aug/20  Resolved: 14/Aug/20

Status: Resolved
Project: yangtools
Component/s: parser
Affects Version/s: 2.1.8, 3.0.5, 4.0.7
Fix Version/s: 4.0.14, 5.0.6, 3.0.17

Type: Bug Priority: High
Reporter: mikael petterson Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Jdk 1.8.0_181 and Redhat 7



 Description   

We have tried to use:

dependency>

            <groupId>org.opendaylight.yangtools</groupId>

            <artifactId>yang-parser-impl</artifactId>

            <version>2.1.8</version>

            <type>jar</type>

        </dependency>

        <dependency>

            <groupId>org.opendaylight.yangtools</groupId>

            <artifactId>yang-parser-api</artifactId>

            <version>2.1.8</version>

            <type>jar</type>

        </dependency>

        <dependency>

            <groupId>org.opendaylight.yangtools</groupId>

            <artifactId>yang-model-api</artifactId>

            <version>2.1.8</version>

            <type>jar</type>

        </dependency>

 

and even 3.0.5

Problem appeared for example ( but is not limited to since we tried same for description)

unquoted string for default like this:

  

      leaf timeOffset {
            type string {
                length "5..6";
            }
           description "The time offset from UTC";
            default +00:00;
        }

 

We will get the following exception when parsing.

 

 

2020-03-10 21:33:02,578 (YangErrorListener.java:36)DEBUG : Syntax error in RevisionSourceIdentifier [name=company-timesettings-radio] at 1:3887: no viable alternative at input ' +'
org.antlr.v4.runtime.NoViableAltException
            at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2028)
            at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:467)
            at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393)
            at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.statement(YangStatementParser.java:154)
            at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.statement(YangStatementParser.java:229)
            at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.statement(YangStatementParser.java:229)
            at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.statement(YangStatementParser.java:229)
            at org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.parseYangSource(YangStatementStreamSource.java:192)
            at org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.create(YangStatementStreamSource.java:95)
            at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.sourceToStatementStream(YangParserImpl.java:136)
            at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.addSource(YangParserImpl.java:69)
            at org.opendaylight.yangtools.yang.model.parser.api.YangParser.addSources(YangParser.java:80)
*no* further _formatting_ is done here

 

Is it possible to fix in any of the above versions since 4.x has major refactoring?

We cannot continue to parse our yang model files due to this issue. It is a stopper.

 

//mikael

 



 Comments   
Comment by Jamo Luhrsen [ 11/Mar/20 ]

I lowered the priority here so it doesn't show up as a release blocker.

Comment by Robert Varga [ 17/Apr/20 ]

a workaround would be to quote the string, I think

Comment by Robert Varga [ 17/Apr/20 ]

The problem is STRING definition in YangParserLexer.g4. I am not sure how far back can we backport the fix – 2.1.x has been desupported some time ago.

Comment by Robert Varga [ 22/Jul/20 ]

The fix causes a regression in the following construct:

description "foo" +"bar";

this will need to be completely revisited, as the Lexer/Parser seem to have large number of other edge cases.

Generated at Wed Feb 07 20:55:09 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.