[antlr-interest] Confusing, hopefully-final, problems
Sam Barnett-Cormack
s.barnett-cormack at lancaster.ac.uk
Mon Mar 2 03:49:40 PST 2009
Sam Barnett-Cormack wrote:
> Sam Barnett-Cormack wrote:
>> Hey all,
>>
>> With Gavin's generous help, I'm down to one error and a couple of
>> warnings, which is nice.
>>
>> In the attached grammar, I haven't fixed the lexer issues Gavin
>> identified yet, as I'm focused on the parser for the moment.
>>
>> The error is on line 473, as are two of the warnings. I can't say as I
>> can figure out what it's getting at all, but I'm probably just being dumb.
>>
>> The rule is
>>
>> extensionAndException : '...' exceptionSpec? ;
>>
>> and exceptionSpec is:
>>
>> exceptionSpec : ('!' exceptionIdentification)? ;
>>
>> exceptionIdentification : signedNumber | definedValue | type ':' value ;
>>
>> The error and warnings are:
>>
>> warning(200): workspace/asn.1-parse/grammars/ASN_1.g:346:82: Decision
>> can match input such as "'('" using multiple alternatives: 1, 2
>> As a result, alternative(s) 2 were disabled for that input
>> warning(200): workspace/asn.1-parse/grammars/ASN_1.g:473:31: Decision
>> can match input such as "'}'" using multiple alternatives: 1, 2
>> As a result, alternative(s) 2 were disabled for that input
>> warning(200): workspace/asn.1-parse/grammars/ASN_1.g:473:31: Decision
>> can match input such as "','" using multiple alternatives: 1, 2
>> As a result, alternative(s) 2 were disabled for that input
>> error(201): workspace/asn.1-parse/grammars/ASN_1.g:473:31: The following
>> alternatives can never be matched: 2
>>
>> My best guess is that the problem comes from "type" in the
>> exceptionIdentification rule, but then I'd expect the error to be there,
>> and not in extensionAndException.
>
> No, Sam, it's because a rule is referenced as optional, and that rule
> can match nothing as well, so there's no point it being optional...
>
> So I'm now down to a warning about
>
> type : ((typeWithConstraint)=>typeWithConstraint | builtinType |
> referencedType) constraint* ;
>
> And a load of parser warnings and errors that it wasn't bothering to
> generate before... *sigh*
Or even *lexer* warnings and errors
Sam
More information about the antlr-interest
mailing list