[antlr-interest] ANTLR 3.0b4: NullPointerException in NFAToDFAConverter

Raffael Herzog devnull at raffael.ch
Thu Sep 14 07:57:09 PDT 2006


Hi,

I suddenly run into an NPE at line 989 of NFAToDFAConverter when I try
to compile my syntax with antlr 3.0b4.

Looking at the code, it's rather obvious that this code can't be right:

if ( (gatedPreds==null && existingStateGatedPreds==null) ||
    (gatedPreds!=null && existingStateGatedPreds!=null) ||
    gatedPreds.equals(existingStateGatedPreds) )

If both are null, evaluation will stop with true. If both are non-null,
evaluation will also stop with true. So, if we get the the equals
statement, we know for sure that one of them is null, so we also know
that this equals statement will either evaluate to false or throw an
NPE.

Probably, this should be a null-safe equals. If so, a corrected version
of this if statement could look like this:

if ( (gatedPreds==null && existingStateGatedPreds==null) ||
    (!(gatedPreds==null ^ existingStateGatedPreds==null) &&
    gatedPreds.equals(existingStateGatedPreds)) )

cu,
   Raffi




More information about the antlr-interest mailing list