[antlr-interest] Import problems with Antlr 3.1.1 - Whitespace
Peterson, Joe
joe.peterson at intel.com
Fri Nov 14 12:21:29 PST 2008
Hello all,
I'm having several some problems with import and I'm hoping y'all can help me understand the problems. I'll list them in separate e-mails as I fully qualify the problems.
Basically, I have 15 or so related files that I need to parse. They all should use the same lexer rules, so I started out trying to put all the lexer rules into a single file that all the root grammars would import. But that didn't work. I'm using Antlr 3.1.1 (AntlrWorks 1.2) and when I compile, I'm using VC2008 (but my current problem happens even using the AntlrWorks interpreter).
Here is my first problem... I can't seem to put all my lexer rules in a separate file because when I put the WS definition in a separate file, I get errors. Take these overly simple sample files that demonstrate one of my issues:
//// test.g Starts here
grammar test;
import testlexer;
version_info : VERSION VERSION_IDENTIFIER SEMICOLON ;
//// test.g Ends here
//// testlexer.g starts here
lexer grammar testlexer;
VERSION : 'Version';
VERSION_IDENTIFIER : ('0'..'9')+ '.' ('0'..'9')+ ;
SEMICOLON : ';';
WS : (' '|'\t' | '\r' | '\n')+ {$channel=HIDDEN;};
//// testlexer.g ends here
//// input starts here
Version 1.0;
//// input ends here
When I run it on a simple file it blows up after the version keyword... it's like it doesn't send the WS to the hidden channel.
If I move the WS declaration into test.g, it works fine.
Am I missing something with how imports work? Shouldn't I be able to put the WS declaration in the common lexer file?
(I apologize if this goes through twice, I sent it yesterday and still haven't seen it come through...)
Thanks,
-JEEP
Joe Peterson
More information about the antlr-interest
mailing list