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

Bill Mayfield antlrinterest at gmail.com
Wed Sep 3 02:36:05 PDT 2008


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
>>
>>
>


More information about the antlr-interest mailing list