Re: [fpc-pascal] IntToStr implementation

2024-01-18 Thread Adriaan van Os via fpc-pascal

Michael Van Canneyt via fpc-pascal wrote:



More accurately, I meant: you cannot write a function declaration to 
handle that syntax.


It is true that a regular (non-built-in) procedure/function with that syntax 
can not be declared.

Some more strange ducks

- Exit allowing Program as parameter (UCSD-Pasca)
- Scan allowing a partial-expression as second parameter (UCSD-Pascal) e.g. 
Scan( -26, =':', S)
- SizeOf allowing a type-identifier as parameter

etcetera.

Regards,

Adriaan van Os
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-18 Thread Michael Van Canneyt via fpc-pascal




On Thu, 18 Jan 2024, Adriaan van Os via fpc-pascal wrote:




Also something which cannot be handled by 'standard' syntax.
(unless you wish to count generics and implicit specialization as "standard 
syntax")


actual-parameter =  expression { ":" expression } .
actual-parameter-list = "(" actual-parameter { "," actual-parameter } ")" .


The compiler obviously can parse it.

More accurately, I meant: you cannot write a function declaration to handle 
that syntax.

procedure Str(O : Integer { what to write here for the :N:M ??? }; var S);


Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-18 Thread Adriaan van Os via fpc-pascal




Also something which cannot be handled by 'standard' syntax.
(unless you wish to count generics and implicit specialization as 
"standard syntax")


actual-parameter =  expression { ":" expression } .
actual-parameter-list = "(" actual-parameter { "," actual-parameter } ")" .

Regards,

Adriaan van Os

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-18 Thread Michael Van Canneyt via fpc-pascal



On Thu, 18 Jan 2024, Hairy Pixels via fpc-pascal wrote:





On Jan 18, 2024, at 1:51 PM, Sven Barth via fpc-pascal 
 wrote:

There is no source for Str() in that sense, because Str() is a compiler 
intrinsic implemented in the compiler's ninl.pas.



Well that explains everything now! What is this an intrinsic? I was curious how 
it was implemented and now I'm even more curious.


I asked myself the same question.

The reason is it needs to support the same syntax as Write(ln) for padding the 
output:

Str(I:N:M,S);

This is not a "standard" syntax and needs to be handled specially by the 
compiler.

Additionally, Str() can be used to convert an enum to a string value:

Type
  TMyEnum = (one,two,three);

var
  M : TMyEnum = one;
  S : String;

begin
  Str(M,S);
end.

Also something which cannot be handled by 'standard' syntax.
(unless you wish to count generics and implicit specialization as "standard 
syntax")

Michael.___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-18 Thread Hairy Pixels via fpc-pascal


> On Jan 18, 2024, at 1:51 PM, Sven Barth via fpc-pascal 
>  wrote:
> 
> There is no source for Str() in that sense, because Str() is a compiler 
> intrinsic implemented in the compiler's ninl.pas.
> 

Well that explains everything now! What is this an intrinsic? I was curious how 
it was implemented and now I'm even more curious.

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-17 Thread Sven Barth via fpc-pascal
Hairy Pixels via fpc-pascal  schrieb am
Do., 18. Jan. 2024, 00:44:

>
>
> > On Jan 17, 2024, at 10:15 PM, Marco van de Voort via fpc-pascal <
> fpc-pascal@lists.freepascal.org> wrote:
> >
> >
> > Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal:
> >> Can anyone show me where to find the IntToStr implementation in
> SysUtils? There's so many level of indirection and macros I have no idea
> where to look for it!
> >
> > Grep rtl/objpas/sysutils for it.
> >
> >
> > sysstr.inc for the implementation sysstrh.inc for the declaration
> >
>
> Which then goes to System.Str(), where is that? I found some other Str
> functions in a lstrings.pas file but I don't think that's it. All the
> macros break code tools for me and I can't find anything.
>

There is no source for Str() in that sense, because Str() is a compiler
intrinsic implemented in the compiler's ninl.pas.

Regards,
Sven

>
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-17 Thread Hairy Pixels via fpc-pascal


> On Jan 17, 2024, at 10:15 PM, Marco van de Voort via fpc-pascal 
>  wrote:
> 
> 
> Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal:
>> Can anyone show me where to find the IntToStr implementation in SysUtils? 
>> There's so many level of indirection and macros I have no idea where to look 
>> for it!
> 
> Grep rtl/objpas/sysutils for it.
> 
> 
> sysstr.inc for the implementation sysstrh.inc for the declaration
> 

Which then goes to System.Str(), where is that? I found some other Str 
functions in a lstrings.pas file but I don't think that's it. All the macros 
break code tools for me and I can't find anything.

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] IntToStr implementation

2024-01-17 Thread Marco van de Voort via fpc-pascal



Op 17-1-2024 om 15:57 schreef Hairy Pixels via fpc-pascal:

Can anyone show me where to find the IntToStr implementation in SysUtils? 
There's so many level of indirection and macros I have no idea where to look 
for it!


Grep rtl/objpas/sysutils for it.


sysstr.inc for the implementation sysstrh.inc for the declaration


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


[fpc-pascal] IntToStr implementation

2024-01-17 Thread Hairy Pixels via fpc-pascal
Can anyone show me where to find the IntToStr implementation in SysUtils? 
There's so many level of indirection and macros I have no idea where to look 
for it!

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal