labelled blocks

ELIN Forsch.z. rcvie at tuvie
Mon Mar 7 19:31:41 AEST 1988


In article <7718 at alice.UUCP> ark at alice.UUCP writes:
>The best scheme I've seen for labelled blocks comes from SETL.
>In SETL, statements like `IF' and `WHILE' begin blocks which
>must be ended by `END' statements.  Thus one can write:
>
>	IF x > y
>	THEN	max := x;
>	ELSE	max := y;
>	END;
>
>(I think I have the semicolons right; I'm sure about the one after END)
>
>When these structures are nested deeply, one may be confused about
>just what is being ended.  To reduce confusion, the programmer may
>insert any number of tokens from the opening statement between the
>END and the semicolon:
>
>	IF x > y
>	THEN	max := x;
>	ELSE	max := y;
>	END IF x > y;
>
>These tokens are optional, but if they appear, they must match
>the corresponding tokens from the opening statement.

CHILL (CCITT High Level Language, a realtime application language)has a similar
but less confusing syntax:

	IF x > y
		max := x;
	ELSE
		max := y;
	FI;

There is also somethimg similar to the repetition of the opening statement
at the end:

Label: BEGIN
	blah blah
       END Label;

This syntax helps the programmer to find better structures, but unfortunately
the compilers cannot use the redundancy for a better recovery. The only
advantage are sometimes improved error messages. Besides, studying this
language will show anybody who is interested, how a language may be designed
in a most horrible way from the compiler writer's point of view (many many
keywords, indeterminisms, semantics nobody understands totally, etc.).

			Dietmar Weickert,
				ALCATEL-ELIN Research Center, Vienna, Austria.



More information about the Comp.lang.c mailing list