Skip to content

Stack overflow using a grammar that has an extraneous | in a token definition #2860

@omry

Description

@omry

Minimal grammar:

grammar test;                                                                            
                                                                                        
TILDE: '~';                                                                              
                                                                                         
fragment                                                                                 
QSTRING: (TILDE|)+;                                                                      
                                                                                         
QUOTED_VALUE:  '\'' QSTRING? '\'' ;                                                      
                                                                                     
single_value: QUOTED_VALUE ;                                                             

Building and running results in a stack overflow.
I saw this first on the Python runtime and then the same issue on the Java runtime (using grun).
This is using antlr-4.8-complete.jar.

antlr4 *.g4 && javac *.java && echo -n "'~'" |  grun test single_value -tokens
Exception in thread "main" java.lang.StackOverflowError                                  
        at org.antlr.v4.runtime.misc.Array2DHashSet.getOrAdd(Array2DHashSet.java:59)     
        at org.antlr.v4.runtime.atn.ATNConfigSet.add(ATNConfigSet.java:146)              
        at org.antlr.v4.runtime.atn.ATNConfigSet.add(ATNConfigSet.java:122)              
        at org.antlr.v4.runtime.atn.LexerATNSimulator.closure(LexerATNSimulator.java:446)
        at org.antlr.v4.runtime.atn.LexerATNSimulator.closure(LexerATNSimulator.java:455)
        at org.antlr.v4.runtime.atn.LexerATNSimulator.closure(LexerATNSimulator.java:455)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions