[antlr-interest] Fundamental question

Jim Idle jimi at temporal-wave.com
Wed Nov 9 09:17:56 PST 2011


Except that the rule "type" does not allow an ID as the type, and so this
is a plain syntax error that is not picked up because of the lack of EOF
at the end of the start rule.

Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Ian Kaplan
> Sent: Wednesday, November 09, 2011 9:09 AM
> To: Mari Matinlassi
> Cc: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Fundamental question
>
>   There is nothing wrong as far as the syntax goes with this.  There
> could, for example, be a user defined type called strig (strings for
> trigonometry :).  So this is grammatically correct.  What is not
> correct is the semantics.  In fact, there probably is no user defined
> type strig.  So this is an error may be issued after the syntax tree is
> built, when a semantic phase makes a pass over the tree.  The semantic
> phase would discover that there was no type strig and report an error
> ("No type 'strig' on line 42").
>
>
> On Wed, Nov 9, 2011 at 8:18 AM, Mari Matinlassi
> <mmatinlassi at icinetic.com>wrote:
>
> > Hi,
> >
> > There is something fundamental and important that I have not
> > understood with ANTLR grammars.
> >
> > If I need to parse something like...
> >
> >        int test;
> >        strig another;
> >        int variable;
> >        string here;
> >
> > You notice there is a typing error on the second line ('strig'
> instead
> > of 'string').
> >
> > How do I make a grammar that will not stop parsing but, continues
> > after an error??
> >
> > Below is an example how I CANNOT make it work the right way (created
> > AST contains only 'int test ;')..
> >
> > grammar List;
> >
> > options {
> >        language = CSharp3;
> >        TokenLabelType = CommonToken;
> >        output=AST;
> >        ASTLabelType = CommonTree;
> > }
> >
> > @lexer::namespace{ConsoleApplication4}
> > @parser::namespace{ConsoleApplication4}
> >
> >
> > public r
> >        : variables*
> >        ;
> >
> > variables
> >        : type ID ';'
> >        ;
> >
> > type
> >        : 'int'
> >        | 'string'
> >        ;
> >
> > ID : 'a'..'z' + ;
> >
> > WS : (' ' |'\n' |'\r' ) {$channel=Hidden;} ;
> >
> >
> > Many thanks for your time and help,
> >
> > Mari
> >
> >
> >
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe:
> > http://www.antlr.org/mailman/options/antlr-interest/your-email-
> address
> >
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address


More information about the antlr-interest mailing list