[antlr-interest] Fwd: Simple question, Hard answer?

Liehann Loots liehannl at gmail.com
Wed Sep 3 02:56:03 PDT 2008


What happens if you try something like

start: either*
either: pattern | chaos

The rest would be the same as your example.

 - Liehann

On Wed, Sep 3, 2008 at 11:36 AM, Bill Mayfield <antlrinterest at gmail.com> wrote:
> Okay... but what if this isn't a lexer problem? Suppose I my input is
> only made up of 'o' and 'k'
>
> oooookooookkooo -> 1 match
> oookkoooookkoook -> 2 matches
>
> what would my grammar look like?
>
> grammar test;
>
> start   :       chaos* pattern* chaos*;
>
> pattern :       T1 T2 T2 T1;
>
> chaos   :       T1 | T2;
>
> T1      :       'o';
> T2      :       'k';
>
>
> This one compains that it can match multiple alternatives. I don't
> understand since I read it like: match any iteration of T1 or T2
> tokens followed by T1 T2 T2 T1 followed by any iteration of T1 or T2
> tokens....
>
>
> Thanks again :o)
>
>
> Kind regards,
> Bill
>
>
>
> On Wed, Sep 3, 2008 at 11:23 AM, Thomas Brandon <tbrandonau at gmail.com> wrote:
>> On Wed, Sep 3, 2008 at 7:13 PM, Bill Mayfield <antlrinterest at gmail.com> wrote:
>>> Hi,
>>>
>>> Suppose I want to recognize each pattern 'okko' in a random string of
>>> characters. Some examples:
>>>
>>> aaaaaoookoooookkooooaaa -> should yield one match of 'okko'
>>> aaaokkookko -> should yield two matches of 'okko'
>>>
>>>
>>>
>>> Here is a grammar that won't work ;o)
>>>
>>> grammar test;
>>>
>>> start   :       .* pattern .*;
>>>
>>> pattern :       T1 T2 T2 T1;
>>>
>>>
>>> T1      :       'o';
>>> T2      :       'k';
>>>
>> Wildcards in parser rules match any token, not any character. As your
>> lexer only matches 'o'|'k' anything else will cause a lexer error. Try
>> adding a lexer rule to match any other input after your other lexer
>> rules, like:
>> OTHER: .;
>> Or you may want to look at filtering lexers as they may be better
>> suited to your task.
>>
>> Tom.
>>>
>>> No matter what grammar I try. I can't get it to work... how hard can it be?
>>>
>>>
>>> Thanks for any input you may provide,
>>> Bill
>>>
>>> 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