Related articles |
---|
Writing a recursive descent parser in C bilbo@volcanomail.com (2001-11-29) |
Re: Writing a recursive descent parser in C spinoza1111@yahoo.com (2001-12-03) |
Re: Writing a recursive descent parser in C joachim_d@gmx.de (Joachim Durchholz) (2001-12-07) |
Re: Writing a recursive descent parser in C lingolanguage@hotmail.com (Bill Rayer) (2001-12-07) |
Re: Writing a recursive descent parser in C dr_feriozi@prodigy.net (SLK Parsing) (2001-12-07) |
Re: Writing a recursive descent parser in C alexc@world.std.com (2001-12-11) |
Re: Writing a recursive descent parser in C spinoza1111@yahoo.com (2001-12-11) |
From: | "Joachim Durchholz" <joachim_d@gmx.de> |
Newsgroups: | comp.compilers |
Date: | 7 Dec 2001 23:35:28 -0500 |
Organization: | Compilers Central |
References: | 01-11-146 01-12-008 |
Keywords: | parse, comment |
Posted-Date: | 07 Dec 2001 23:35:28 EST |
Edward G. Nilges <spinoza1111@yahoo.com> wrote:
>
> [Good explanation of handcoded recursive descent parsing snipped]
>
> Effective implementations of transactioning support it with an
> unlimited stack inside the data base engine, which makes it an obvious
> choice in a recursive descent parser, which is using the runtime stack
> (of C or other runtime) to track its position in the grammar.
>
> If you do not have a data base, then you need to think about what the
> "output" routines of your compiler do. Your symbol table should be
> able to checkpoint and rollback, as should your machine code
> generator.
"Transactions with a stack" are named "nested transactions" in the
glossies.
Note that using a database to make the data structures undoable can
become a bit heavyweigth.
Also, mapping database data structures to in-memory data and back can be
a PITA (though it's less problematic for C than for languages that make
heavy use of polymorphism).
> In my usual scenario I am generating a stream of code to a reverse
> Polish machine, and at any time, checkpointing is merely noticing
> the size of the generating code, and rollback is re-allocating the
> Polish array back to the saved size.
Much cheaper than writing to a database and rolling back :)
> But as my technically adept and aware boss at Bell-Northern Research
> pointed out to me some time ago, if you have a modern editor, the
> economics of code generation change. You can use cutting and
> pasting more effectively than running some mainframe batch-oriented
> tool which yacc unfortunately is these days.
Oh no.
And if you have a bug, you cut-and-paste it a dozen times, leaving it to
be fixed another dozen times, if you find all the instances again?
C&P is OK for one-shot projects. It's not OK if the code has to be
maintained, no matter what the editor economics is.
Besides, it was *never* difficult to cut and paste. Not even in
mainframe days. Not even in the days of punched cards. So nothing has
changed, even if that boss said so.
Regards,
Joachim
[I agree, copying buggy code is hardly a new technique. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.