[fpc-pascal] deprecated syntax is inconsistent.

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Apr 29 12:39:41 CEST 2010


On 29 Apr 2010, at 12:00, Graeme Geldenhuys wrote:

> Michael Van Canneyt het geskryf:
>> Consider the following - what  you propose - statements:
>>
>> Var
>>   A : Integer;
>>   deprecated : Boolean;
>>
>> The compiler cannot decide whether the 'deprecated' is a modifier  
>> or the
>
> Yes it can, because in your example 'deprecated' is followed by a  
> colon and
> a type.
>
> Var
>    A : Integer; deprecated;
>
> This is *not* ambiguous at all,

It is ambiguous to the compiler, as is explained in one of the links I  
posted previously: http://wiki.freepascal.org/User_Changes_2.4.0#Order_of_field_and_method.2Fproperty_declarations

"The above code was ambiguous to the compiler, because when it  
finished parsing the property, it could not decide based on seeing the  
default token whether this meant that the property was a default  
property, or whether a field coming after the property was called  
"default". It did find this out after it had parsed the default token  
(because the next token was a ":" rather than a ";"), but by then it  
was too late."

The compiler uses only a single lookahead token, while disambiguating  
your example would require two.


Jonas




More information about the fpc-pascal mailing list