Exactly...

This happens so often that we should add some warning somewhere in these
cases....


Cheers,
Jan

On 18 December 2014 at 08:36, Guillaume Larcheveque <
guillaume.larcheve...@gmail.com> wrote:
>
> So you just have to remove the #star in notA or replace it by #plus to
> makes it succeed only when it consume at least one character
>
> 2014-12-18 7:54 GMT+01:00 Guillaume Larcheveque <
> guillaume.larcheve...@gmail.com>:
>>
>> With x, x it will only go to 2 level deep.
>>
>> With the plus you allow to go as far as the x rule succeed and your x
>> rule always succeed because notA always succeed due to the star without
>> consuming anything so you fall into infinite loop.
>>
>> 2014-12-18 6:47 GMT+01:00 James Foster <smallt...@jgfoster.net>:
>>>
>>> There is something about plus that I don’t understand. In the following
>>> code if I parse for (x , x) then I get what I expect. If I parse for (x
>>> plus) then the image hangs. What am I doing wrong?
>>>
>>> James
>>>
>>> | a notA x y |
>>> a := $a asParser.
>>> notA := $a asParser negate star flatten.
>>> x := a / notA.
>>> y := x , x.     “works fine”
>>> y := x plus. “never finishes”
>>> ^y end parse: 'ab’.
>>>
>>>
>>>
>>
>> --
>> *Guillaume Larcheveque*
>>
>>
>
> --
> *Guillaume Larcheveque*
>
>

Reply via email to