the 'broken' statement

Guy Harris guy at rlgvax.UUCP
Tue Oct 11 06:58:03 AEST 1983


I suspect the construct

	FIRST i IN something-that-generates-a-sequence-of-values
	SUCHTHAT condition
	DO
		found it
	ELSE
		not found
	END

was supposed to be equivalent to

		for (first value; ;next value) {
			if (condition)
				goto found;
		}

		not found;
		goto join;

	found:
		found it;

	join:

not to:

		for(first value; ;next value) {
			if (condition) {
				found it;
				break;		/*stop loop when first value
						 *is found such that 'condition'
						 *is satisfied
						 */
			} else
				not found;
		}

I.e., the "found it" and "not found" clauses are executed when the loop
is finished; the first is executed if the loop terminated because the object
was found, and the second is executed if the loop terminated because it ran
out of values.  It does require a bunch of "goto"s and is a bit of a pain
to code (no claim is made here whether adding it to C would be a bigger or
smaller pain).

	Guy Harris
	{seismo,mcnc,we13,brl-bmd,allegra}!rlgvax!guy



More information about the Comp.lang.c mailing list