Is anyone working on a D source code formatting tool?
qznc via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jan 16 14:18:13 PST 2015
On Friday, 16 January 2015 at 15:55:53 UTC, Brian Schott wrote:
> On Friday, 16 January 2015 at 15:06:42 UTC, Ary Borenszweig
> wrote:
>> The way I did it in Descent (I copied the logic from JDT) is
>> to parse the code into an AST, and then walk the AST in sync
>> with a lexer.
>
> My dfmt tool does something similar. The parser runs over the
> code first and makes notes on things like the location of unary
> operators and which braces end function/aggregate declarations.
> Then the formatter iterates over the tokens (including
> comments) and is able to correctly print "a* b;" instead of "a
> * b;".
This is a short talk about clang-format's design and
implementation:
https://www.youtube.com/watch?v=s7JmdCfI__c
They have this concept of "unwrapped lines" into which the source
code is split by a "structural parser". I am not sure, if dfmt
really needs it, because we don't have cpp macros littered around
in D code.
While dfmt already works well for some code (e.g. the snippet on
dlang.org frontpage), the biggest hurdle (imho) is an expression
formatter, which for example understands operator precedences.
Currently, dfmt uses a greedy line fill algorithm.
More information about the Digitalmars-d
mailing list