view wiki/main.wiki @ 381:7b5c6c2c6a79

- Updated AUTHORS file.
author aziz
date Sat, 08 Sep 2007 20:57:01 +0000
parents ffb92a52ff44
children c45233dc63db
line wrap: on
line source

=Purpose=
dil is a hand-crafted compiler implementation for the D programming language. Currently the lexer and the parser are fully implemented (except for very minor things.) No semantic analysis is done at the moment. The backend will most probably be gcc.

What dil can do at the moment:
  * dil is fully internationalized and can output compiler messages in English, German, Turkish and Finnish. You can determine which language to use with a setting in config.d.
  * Generate XML or HTML documents. You can choose to generate tags for tokens only or you can also have the whole parse tree unparsed. The whitespace of the original source file is preserved. You can view the HTML documents in any browser you like. The XML documents can only be viewed in W3C-standards compatible browsers(`*`) in combination with an XML formatting CSS document. dil provides two ordinary CSS documents (for XML/HTML) which can be customized to one's heart's content. (`*`Note: Internet Explorer is the only browser that spectacularly fails at this job.)
  * Generate module dependency graphs in the dot format. Demo [http://dil.googlecode.com/files/main.svg SVG], [http://dil.googlecode.com/files/main.png PNG] (1.3MB) or [http://dil.googlecode.com/files/main.gif GIF]. Cyclic edges and nodes are highlighted in red.
  * Generate simple code statistics (lines of code, number of whitespace characters etc.) When dil has advanced enough [http://www.aivosto.com/project/help/pm-oo-ck.html OO-metrics] will be supported.

  * dil can parse D 2.0 additions:
    * [http://www.digitalmars.com/d/statement.html#ForeachRangeStatement ForeachRangeStatement].
    * Optional [http://www.digitalmars.com/d/expression.html#IsExpression TemplateParameterList in IsExpression].
    * Cast expressions: cast(const) and cast(invariant).
    * Type constructors: const(Type) and invariant(Type).
    * Traits expressions: `__`traits(Identifier) and `__`traits(Identifier, !TemplateArguments).
    * const/invariant/final/scope/static as storage classes in parameter lists (e.g. void func(final scope Foo f);).
    * invariant as storage class for declarations (e.g. invariant Foo f;).

Features you will or might see in dil:
  * Documentation generation ala doxygen (keeping ddoc in mind.)
  * Refactoring (renaming symbols, modules; changing the type of a symbol etc.)
  * Coding rules enforcement.
  * Code search.
  * Code analysis (lint-like).
  * Code formatting.
  * Translate D code to other languages.
  * Port D 1.0 code to D 2.0.

*Meaning:*

The word dil comes from the Turkish language and means among other things a) tongue or b) language. It is a very fitting name for this project because of its meaning and because it starts with the letter d and for the reason that the project owner has Turkish origins.

==Download==
There are no binaries to download yet. If you want to get the sources you can either check it out via SVN (`svn co http://dil.googlecode.com/svn/trunk/ dil`) or you can use the fetch command of [http://dsource.org/projects/dsss DSSS] (dsss net fetch dil).