Re: type-inquiry

Peter <[email protected]> Sat, 21 Jan 2017 23:17:37 +0000
Newsgroups gmane.comp.compilers.gpc
Message-ID <[email protected]>
On 21/01/17 20:19, Paul Isaacs wrote:
> Hello,
> 
> How is the production type-inquiry used?
> 
> var
> p : integer;
> 
> type
> q = type of p;
> 
> How would it be possible that inquiring as to the type of p is useful?
> Under what circumstances would the type of p not be already known?
> 
> Even if the type of p were not known, how would q be usable if its type
> were not fixed?
> 
> The only reference I can find is in the GNU-Pascal Manual.
> 
> function CompilerAssert( condition : boolean, result : Anytype ) : type
> of Anytype;
> 
> What would be returned? Unless Anytype is restricted to types that
> CompilerAssert is aware of.
> 
> Regards,
> 
> Paul Isaacs
> 
> 
> _______________________________________________
> Gpc mailing list
> [email protected]
> https://www.g-n-u.de/mailman/listinfo/gpc


Hi Paul,

Perhaps it is some sort of equivalent to overloaded functions?
You might find the ISO spec handy, though it is not an easy read!
www.pascal-central.com/docs/iso10206.pdf


6.4.9 Type-inquiry

A type-inquiry shall denote a type, bindability, and initial state.

        type-inquiry = 'type' 'of' type-inquiry-ob|ect .
        type-inquiry-ob|ect = variable-name | parameter-identifier .

The type denoted by a type-inquiry shall be the type possessed by the
variable-identifier or parameter- identifier contained by the
type-inquiry. The bindability denoted by a type-inquiry shall be the
bindability possessed by the variable-identifier or parameter-identifier
contained by the type-inquiry.

The initial state denoted by a type-inquiry shall be the initial state
possessed by the variable-identifier or parameter-identifier contained
by the type-inquiry. A parameter-identifier in a type-inquiry-object
shall have its defining-point in a value-parameter-specification or
variable-parameter-specification in the formal-parameter-list
closest-containing the type-inquiry-object.

Example:
        procedure p(var a : VVector);
          var b : type of a;
          {parameter a and variable b will have the same type}


If you can figure out what that means, please let me know!


Regards,
Peter







_______________________________________________
Gpc mailing list
[email protected]
https://www.g-n-u.de/mailman/listinfo/gpc