I enjoy writing recursive descent parsers, and I enjoy the grammars that result from such parsers when cleanly done.

I do agree though that if you grammar is being invented as you go, yacc can be a boon. But in a sense, that's also it's biggest failing: it makes it too easy to write bad grammars.

-rob


On Wed, May 26, 2021 at 4:22 PM Bakul Shah <bakul@iitbombay.org> wrote:
Many existing programming languages do have a simple enough
syntax to make it easy to write a recursive descent parser for them
but not alll.

Handwritten recursive descent parsers are often LL(1) with may be
a separate operator-precedence parsing for expressions.

If you are defining a new language syntax you can make sure parsing
is easy but not all languages are LL(1) (which is a subset of LALR(1),
which is a subset of LR(1), which is a subset of GLR). Handwritten
parsers for these more general grammars are bound to get more
complicated.

Even *we* understand parsing, writing a parser for some existing
languages  which grew "organically" can become tedious, or
complicated or adhoc. Often such languages have no well specified
grammar (the code is the specification!). A yacc grammar would help.

Often one writes a yacc grammar while a new language & its syntax
is evolving. Changing a yacc file is more localized & easier than fixing
up a handwritten parser. Even Go has such a grammar initially.

-- Bakul

> On May 25, 2021, at 8:03 PM, Larry McVoy <lm@mcvoy.com> wrote:
>
> You do, I don't.  I'm not alone in my lack of understanding.
>
> I think that all the things that yacc solved, Steve gets some kudos.
> I've used it a bunch and I did not need to be as smart as you or
> Steve to get the job done.
>
> You getting past that is cool but it doesn't make his work less.
>
> On Wed, May 26, 2021 at 10:37:45AM +1000, Rob Pike wrote:
>> And today, we understand parsing so well we don't need yacc.
>>
>> -rob
>>
>>
>> On Wed, May 26, 2021 at 10:20 AM Nelson H. F. Beebe <beebe@math.utah.edu>
>> wrote:
>>
>>> The last article of the latest issue of the Communications of the ACM
>>> that appeared electronically earlier today is a brief interview with
>>> this year's ACM Turing Award winners, Al Aho and Jeff Ullman.
>>>
>>> The article is
>>>
>>>        Last byte: Shaping the foundations of programming languages
>>>        https://doi.org/10.1145/3460442
>>>        Comm. ACM 64(6), 120, 119, June 2021.
>>>
>>> and it includes a picture of the two winners sitting on Dennis
>>> Ritchie's couch.
>>>
>>> I liked this snippet from Jeff Ullman, praising fellow list member
>>> Steve Johnson's landmark program, yacc:
>>>
>>>>> ...
>>>>> At the time of the first Fortran compiler, it took several
>>>>> person-years to write a parser.  By the time yacc came around,
>>>>> you could do it in an afternoon.
>>>>> ...
>>>
>>>
>>> -------------------------------------------------------------------------------
>>> - Nelson H. F. Beebe                    Tel: +1 801 581 5254
>>>    -
>>> - University of Utah                    FAX: +1 801 581 4148
>>>    -
>>> - Department of Mathematics, 110 LCB    Internet e-mail:
>>> beebe@math.utah.edu  -
>>> - 155 S 1400 E RM 233                       beebe@acm.org
>>> beebe@computer.org -
>>> - Salt Lake City, UT 84112-0090, USA    URL:
>>> http://www.math.utah.edu/~beebe/ -
>>>
>>> -------------------------------------------------------------------------------
>>>
>
> --
> ---
> Larry McVoy                        lm at mcvoy.com             http://www.mcvoy.com/lm