The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: rudi.j.blom@gmail.com (Rudi Blom)
Subject: [TUHS] Unix stories, Stephen Bourne and IF-FI in C code
Date: Tue, 10 Jan 2017 11:40:47 +0700	[thread overview]
Message-ID: <CAMYpm87G+5NFfB0yB_d4PDeQ1EdBgRWG8ea1v=r6fc_19eb2yQ@mail.gmail.com> (raw)

>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


             reply	other threads:[~2017-01-10  4:40 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-10  4:40 Rudi Blom [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-01-10 13:50 Noel Chiappa
     [not found] <mailman.1.1484013601.5032.tuhs@minnie.tuhs.org>
2017-01-10  3:11 ` Paul McJones
2017-01-09  2:30 Norman Wilson
2017-01-09  3:31 ` Steve Johnson
2017-01-09 15:30   ` Marc Rochkind
2017-01-09 15:45     ` arnold
2017-01-09 15:59       ` ron minnich
2017-01-09 16:03       ` Clem Cole
2017-01-10 18:44         ` Lawrence Stewart
2017-01-09 18:48     ` Derek Fawcus
2017-01-09 20:35     ` Steve Johnson
2017-01-10 12:24       ` Tony Finch
2017-01-11  6:00   ` Brantley Coile
2017-01-09  1:06 Doug McIlroy
2017-01-09  2:18 ` Random832
2017-01-08 20:37 Walter F.J. Mueller
2017-01-08 21:12 ` Larry McVoy
2017-01-08 21:26   ` Dave Horsfall
2017-01-08 21:54 ` Kay Parker   
2017-01-08 23:14 ` Adam Sampson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMYpm87G+5NFfB0yB_d4PDeQ1EdBgRWG8ea1v=r6fc_19eb2yQ@mail.gmail.com' \
    --to=rudi.j.blom@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).