[fpc-pascal] Re: Ideas for namespace implementation

Sven Barth pascaldragon at googlemail.com
Mon Jul 26 16:10:04 CEST 2010


Hi!

On 26.07.2010 15:44, Graeme Geldenhuys wrote:
>> uses rc.foo, my.foo, my; // there is a unit my
>> ...
>> begin
>>     foo.a; // error, which foo?
>>     my.foo.a; // is that unit my, record foo.a OR unit my.foo ?
>
> Good point, I haven't thought that far. I only worked though of the uses
> clause.  Maybe when referencing a namespace we need a different syntax?
> Something that distinguishes between a<unit name>.<var or record>
> reference and a<namespace>.<unit name>  reference.
>
> I'm not sure what will fit nicely in the Object Pascal language. Generics
> already uses the<  and>   characters. The _ is not allowed as the starting
> character of a unit name, so maybe that could be used? Or maybe the #
> character?

Are you sure that "_" is not allowed at the beginning of a unit name?

=== source start ===
unit _test;

interface

implementation

end.
=== source end ===

Compiles without problems.

>
> eg:
>    uses
>      rc.foo, my.foo, my;
>    ...
>    begin
>      foo.a;  // is the<unitname>.<var or record>  syntax
>      _my.foo.a; // is<namespace>.<unit name>.<var or record>  syntax.
>
> ...not sure if _ should be used in the uses clause as well for consistency.
> Currently a '.' (dotted) unit name is not allowed in the uses clauses, so
> FPC could know that a 'rc.foo' means<namespace>.<unit>. But consistent
> syntax is probably better, so the uses clause will change to.
>
>    uses
>      _rc.foo, _my.foo, my;
>
> Second suggestion is changing the _ character to a # character, but then
> again, that conflicts with a hex char notation, so is probably not a good idea.
>
>

What about using ":" as a starting character for namespaces? It should 
be less problematic than "#" (even when used in type/variable/parameter 
declarations).
Other possibilities are "!", "?", "~", "%", "|", "\" and """ as they 
aren't used yet as far as I'm aware of... (please correct me here if 
necessary ^^)

Regards,
Sven



More information about the fpc-pascal mailing list