Date: Mon, 09 Jan 2017 08:45:47 -0700
From: arnold(a)skeeve.com
To: rochkind(a)basepath.com
Cc: tuhs(a)tuhs.org
Subject: Re: [TUHS] Unix stories, Stephen Bourne and IF-FI in C code
Message-ID: <201701091545.v09FjlXE027448(a)freefriends.org>
Content-Type: text/plain; charset=us-ascii
I remember the Bournegol well; I did some hacking on the BSD shell.
In general, it wasn't too unusual for people from Pascal backgrounds to
do similar things, e.g.
#define repeat do {
#define until(cond) } while (! (cond))
(I remember for me personally that do...while sure looked weird for.
my first few years of C programming. :-)
(Also, I would not recommend doing that; I'm just noting that
people often did do stuff like that.)
When the Philips computer division worked on MPX (multi-processor
UNIX) in late 80tish they had an include file 'syntax.h' which did a
lot of that Pascal-like mapping.
Here part of it:
/* For a full explanation see the file syntax.help */
#define IF if(
#define THEN ){
#define ELSIF }else if(
#define ELSE }else{
#define ENDIF }
#define NOT !
#define AND &&
#define OR ||
#define CASE switch(
#define OF ){
#define ENDCASE break;}
#define WHEN break;case
#define CWHEN case
#define IMPL :
#define COR :case
#define BREAK break
#define WHENOTHERS break;default
#define CWHENOTHERS default
#define SELECT do{{
#define SWHEN }if(
#define SIMPL ){
#define ENDSELECT }}while(0)
#define SCOPE {
#define ENDSCOPE }
#define BLOCK {
#define ENDBLOCK }
#define FOREVER for(;;
#define FOR for(
#define SKIP
#define COND ;
#define STEP ;
#define LOOP ){
#define ENDLOOP }
#define NULLOOP ){}
#define WHILE while(
#define DO do{
#define UNTIL }while(!(
#define ENDDO ))
#define EXITWHEN(e) if(e)break
#define CONTINUE continue
#define RETURN return
#define GOTO goto