Deutsch   English   Français   Italiano  
<20241203181358.493@kylheku.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Kaz Kylheku <643-408-1753@kylheku.com>
Newsgroups: comp.lang.c
Subject: Re: question about linker
Date: Wed, 4 Dec 2024 02:22:46 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 41
Message-ID: <20241203181358.493@kylheku.com>
References: <vi54e9$3ie0o$1@dont-email.me> <vicque$15ium$2@dont-email.me>
 <vid110$16hte$1@dont-email.me> <87mshhsrr0.fsf@nosuchdomain.example.com>
 <vidd2a$18k9j$1@dont-email.me> <8734j9sj0f.fsf@nosuchdomain.example.com>
 <vidnuj$1aned$1@dont-email.me> <87ttbpqzm1.fsf@nosuchdomain.example.com>
 <vie0j5$1g968$1@dont-email.me> <vieun5$1mcnr$3@dont-email.me>
 <vihamj$2cflq$1@dont-email.me> <vihili$2f79m$1@dont-email.me>
 <vihu63$2ipg0$1@dont-email.me> <vii3kq$2kmc8$1@dont-email.me>
 <vikqvf$3fhce$1@dont-email.me> <jNm3P.7909$XuU6.3431@fx40.iad>
 <vinkbv$8r4i$1@dont-email.me> <vinm3p$9auh$1@dont-email.me>
 <vinqt2$bede$1@dont-email.me>
Injection-Date: Wed, 04 Dec 2024 03:22:46 +0100 (CET)
Injection-Info: dont-email.me; posting-host="b7a9259e5b612f3710977eb63dcab0eb";
	logging-data="523848"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19WtSfdqvBzYFIfTzFWftJGs86s668SlLQ="
User-Agent: slrn/pre1.0.4-9 (Linux)
Cancel-Lock: sha1:hkljHjK884u8Yrx4E5pIjfnM2c4=
Bytes: 3183

On 2024-12-03, BGB <cr88192@gmail.com> wrote:
> On 12/3/2024 1:27 PM, Janis Papanagnou wrote:
>> On 03.12.2024 19:57, BGB wrote:
>>> On 12/2/2024 12:13 PM, Scott Lurndal wrote:
>>>>
>>>> Indeed.  One wonders at Bart's familiarity with formal grammars.
>>>
>>> In my case, personally I haven't encountered much that doesn't work well
>>> enough with a recursive-descent parser.
>> 
>> Is that meant as a contradiction? - If so, how?
>> 
>
> Formal grammars and parser generators aren't usually necessary IME, 
> since recursive descent can deal with most everything (and is generally 
> more flexible than what one can deal with in a formal grammar).

A hand written recursive descent parser will have the best tooling.

If the language it is written in has a good debugger, then the
parser automatically has a good debugger.

This is not true of table driven parsers. They implement an ad-hoc
virtual machine driven by tables, and that virtual machine typically has
next to no debug support.

In a recursive descent parser, you can put a breakpoint on "parse_expr"
and see in the call stack that was called from "parse_statement_body"
which was called from "parse_if_statement" and so on.

That can be an important advantage. Parser generators are still used,
nonetheless. The generated code has good performance, and the
declarative nature has some points in its favor; you just get your shit
debugged in other ways. Some of it can be mitigated by doing the minimal
work in the parser: e.g. just building an abstract syntax tree,
rather than the entire translation scheme.

-- 
TXR Programming Language: http://nongnu.org/txr
Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
Mastodon: @Kazinator@mstdn.ca