John Gordon Ollason
john at houseofdeer.co.uk
Fri Dec 11 18:45:57 CET 2009
My mistake was misunderstanding the defintion of a statement-sequence.
> ISO7185 says:
> : The label shall be permitted to occur in a goto-statement G (see
> : 220.127.116.11) if and only if any of the following three conditions is
> : satisfied.
> : a) S contains G.
> : b) S is a statement of a statement-sequence containing G.
> : c) S is a statement of the statement-sequence of the
> compound-statement of the
> : statementpart of a block containing G.
> Though this is hardly readable, the "statementpart of a block" means
> that the target of a non-local goto must be in the outermost scope
> of the procedure. (To understand that, you have to follow the
> grammar rules.)
> So, the old gpc was too permissive, the new one behaves acoording to
>> Incidentally FreePascal gives the following error for both programs:
>> Free Pascal Compiler version 2.2.2 [2008/10/26] for x86_64
>> Copyright (c) 1993-2008 by Florian Klaempfl
>> Target OS: Linux for x86-64
>> Compiling gototest.p
>> gototest.p(5,13) Error: Goto statements aren't allowed between different
> Well, Free Pascal doesn't allow non-local gotos at all (and doesn't
> claim to support ISO Pascal).
More information about the Gpc