Paul Isaacs wrote:
Hello;
program test;
{ productions:
assignment-statement : contains expression expression : contains
simple-expression simple-expression : eventually works down to primary primary : contains variable-access variable-access : contains function-identifier-variable function-identifier-variable = pointer-function '^' pointer-function : contains entire-function-access entire-function-access = function-designator function-designator = function-name [ actual-parameter-list ] function-name : contains identifier }
{ compiled with:
$PASCAL/local/bin/gpc --extended-pascal test.pas test.pas: In main program: test.pas:11: error: invalid type of argument of `^' }
function y : boolean; begin y := false; end;
var x : boolean; begin x := y^; { isn't " y" a function-identifier-variable ? } end.
Where is the error in thinking?
You look only at syntax. Syntax is OK. But you also need correct types: function 'y' have to return pointers. And the message say this...
In particular in 6.8.6.4 the second statement reads: : A pointer-function shall be a function-access possessing : a pointer-type.