Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Dwight Schauer via fpc-pascal
On Wed, 2020-08-19 at 02:03 +0200, Michael Van Canneyt wrote:
> 
> On Tue, 18 Aug 2020, Dwight Schauer via fpc-pascal wrote:
> As long as the code only gets alterned into something logically
> > equivalaent, and as long as I can retreive the contents of comments
> > formatted as they were originally, I'm not concerned. (Other than
> > enforcing so many so many spaces after something like // and before
> > it,
> > lining up // on adjacent lines in a configurable manner, etc.)
> 
> You cannot easily do this with the current fcl-passrc. In fact, I
> would
> not recommend it.
> 
> The comments are not kept and do not appear in the AST built by the
> parser.
> There is a way to keep the comments, but all info as to where they
> should be
> inserted is lost. There are ways to solve this, but you will never be
> able
> to insert all comments again; only some constructs can be recognized
> and
> reproduced.
> 
> A second problem is that if you use IFDEFS, you will only see the
> part of
> your code that corresponds to the conditional branches taken in the
> code.
> 
> If you are concerned with reformatting only, then ptop is the better
> way to go.
> It just cares about tokens, and will process all branches of
> conditional
> code.

Thank you! This is why I asked on on this email list.
ptop it will need to be then...

I'm not sure if I can get function/procedure modifiers to work without
source code changes (to ptop), but I'll find out...
It seems like most everything else works with config tweaks, but I'll
need to verify that.

Once again, thanks.

Sincerely,
Dwight Schauer


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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Michael Van Canneyt via fpc-pascal



On Tue, 18 Aug 2020, Dwight Schauer via fpc-pascal wrote:


On Tue, 2020-08-18 at 23:17 +0200, Marco van de Voort via fpc-pascal
wrote:

Op 2020-08-18 om 23:01 schreef Sven Barth via fpc-pascal:
> Might be the even better solution as fcl-passrc will be better 
> maintained due to it being used for both the documentation utility 
> fpdoc as well as pas2js.
> 
Parsers for compilers or source transformation usually discard 
whitespace asap, while editor and formatting parsers don't. Usually
they 
are different beasts.


The only signifiicant whitespace I'm concerned about is that found in
string literals and in comments. Other whitespace or manual formatting
does not really apply to any strict standard style conformance. I'm not
looking for something that honors personal tweaking here and there.

As far as whitespace in literal strings, I'm sure those don't get
mangled for pas2js (other than maybe the escaped characters changing,
but the transformed string is still going to be an equivalent one).

Now I've seen formatters for other languages, Go for instance, that
sort imports and removes ones that are not referenced.

I'm not looking to set up something that invasive. I just want
something that I have a few sets of configs that I'm able to tweak
make the code adhere to different standards or formatting style. And
have one for the style I prefer, but if I need something to be in
someone else's style, no problem. (Which I can currently do with clang-
tidy).

clang-tidy in my experience for C/C++ seems to throw away all your
whitespace, and reformat according the standard you have chose (which
you can tweak). With some exception though as far "all whitespace".

As long as the code only gets alterned into something logically
equivalaent, and as long as I can retreive the contents of comments
formatted as they were originally, I'm not concerned. (Other than
enforcing so many so many spaces after something like // and before it,
lining up // on adjacent lines in a configurable manner, etc.)


You cannot easily do this with the current fcl-passrc. In fact, I would
not recommend it.

The comments are not kept and do not appear in the AST built by the parser.
There is a way to keep the comments, but all info as to where they should be
inserted is lost. There are ways to solve this, but you will never be able
to insert all comments again; only some constructs can be recognized and
reproduced.

A second problem is that if you use IFDEFS, you will only see the part of
your code that corresponds to the conditional branches taken in the code.

If you are concerned with reformatting only, then ptop is the better way to go.
It just cares about tokens, and will process all branches of conditional
code.

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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Dwight Schauer via fpc-pascal
On Tue, 2020-08-18 at 23:17 +0200, Marco van de Voort via fpc-pascal
wrote:
> Op 2020-08-18 om 23:01 schreef Sven Barth via fpc-pascal:
> > Might be the even better solution as fcl-passrc will be better 
> > maintained due to it being used for both the documentation utility 
> > fpdoc as well as pas2js.
> > 
> Parsers for compilers or source transformation usually discard 
> whitespace asap, while editor and formatting parsers don't. Usually
> they 
> are different beasts.

The only signifiicant whitespace I'm concerned about is that found in
string literals and in comments. Other whitespace or manual formatting
does not really apply to any strict standard style conformance. I'm not
looking for something that honors personal tweaking here and there.

As far as whitespace in literal strings, I'm sure those don't get
mangled for pas2js (other than maybe the escaped characters changing,
but the transformed string is still going to be an equivalent one).

Now I've seen formatters for other languages, Go for instance, that
sort imports and removes ones that are not referenced.

I'm not looking to set up something that invasive. I just want
something that I have a few sets of configs that I'm able to tweak
make the code adhere to different standards or formatting style. And
have one for the style I prefer, but if I need something to be in
someone else's style, no problem. (Which I can currently do with clang-
tidy).

clang-tidy in my experience for C/C++ seems to throw away all your
whitespace, and reformat according the standard you have chose (which
you can tweak). With some exception though as far "all whitespace".

As long as the code only gets alterned into something logically
equivalaent, and as long as I can retreive the contents of comments
formatted as they were originally, I'm not concerned. (Other than
enforcing so many so many spaces after something like // and before it,
lining up // on adjacent lines in a configurable manner, etc.)

Sincerely,
Dwight


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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Marco van de Voort via fpc-pascal


Op 2020-08-18 om 23:01 schreef Sven Barth via fpc-pascal:



I see what I can do with ptop config and if need be see what it will
take to improve ptop. Or investigate starting over with pparser,
pastree, paswrite, as I'm already looking at those for some other
things.
https://wiki.lazarus.freepascal.org/fcl-passrc


Might be the even better solution as fcl-passrc will be better 
maintained due to it being used for both the documentation utility 
fpdoc as well as pas2js.


Parsers for compilers or source transformation usually discard 
whitespace asap, while editor and formatting parsers don't. Usually they 
are different beasts.

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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Sven Barth via fpc-pascal
Dwight Schauer via fpc-pascal  schrieb am
Di., 18. Aug. 2020, 20:38:

> On Tue, 2020-08-18 at 14:11 +0200, Sven Barth wrote:
> > Not that I know. Most formatters will barf on some of the syntax
> > extensions that FPC provides (see the Jedi Code Formatter that barfs
> > on generic syntax). Even ptop might fail on newer language
> > extensions...
> >
> > So improving ptop might indeed be the way to go if you want that.
>
> Thanks.
>
> I see what I can do with ptop config and if need be see what it will
> take to improve ptop. Or investigate starting over with pparser,
> pastree, paswrite, as I'm already looking at those for some other
> things.
> https://wiki.lazarus.freepascal.org/fcl-passrc


Might be the even better solution as fcl-passrc will be better maintained
due to it being used for both the documentation utility fpdoc as well as
pas2js.

Regards,
Sven

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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Dwight Schauer via fpc-pascal
On Tue, 2020-08-18 at 14:11 +0200, Sven Barth wrote:
> Not that I know. Most formatters will barf on some of the syntax
> extensions that FPC provides (see the Jedi Code Formatter that barfs
> on generic syntax). Even ptop might fail on newer language
> extensions... 
> 
> So improving ptop might indeed be the way to go if you want that. 

Thanks.

I see what I can do with ptop config and if need be see what it will
take to improve ptop. Or investigate starting over with pparser,
pastree, paswrite, as I'm already looking at those for some other
things.
https://wiki.lazarus.freepascal.org/fcl-passrc

Sincerely,
Dwight Schauer



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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Sven Barth via fpc-pascal
Dwight Schauer via fpc-pascal  schrieb am
Di., 18. Aug. 2020, 13:55:

> Is there a more robust code reformatter (command line / batch oriented)
>
that can used with free pascal? (before I start digging in to making
> ptop work to remove one's focus from style and put it solely on
> content?)
>

Not that I know. Most formatters will barf on some of the syntax extensions
that FPC provides (see the Jedi Code Formatter that barfs on generic
syntax). Even ptop might fail on newer language extensions...

So improving ptop might indeed be the way to go if you want that.

Regards,
Sven

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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Dwight Schauer via fpc-pascal
On Tue, 2020-08-18 at 11:08 +0200, Sven Barth via fpc-pascal wrote:
> ...
> There is no default configuration, because there is not one default
> standard. ...

Understood.

> Rule of thumb is that contributions should fit into the existing
> style. 

In general when it comes to programming it is better to let
programmers focus on content, not style (especially when there is
supposed to only be one style in a given source file).

One could argue that lack of standardization (and tools to enforce thos
standards) cause programmers to do menial tasks that computers can do
much better at

I guess I will need to make my own configs for ptop if I don't want to
be forced to manually focus on style...

It seems ptop does not understand function/procedure modifiers.
 https://www.freepascal.org/docs-html/ref/refsu3.html 

Maybe it does support/understand those, I'll just need to dig through
the configs, as theire is mention of "modifier" or "modifiers" in the
default config output. Of hand I don't see a "nocrbefore", but I see
functions have a type as the last item, but no modifiers...

The default config for ptop does not understand asm, but there is blank
entry for it, and I see that giving it the same rules as begin works
fine.

Is there a more robust code reformatter (command line / batch oriented)
that can used with free pascal? (before I start digging in to making
ptop work to remove one's focus from style and put it solely on
content?)


Sincerely,
Dwight Schauer


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


Re: [fpc-pascal] FPC coding standards

2020-08-18 Thread Sven Barth via fpc-pascal
Dwight Schauer via fpc-pascal  schrieb am
Di., 18. Aug. 2020, 08:45:

>
> The default config generated by ptop definitely does not conform to
> the standards...
>

There is no default configuration, because there is not one default
standard. While some things are a given (lowercase identifiers, no spaces
between identifiers and e.g. operators) the reminder simply depends on the
surrounding code which differs slightly from unit to unit (in the RTL
sometimes even inside the same unit).

Rule of thumb is that contributions should fit into the existing style.

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


[fpc-pascal] FPC coding standards

2020-08-18 Thread Dwight Schauer via fpc-pascal

Hello FPC Pascal users,

Is there a default ptop.cfg somewhere that follows the FPC coding standards?

https://wiki.freepascal.org/Coding_style

I'm not looking to submit any PR in the near future, I just want to
be able to automatically reformat my code to conform to what I consider
a reasonable standard, rather than having to enforce that manually.

Or config for any other invoked from the command line reformatting
tool. I don't use IDEs in my regular development work flow (so if
Lazarus has this feature, and it can't be invoked from the command
line, it won't help me).

The default config generated by ptop definitely does not conform to
the standards...

I guess I could write my own ptop.cfg for this... But it seems like
with "Some people might think that the coding style used in the FPC
compiler and base RTL (run-time library) source code is a little bit
strange. But it has been in use for a lot of years and is not subject
to discussion. So take the following as a standard to be used." that
there should be tool configuration that can do that automatically.

With C/C++ even if I'm just working on my own stuff (not in a team), I
can use tools like indent or clang-tidy. I know, FPC is not C/C++, but
is still nice to be able to have some tool enforce a consistent style
regardless what language I'm using.

Sincerely,

Dwight Schauer

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