OK, it's a bug in the grammar. >> with ( t as TForm ).Canvas do ; Quick fix: In line >variable_list > : variable_reference {} /* acessing func.recordfield not allowed here;as well as UNITNAMEID */ > | variable_list {} COMMA {} variable_reference {} > ; replace all 'variable_reference' by 'expr' so that it looks like >variable_list > : expr {} /* acessing func.recordfield not allowed here;as well as UNITNAMEID */ > | variable_list {} COMMA {} expr {} > ;