[antlr-interest] tracking token position when original file is pre-processed

Jim Idle jimi at temporal-wave.com
Wed Jan 6 18:14:34 PST 2010

Easiest is to have the preprocessor mark the input stream like cpp does:

# 555 "myfile.c"

And then add a reference to the file into the token or similar.

You can also incorporate the preprocessor in to your lexer and stack input streams if it isn't in need of a parser to do the pre-processing.


> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Bob Frankel
> Sent: Wednesday, January 06, 2010 5:24 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] tracking token position when original file is
> pre-processed
> my language has a simple pre-processor that expands text of the form
> ${<env-var-name>} as a first phase of translation; the expanded stream
> is then input to my ANTLRInputStream, where it proceeds onward to the
> lexer/parser in the usual fashion.  said another way, neither the lexer
> nor the parser is aware of the ${...} construct.
> needless to say, character-position information (eg., token start/stop)
> are relative to the expanded stream and not the original file; this
> creates an problem, of course, when error indicators are not correctly
> positioned in the original source file (as i'm doing through some
> editor
> integration inside eclipse).
> is there some pattern and/or (simple!) example that illustrates a
> technique for managing this situation; is there some way (say) i might
> embedded the equivalent of #line directives in the expanded stream
> which
> are then stripped further downstream while adjusting token offsets???
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address

More information about the antlr-interest mailing list