Structured Fortran - was Re: Self modifying code, lambda calculus
paulkoning at comcast.net
Wed Sep 23 19:54:53 CDT 2015
> On Sep 23, 2015, at 7:24 PM, Chuck Guzis <cclist at sydex.com> wrote:
> The C macro facility barely qualifies as such. PL/I had a wonderful preprocessor;
That depends on the compiler. I remember the PL/C compiler (from Cornell, running on IBM 370s). In graduate school, we were forced to use it because the instructor was also the main author of that compiler. It was used in a compiler construction class, with heavy use of macros.
That seemed fine except for one fatal flaw in the macro engine design. PL/I has the notion of "source margins" -- source code is only processed between colums 2 and 72 (by default; those limits are settable). The fatal flaw was that the PL/C macro processor sat before the source margin machinery, so it had to obey the source margins in doing macro expansion.
Unfortunately, it couldn't do that. A typical result of attempting to use a complex macro was a compiler crash. To cure it, you'd add or remove spaces from the macro call and/or the macro definition -- at which point you'd get a crash or compiler infinite loop at some other macro call.
After a few weeks of that, we convinced the instructor to drop this bogus piece of software and switch to a real compiler -- Pascal on the PDP-10.
More information about the cctalk