[antlr-interest] Error: "Message ID 100 created but is not present in errorMsgIDs"
Johannes Luber
jaluber at gmx.de
Fri Jul 11 07:57:03 PDT 2008
Andy Doddington schrieb:
> I have written a very simple grammar, that supports single line
> comments, and a primitive 'DEFINE name' statement.
>
> Processing this inside AntlrWorks seems to be reasonably OK< e.g.
> generating the parse tree. However, when I try
> to debug or generate code I get the following error:
>
> error(100):
> U:\Development\NomadSchemaAnalyser\grammar\NomadSchema.g:0:0: syntax
> error: codegen: <AST>:0:0: unexpected end of subtree
> error(10): internal error:
> org.antlr.tool.Message.toString(Message.java:124): Assertion failed!
> Message ID 100 created but is not present in errorMsgIDs or warningMsgIDs.
>
> This looks like an internal Antlr bug - referring to a non-existent
> 'Message ID 100' am I correct in this supposition? If so,
> when is it due to be fixed; if not, what am I doing wrong?
>
> My grammar is as given below:
>
> grammar TestGrammar;
>
> DefList: (CommentLine | Def | WS)*;
>
> fragment Def: 'DEFINE' WS Name;
> fragment CommentLine: '!' ~('\n'|'\r')* '\r'? '\n' { $channel =
> HIDDEN; };
> fragment Name: Letter AlphaNum*;
> fragment AlphaNum: Letter | Digit;
> fragment Digit: '0'..'9';
> fragment Letter : 'A'..'Z' | 'a'..'z';
> fragment WS: ( ' ' | '\t' | '\r' | '\n')+ { $channel = HIDDEN; };
>
> Thanks,
>
> Andy D
>
There are some bugs indeed - ANTLR doesn't deal correctly with your
input. Considering your grammar it may have some bugs, too. Try this:
grammar TestGrammar2;
defList: (CommentLine | Def | WS)*;
Def: 'DEFINE' WS Name;
CommentLine: '!' ~('\n'|'\r')* '\r'? '\n' { $channel = HIDDEN; };
fragment Name: Letter AlphaNum*;
fragment AlphaNum: Letter | Digit;
fragment Digit: '0'..'9';
fragment Letter : 'A'..'Z' | 'a'..'z';
WS: ( ' ' | '\t' | '\r' | '\n')+ { $channel = HIDDEN; };
I've changed DefList into a parser rule and removed fragment to create
tokens to scan for.
Johannes
More information about the antlr-interest
mailing list