From mboxrd@z Thu Jan 1 00:00:00 1970 From: rudi.j.blom@gmail.com (Rudi Blom) Date: Tue, 10 Jan 2017 11:40:47 +0700 Subject: [TUHS] Unix stories, Stephen Bourne and IF-FI in C code Message-ID: >Date: Mon, 09 Jan 2017 08:45:47 -0700 >From: arnold at skeeve.com >To: rochkind at basepath.com >Cc: tuhs at tuhs.org >Subject: Re: [TUHS] Unix stories, Stephen Bourne and IF-FI in C code >Message-ID: <201701091545.v09FjlXE027448 at 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