[antlr-interest] Mismatched Character, expecting set null

John B. Brodie jbb at acm.org
Fri Aug 6 04:33:05 PDT 2010


Greetings!

On Fri, 2010-08-06 at 02:16 -0400, Ken Klose wrote:
> Hello,
> 
> I'm writing my first grammar and have started with something painfully
> simple but yet cannot figure out why I am receiving errors.   At this point
> I expect my grammar to recognize a whitespace delimited list of integers.
> Any help is appreciated.
> 
> ==== GRAMMAR ===
> grammar Herman;
> 
> options {
>   language = Java;
>   //output = AST;
> }
> 
> @header {
>   package com.kenklose.herman;
> }
> 
> @lexer::header {
>   package com.kenklose.herman;
> }
> 
> detail: ( integer );

this rule recognizes just one integer! not a list....

detail : INTEGER + ;

> 
> integer: ( DIGIT )+;

should probably be a lexer rule

INTEGER : ( DIGIT )+ ;

> 
> fragment DIGIT: '0'..'9';
> fragment LETTER : ('a'..'z' | 'A'..'Z');
> 
> WS: (' ' | '\t' | '\n' | '\r' | '\f') {$channel = HIDDEN;};

this rule recognizes (and then ignores) just a single white-space
character. would be more efficient as

WS : ( ' ' | '\t' | '\n' | '\r' | '\f' )+ {$channel=HIDDEN;} ;

> === Test Bed ===
> CharStream charStream = new ANTLRStringStream("1 2 3 4");
> HermanLexer lexer = new HermanLexer(charStream);
> TokenStream tokenStream = new CommonTokenStream(lexer);
> HermanParser parser = new HermanParser(tokenStream );
> parser.detail();
> System.out.println("Done.");
> === Error Output ===
> line 1:0 mismatched character '1' expecting set null
> line 1:2 mismatched character '2' expecting set null
> line 1:4 mismatched character '3' expecting set null
> line 1:6 mismatched character '4' expecting set null
> line 0:-1 required (...)+ loop did not match anything at input '<EOF>'
> Done.
> ===

hope this helps...
   -jbb





More information about the antlr-interest mailing list