On 2021-09-03 10:38 +02, Claudio Jeker <[email protected]> wrote:
> On Fri, Sep 03, 2021 at 10:12:57AM +0200, Sebastian Benoit wrote:
>> Tobias Heider([email protected]) on 2021.09.02 15:39:46 +0200:
>> > +          ;
>> > +
>> > +proto_list        : protoval                      { $$ = $1; }
>> > +          | proto_list comma protoval     {
>> > +                  if ($3 == NULL)
>> > +                          $$ = $1;
>> > +                  else if ($1 == NULL)
>> > +                          $$ = $3;
>> > +                  else {
>> > +                          $1->tail->next = $3;
>> > +                          $1->tail = $3->tail;
>> > +                          $$ = $1;
>> > +                  }
>> > +          }
>> 
>> why dont you make it 
>> 
>>              | protoval comma proto_list     {
>> 
>> then you dont need the conditional.
>
> AFAIK yacc rules should be left expand. I don't fully remember the reason
> but your example is not the common way.

because the parser itself is left recursive. If you make your grammar
right recursive the parser needs to build a stack. Which is slower and
possibly can overflow.

-- 
I'm not entirely sure you are real.

Reply via email to