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.
paul