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.
