[antlr-interest] single-pass pattern matching "for free"?

Terence Parr parrt at cs.usfca.edu
Sat Jan 14 15:59:07 PST 2006

On Jan 14, 2006, at 3:40 PM, Nigel Sheridan-Smith wrote:
> It seems that Andy's approach gives more granularity of control over
> particular pattern matching and manipulation - things that would  
> have to be
> coded as an action in an ANTLR tree-walker. However, the  
> disadvantage is
> that it requires somebody to write such a rule engine to process  
> the 200 or
> so rules that you have written. It does sound like it would be more
> intuitive to write these rules in certain circumstances, depending  
> on what
> patterns were acceptable.

Perhaps we can have the ease of specification of Andy's solution  
without having to handbuild a specific pattern engine...well, if  
we're going to only do a single linear check for a match, apply rule,  
and repeat.  Imagine a pattern engine like this:

<expr>+0 -> <expr>
<expr>*0 -> 0

Can't we auto convert this to:

rules returns [String result]
       :       => expr '+' INT {$INT.text.equals("0")}? {$result =  
       |       => expr '*' INT {$INT.text.equals("0")}? {$result =  

where assume for the moment that => on the front is a shorthand for  
back on this alt.

rule 'rules' would be checked against every char in the input stream  
until it found a match etc...  Very much like the fuzzy java parser I  
just built that scans incomplete or semi-bogus java code looking for  
recognizable stuff.

Would thing kind of thing be useful?  Best of both worlds?  For many  
applications, this would be great!


More information about the antlr-interest mailing list