[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