[antlr-interest] Match token {n} times

William Clodius wclodius at los-alamos.net
Sun Aug 28 17:55:42 PDT 2011


Janne:

While it can be done using syntactic analysis, this sort of problem is almost invariably best addressed with semantic analysis and not with syntactic analysis. Semantic analysis allows the ready identification of common errors, e.g. if the input has dropped the whitespace between numbers, or if the creator of the input has lost track and repeated a number. A common problem with novices attempting to implement language analysis is to believe that their task is simplified by moving sophisticated tasks to conceptually simple tasks. They will try to simplify semantic analysis by creating a more detailed syntactic analysis and syntactic analysis by creating a more detailed lexical analysis. Almost invariably they discover that this attempt is fruitless and has to be undone, because it results in poor error reporting, runs into conflicts as the implementation becomes more complete, duplicates functionality in the later portions of the analysis, and is hard to maintain. For example I suspect that your account has an underlying structure: e.g.

ACCOUNT
    : BankID BranchID AccountType UserID ...

On Aug 28, 2011, at 7:23 AM, Bart Kiers wrote:

> Hi Jonne,
> 
> No, that is not possible with a quantifier like {x}. You'll have to do it
> the "hard" way:
> 
> ACCOUNT
>  :  NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
>  ;
> 
> Regards,
> 
> Bart.
> 
> 
> On Sun, Aug 28, 2011 at 3:20 PM, Jonne Zutt <jonne.zutt.ml at gmail.com> wrote:
> 
>> Dear all,
>> 
>> Is it possible with antlr to match a token exactly n times?
>> Something like the following:
>> 
>> ACCOUNT : NUMBER{8};
>> 
>> NUMBER  :       ZERO
>>       |       (NONZERO DIGIT*)
>>       ;
>> ZERO    :       '0';
>> NONZERO :       '1'..'9';
>> DIGIT   :       '0'..'9';
>> 
>> Thanks,
>> Jonne.
>> 
>> 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