[antlr-interest] Why BANG after rule id ?

Kaleb Pederson kaleb.pederson at gmail.com
Tue Oct 6 14:58:43 PDT 2009


Well I wasn't paying enough attention to the question, so the answer I gave probably wasn't right :(.  The exclamation mark is used as I indicated when following an element or range within a rule, but I've never actually seen it used as in the example you provided.  I looked at the grammar description documentation (http://www.antlr.org/wiki/display/ANTLR3/Grammars), but don't see it present in the documentation.

It's definitely supported as indicated by the '!' in this grammar rule:

rule
scope {
    String name;
}
    :   DOC_COMMENT?
        ( modifier=('protected'|'public'|'private'|'fragment') )?
        id {$rule::name = $id.text;}
        '!'?
        ( arg=ARG_ACTION )?
        ( 'returns' rt=ARG_ACTION  )?
        throwsSpec? optionsSpec? ruleScopeSpec? ruleAction*
        ':' altList ';'
        exceptionGroup?
        -> ^( RULE id {modifier!=null?adaptor.create(modifier):null} ^(ARG[$arg] $arg)? ^('returns' $rt)?
              throwsSpec? optionsSpec? ruleScopeSpec? ruleAction*
              altList
              exceptionGroup?
              EOR["EOR"]
            )
    ;

Sorry I can't be of more help.

--Kaleb

http://twitter.com/kalebpederson
http://kalebpederson.com

On Tuesday 06 October 2009 02:18:55 pm Kaleb Pederson wrote:
> On Tuesday 06 October 2009 03:15:05 am Graham Wideman wrote:
> > Hi folks:
> > 
> > I see in the ANTLR grammar that you can place a BANG (exclamation point) after the initial rule id in a rule. Indeed it's used in the ANTLR v3 grammar itself:
> > 
> > ----------------------------
> > range!
> >   :  c1=CHAR_LITERAL RANGE c2=CHAR_LITERAL elementOptions?
> >     -> ^(CHAR_RANGE[$c1,".."] $c1 $c2 elementOptions?)
> > ;
> > ----------------------------
> > 
> > Could someone illuminate what this ! does?
> 
> The exclamation mark is placed on a node when that node should not be present in the AST when output=AST for a grammar.
> 
> See:
> 
> http://jnb.ociweb.com/jnb/jnbJun2008.html#CreatingASTs
> http://www.antlr.org/wiki/display/ANTLR3/Tree+construction
> 
> --Kaleb
> 
> http://twitter.com/kalebpederson
> http://kalebpederson.com
> 


More information about the antlr-interest mailing list