[antlr-interest] Fun with ANTLR3: mystery of the huge lexer

Randall R Schulz rschulz at sonic.net
Sat Jun 30 17:55:54 PDT 2007


On Saturday 30 June 2007 17:30, David Piepgrass wrote:
> ...
> > User operators eh, how do they specify precedence?
>
> With numbers. In fact, they can even have a different precedence on
> the left and right sides of a binary operator, as well as making
> ternary and other complex operators. I'm still developing the
> algorithm but I think it will work.

Two things:

1) I'm intrigued by user-defined or -extensible grammars. Over on the 
Groovy list we touched on dynamic / user-specified grammars recently in 
the context of adding rule- or logic-based programming capabilities to 
the language (and / or its runtime / libraries), and I'm a somewhat 
familiar with Prolog's operator definition and user-specified grammar 
facilities.

If this isn't something proprietary, could you point me to information 
on the language you're dealing with?


2) I don't know why you want to avoid lexer fragments. The way I think 
about them, and someone will, I hope, correct me if I'm wrong about 
this, they're like macros. They don't stand alone, but are "expanded" 
in-line in other lexer rules that reference them.

Seen this way, they're just a way to avoid replicating regular 
expressions. And, again if I'm not mistaken, any number of references 
to ANTLR lexer fragments are indistinguishable from simply cutting and 
pasting the right-hand-sides of those fragments in place of the 
references to them.

It seems like a real win. You don't introduce or eliminate any 
ambiguities and there is no effect on lexer complexity or efficiency. 
You just avoid replication of REs. Given the "write-only" nature of 
REs, that seems like a very good thing.


Randall Schulz


More information about the antlr-interest mailing list