[fpc-pascal] Known issue with 1.9.4 [2004/05/30] for i386 on Linux?

David Emerson dle3ab at angelbase.com
Wed Sep 29 23:17:53 CEST 2004

I believe that your code is being interpreted as:

(NOT fmt[i]) in ['0'..'9']

instead of the intended NOT (fmt[i] in ['0'..'9'])

Pascal's rules for parsing logical expressions differ from the standard rules of the propositional calculus (i.e. modern symbolic logic). Thus, this behavior is "by design" -- you'll have to use those extra parens -- and don't bother filing a bug.

Incidentally, I happen to agree with your assesment that this is a bug, in the philosophical sense -- but it was designed that way by Nicklaus Wirth, so we're stuck with it. It's one of a few flaws in what's really a very beautiful programming language.


At 10:46 PM 9/28/04, you wrote:
>I don't know if this is really a bug or whether it's known... I have
>this line of code:
>  while ( (i<=Length(fmt)) and (NOT fmt[i] IN ['0'..'9']) ) do
>It compiles fine but I get a RTE:
>An unhandled exception occurred at 0x0807B180 :
>EVariantError : Invalid variant operation
>  $0807B180
>  $BFFFF980
>Funny thing is, I enabled line numbers with '-gl'... And the error
>message makes no sense to me.. After staring at that line of code for
>a while, I put parens around the "fmt[i] IN ['0'..'9']" and all was
>  while ( (i<=Length(fmt)) and (NOT (fmt[i] IN ['0'..'9'])) ) do
>So, that seems to be a bug to me... Shall I report it or is it known
>(or am I wrong that it's a bug)?

More information about the fpc-pascal mailing list