Am 29.12.2013 09:10 schrieb "Mark Morgan Lloyd" < markmll.fpc-pas...@telemetry.co.uk>: > > leledumbo wrote: >>> >>> I can fix that either by putting a semicolon before the else- which I >> >> believe is strictly incorrect >> >> Nope, that's correct. Take a look at the syntax diagram for case statement >> here: >> http://www.freepascal.org/docs-html/ref/refsu50.html >> >> As you can see, each "case" is terminated by ";". From the parser point of >> view, your code is exactly parsed as: > > > No, that shows a semicolon separating successive cases, not terminating each one. What's more statement can be a compound statement and that's similarly defined as using ; as a separator. > > Bit of an old chestnut, and my recollection is that an extra semicolon would crash some versions of Turbo Pascal. I'm not sure where my copy of J&W is, so I can't go back to the BNF... but it wouldn't help since else was added to the case statement by Turbo Pascal which explicitly has > > case expression of case-element { ; case-element } else > > where a case-element ends with a statement which can be a compound-statement which again defines ; as a separator. > > (Oh Lord this is all we need: a syntax war to round off the year.)
In case you don't need Delphi compatibility you can use "otherwise" instead of "else" inside a case-statement. This keyword comes from the ISO dialects and is enabled in all modes. Regards, Sven
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal