[fpc-pascal] case statement
Michael Van Canneyt
michael at freepascal.org
Fri Dec 15 11:04:24 CET 2023
On Fri, 15 Dec 2023, Adriaan van Os via fpc-pascal wrote:
> Michael Van Canneyt via fpc-pascal wrote:
>>
>>
>> On Fri, 15 Dec 2023, Adriaan van Os via fpc-pascal wrote:
>>
>>> Note that the same ambiguity exists in the <exception-handler> syntax (and
>>> this is less well known)
>>>
>>> exceptionhandlers = [ exception-handler { ";" exception-handler } [
>>> "ELSE" statement-list ] | statement-list ] .
>>> exception-handler = "ON" [ identifier ":" ] class-type-identifier "DO"
>>> statement .
>>>
>>> as <exception-handler> ends with a <statement> and the optional <"ELSE"
>>> statement-list> part start with "ELSE". Sloppy language design, I assume
>>> by Borland.
>>
>> What exactly do you consider "sloppy" ?
>
> The ambiguity in the syntax whether ELSE belong to <statement> or to <"ELSE"
> statement-list>.
Why do you think this is ambiguous ? It always belongs to statement list.
If there is ambiguity, it is in the if then else construct.
This makes it difficult to read for humans.
>> The fact that the semicolon before the else is optional ?
>
> I don't see a semicolon in the formal syntax.
This works:
---
{$mode objfpc}
uses sysutils;
begin
try
except
on E: EAccessViolation do
begin
end;
on E: EInoutError do
begin
end; // can be removed or not.
else
begin
Writeln('OK');
end;
end;
end.
---
Michael.
More information about the fpc-pascal
mailing list