> On Sep 23, 2015, at 7:24 PM, Chuck Guzis <ccl...@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


Reply via email to