[antlr-interest] tree parser syntax

Sam Barnett-Cormack s.barnett-cormack at lancaster.ac.uk
Wed Aug 19 08:25:59 PDT 2009


Safiye Celik wrote:
> Thanks for the answer. Now I wonder what is the way of putting that 
> INTEGER : ('0'..'9')+ to the tokens {} part of my tree grammar. I want 
> this, because I get no error for the tokens defined in tokens {} block 
> in my tree grammar. But I cannot do this directly as
> tokens {
> ...
> INTEGER = '0'..'9'+
> ...
> }
> I get an error of "Expecting SEMI, found '..'".
> How can get rid of this error and put INTEGER token to tokens block?
> Thanks in advance..

You need to create a separate lexer grammar first, defining your lexical 
rules. Before a tree parser is useful, you also need a conventional 
parser to build the tree the tree parser parses. You end up with three 
separate recognisers that feed into one another.

Lexer produces token stream which is consumed by
Parser produces AST which is consumed by
TreeParser

Sam

> 2009/8/19 Gavin Lambert <antlr at mirality.co.nz <mailto:antlr at mirality.co.nz>>
> 
>     At 00:59 20/08/2009, Safiye Celik wrote:
> 
>         I get an error saying "lexer rule INTEGER not allowed in
>         parser". How would I handle this issue? If I first write
>         "grammar MyGrammar;" to my .g file and after listing rules and
>         tokens write "tree grammar MyGrammar;" in order to parsing the
>         tree, I get a syntax error. In ANTLR v2, we were able to declare
>         lexer, parser, and then tree walker in the same .g file. What is
>         the way of it in v3? Or how would I declare tokens such as
>         INTEGER above to the tree grammar?
> 
> 
>     In v3, each grammar must be in its own separate file.  (Though as a
>     special case, a "combined" grammar can have both lexer and parser
>     rules [not tree parser rules, though].)
> 
>     The options section is used to tell the tree grammar where it will
>     be getting its token definitions from.
> 
>     Probably your best bet is to have a look at the examples (in the
>     separate examples zipfile).
> 
> 
> 
> 
> -- 
> -safiye
> 
> 
> ------------------------------------------------------------------------
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address


-- 
Sam Barnett-Cormack


More information about the antlr-interest mailing list