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