dmt: Python-like indentation in D programming language

bauss jj_1337 at live.dk
Fri Nov 19 10:03:00 UTC 2021


On Tuesday, 16 November 2021 at 21:58:24 UTC, Witold Baryluk 
wrote:
> Hi,
>
> `dmt` is an old project of mine from around year 2006. I ported 
> it recently from D1 to D2, and added some extra features and 
> support for extra keywords, and fixed few bugs here and there.
>
> `dmt` is a converter (offline or auto-invoking compiler after 
> conversion) from Python-like indention style to curly braces 
> for D programming language.
>
> https://github.com/baryluk/dmt
>
> It is fun and easy to use, and maybe it would be of interested 
> to you.
>
> `example.dt`:
>
> ```d
> def int f(int b):
>     int y = 0
>     foreach (i; 0..5):
>       y += i * (i+b)
>     return y
>
> struct A:
>     private:
>     int a
>     public:
>     int b_ = 5
>     def auto b() @property:
>         return b_
>
> def void main():
>     import std
>     writefln!"%s %s"(f(5), A())
> ```
>
> ```shell
> $ DMD=ldc2 dmt -run example.dt
> ldc2 -run example.d
> 80 A(0, 5)
> $
> ```
>
> All D programming language features are supported (including 
> exception handling, if/else, switch/case/break, inline asm, 
> attribute sections, goto). Converted code is human readable.
>
> You can check more examples in the README.md and in `tests/` 
> directory.
>
> `dmt` is not yet self hosting, but that is probably the next 
> step. :)
>
> Enjoy.

Isn't def redundant in this since D already declares types then 
you can assume if it's not enum, template, mixin template, class, 
struct or union then it must be a function if it also end with 
(...):

Like:

     ```d
     int foo():
         return 10
     ```

You'd never be in doubt that foo was a function or that:

     ```d
     template Foo(T):
         alias Foo = T
     ```

Foo in this case was a template.

Or like make def optional at least, because I see how it can help 
porting Python code, but it seems unnecessary if you're writing 
from scratch.

Great project tho!


More information about the Digitalmars-d-announce mailing list