[antlr-interest] vocabulary (token) import and export
bob mcwhirter
bob at werken.com
Wed May 22 20:40:20 PDT 2002
If there's a grammar that includes all tokens (in this case,
possibly your tree-walker), let that one be the exporter.
Though, I think the typical case is that the parser includes
all relevant tokens from the lexer, no? You seem to indicate
that's not true, which confuses me, personally.
I find that my parser has it's own tokens, uses the 'public'
lexer tokens, and constructs the tree using possibly more tree
tokens.
I don't see how a tree-walker can deal with lexer-based tokens
that the parser knows nothing about. How'd the tree get a lexer
token without the parser seeing it?
Anyhow, there's really no distinction between parser, lexer and
tree-walker tokens. The whole point is of course to unify them
into a single token set, and each parser may only use a subset
of the entire set.
So, if by some chance, there is no lexer/parser/tree-walker that
contains all tokens, simply add them in the tokens{} block, and
consider that file to be the master which does the exportVocab
and is antlr'd first. All others importVocab, and are compile
subsequently.
btw, I've never worked with antlr/C++, so things may be different
from my java-based world view.
-bob
On Wed, 22 May 2002, jsrs701 wrote:
> Hi gang,
>
> I am confused. I recently decided to bust up my mammoth .g file into
> three different files, one each for lexer, parser, and tree walker.
>
> Well, I'm running into vocab hell from this.
>
> What I want to do is have the lexer define some tokens that it uses
> and exports.
>
> Then I want to have the parser define some tokens that IT uses and
> exports.
>
> Then I want the tree walker to use all of those.
>
> Unfortunately, it looks like by the time the parser is compiled, it
> has only exported the tokens that it uses, and left out all the
> tokens that only the lexer uses. This is unfortunate, since then all
> the C++ files are compiled, and the Lexer.cpp file can't find a bunch
> of symbols that it needs!
>
> Ack!
>
> So anyone else have this problem? What's the solution? By the way,
> take it as a given that I cannot compile the C++ files right after
> compiling the .g file.
>
> Thanks,
> JSRS
>
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list