annotate wiki/main.wiki @ 805:a3fab8b74a7d

Updated wiki pages. Added new page mercurial.wiki.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sat, 08 Mar 2008 22:09:59 +0100
parents c89ffd930727
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
316
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
1 =Purpose=
710
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
2 dil is a hand-crafted compiler implementation for the D programming language written in D 1.0 using the [http://dsource.org/projects/tango Tango] standard library. The lexer and the parser are fully implemented. Semantic analysis is being worked on. The backend will most probably be gcc or [http://llvm.org LLVM].
316
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
3
805
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
4 What dil can do at the present:
378
ffb92a52ff44 - Added two items to list of features.
aziz
parents: 337
diff changeset
5 * 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.
805
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
6 * Generate documentation from DDoc comments. In comparison to dmd, dil has fewer bugs and also offers a few goodies. Example: documentation of [http://dil.googlecode.com/files/Tango_doc_0.99.5.zip Tango].
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
7 * Unicode alphas are supported in macro, section and parameter names.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
8 * Every symbol can be linked to its source location.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
9 * Protection, linkage and storage class attributes are shown in brackets.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
10 * Reports warnings for undefined macros and unterminated macros (missing closing ')'.)
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
11 * Every token in a code section is highlighted (customizable via html_map.d.)
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
12 * Undocumented symbols can be included in the documentation using the '-i'-switch.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
13 * Shortcomings: symbols aren't highlighted in comment texts (rather for practical reasons;) variables/parameters with a !DeclaratorSuffix (e.g. `int a[]`) are slightly problematic; sometimes it shows that semantic info is lacking.
710
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
14 * 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. Example: dil's source code in [http://dil.googlecode.com/files/xml_rev709.zip XML] or [http://dil.googlecode.com/files/html_rev709.zip HTML]. (`*`Note: Internet Explorer is the only browser that spectacularly fails at this job.)
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
15 * Produce module dependency graphs using the graphviz dot format. For example, see the [http://dil.googlecode.com/files/main.2.dot dot file] of dil: rendered in [http://dil.googlecode.com/files/main.2.svg SVG], [http://dil.googlecode.com/files/main.2.png PNG] (2.7MB) or [http://dil.googlecode.com/files/main.2.gif GIF]. Cyclic edges (import statements) and nodes (modules) are highlighted in red. The edges of public imports are bold.
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
16 * Output code statistics (lines of code, count syntax tree nodes and tokens, 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. Example: [http://dil.googlecode.com/files/stats_dstress_r1835_2.txt dstress] (1.5MB text; totals are at the bottom)
317
f62f4b614ebd - Added list of features dil has atm. Brought list of D2.0 additions under the first list.
aziz
parents: 316
diff changeset
17
f62f4b614ebd - Added list of features dil has atm. Brought list of D2.0 additions under the first list.
aziz
parents: 316
diff changeset
18 * dil can parse D 2.0 additions:
385
c45233dc63db Updated lists and added notice about new hg repository.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 381
diff changeset
19 * Delimited and token [http://www.digitalmars.com/d/lex.html#StringLiteral string literals].
317
f62f4b614ebd - Added list of features dil has atm. Brought list of D2.0 additions under the first list.
aziz
parents: 316
diff changeset
20 * [http://www.digitalmars.com/d/statement.html#ForeachRangeStatement ForeachRangeStatement].
381
7b5c6c2c6a79 - Updated AUTHORS file.
aziz
parents: 378
diff changeset
21 * Optional [http://www.digitalmars.com/d/expression.html#IsExpression TemplateParameterList in IsExpression].
493
d13502b6fa5f Added code to the Parser and edited main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 421
diff changeset
22 * const and invariant in !IsExpressions.
d13502b6fa5f Added code to the Parser and edited main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 421
diff changeset
23 * [http://www.digitalmars.com/d/template.html#TemplateThisParameter TemplateThisParameter].
710
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
24 * Cast expressions: `cast(const)` and `cast(invariant)`.
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
25 * Type constructors: `const(Type)` and `invariant(Type)`.
493
d13502b6fa5f Added code to the Parser and edited main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 421
diff changeset
26 * const and invariant attributes after the parameter list of a function (C++ style.)
710
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
27 * `typeof(return)`.
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
28 * Traits expressions: `__traits(Identifier)` and `__traits(Identifier, TemplateArguments)`.
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
29 * const/invariant/final/scope/static as storage classes in parameter lists (e.g. `void func(ref const Foo f);`).
c89ffd930727 Updated main.wiki.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 493
diff changeset
30 * invariant as a storage class for declarations (e.g. `invariant Foo f;`).
421
1be8eaf4b5b0 Made some changes. Added an item to the D2.0 list.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 385
diff changeset
31 * The identifier `__EOF__` is interpreted as the end of file.
317
f62f4b614ebd - Added list of features dil has atm. Brought list of D2.0 additions under the first list.
aziz
parents: 316
diff changeset
32
316
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
33 Features you will or might see in dil:
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
34 * Refactoring (renaming symbols, modules; changing the type of a symbol etc.)
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
35 * Coding rules enforcement.
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
36 * Code search.
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
37 * Code analysis (lint-like).
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
38 * Code formatting.
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
39 * Translate D code to other languages.
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
40 * Port D 1.0 code to D 2.0.
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
41
317
f62f4b614ebd - Added list of features dil has atm. Brought list of D2.0 additions under the first list.
aziz
parents: 316
diff changeset
42 *Meaning:*
316
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
43
805
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
44 The word dil comes from the Turkish language and means among other things a) tongue or b) language.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
45 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.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
46
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
47 ===Contact===
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
48 Feel free to join my channel, #dil, which I've set up on freenode.net.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
49 You can also send me a plain e-Mail if you have questions regarding my project.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
50
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
51 ===License===
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
52 Some people might not like the license under which dil is currently being developed.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
53 In fact, it could be off-putting for some programmers who would like to contribute to it or make use of it as a client.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
54 However, please keep in mind that a lot of hours were spent in order to come up with a compiler that is well documented and has a solid design.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
55 It is not unlikely that the author will put the project under a less restrictive license one time or another.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
56 It could be LGPL3 or even BSD.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
57 It very much depends on how many cookies and apple pies somebody might be willing to stuff the author with.
316
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
58
c23a24cc2021 - Created wiki directory and added main.wiki.
aziz
parents:
diff changeset
59 ==Download==
805
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
60 There are no downloadable binaries yet.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
61 If you have [http://dsource.org/projects/dsss DSSS] you can use the fetch command, "`dsss net fetch dil.zip`", to get the latest revision of the source code.
a3fab8b74a7d Updated wiki pages.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 710
diff changeset
62 Click the "Source"-tab to find out how to get the sources using Mercurial.