Mercurial > projects > dil
annotate trunk/src/dil/translator/German.d @ 798:c24be8d4f6ab
Added documentation comments.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 01 Mar 2008 02:53:06 +0100 |
parents | 19a34b69cc7d |
children |
rev | line source |
---|---|
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
1 /++ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
2 Author: Aziz Köksal |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
3 License: GPL3 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
4 +/ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
5 module dil.translator.German; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
6 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
7 import dil.ast.DefaultVisitor; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
8 import dil.ast.Node; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
9 import dil.ast.Declarations, |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
10 dil.ast.Statements, |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
11 dil.ast.Types, |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
12 dil.ast.Parameters; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
13 import tango.io.Print; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
14 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
15 private alias Declaration D; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
16 |
798
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
17 /// Translates a syntax tree into German. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 class GermanTranslator : DefaultVisitor |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 { |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
20 Print!(char) put; /// Output buffer. |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
21 |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
22 char[] indent; /// Current indendation string. |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
23 char[] indentStep; /// Appended to indent at each indendation level. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
24 |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
25 Declaration inAggregate; /// Current aggregate. |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
26 Declaration inFunc; /// Current function. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
27 |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
28 bool pluralize; /// Whether to use the plural when printing the next types. |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
29 bool pointer; /// Whether next types should consider the previous pointer. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
30 |
798
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
31 /// Construct a GermanTranslator. |
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
32 /// Params: |
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
33 /// put = buffer to print to. |
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
34 /// indentStep = added at every indendation step. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
35 this(Print!(char) put, char[] indentStep) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
36 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
37 this.put = put; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
38 this.indentStep = indentStep; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
39 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
40 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
41 /// Start translation. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
42 void translate(Node root) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
43 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
44 visitN(root); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
45 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 |
798
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
47 /// Increases the indentation when instantiated. |
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
48 /// The indentation is restored when the instance goes out of scope. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
49 scope class Indent |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
50 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
51 char[] old_indent; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
52 this() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
53 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
54 old_indent = this.outer.indent; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
55 this.outer.indent ~= this.outer.indentStep; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
56 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
57 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
58 ~this() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 { this.outer.indent = old_indent; } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
60 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
61 char[] toString() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
62 { return this.outer.indent; } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
63 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 |
798
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
65 /// Saves an outer member when instantiated. |
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
66 /// It is restored when the instance goes out of scope. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
67 scope class Enter(T) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
68 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
69 T t_save; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
70 this(T t) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
71 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
72 auto t_save = t; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
73 static if (is(T == ClassDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
74 is(T == InterfaceDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
75 is(T == StructDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
76 is(T == UnionDeclaration)) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
77 this.outer.inAggregate = t; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
78 static if (is(T == FunctionDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
79 is(T == ConstructorDeclaration)) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
80 this.outer.inFunc = t; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
81 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
82 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
83 ~this() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
84 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
85 static if (is(T == ClassDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
86 is(T == InterfaceDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
87 is(T == StructDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
88 is(T == UnionDeclaration)) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
89 this.outer.inAggregate = t_save; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
90 static if (is(T == FunctionDeclaration) || |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
91 is(T == ConstructorDeclaration)) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
92 this.outer.inFunc = t_save; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
93 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
94 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
95 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
96 alias Enter!(ClassDeclaration) EnteredClass; |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
97 alias Enter!(InterfaceDeclaration) EnteredInterface; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
98 alias Enter!(StructDeclaration) EnteredStruct; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
99 alias Enter!(UnionDeclaration) EnteredUnion; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
100 alias Enter!(FunctionDeclaration) EnteredFunction; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
101 alias Enter!(ConstructorDeclaration) EnteredConstructor; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
102 |
798
c24be8d4f6ab
Added documentation comments.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
694
diff
changeset
|
103 /// Prints the location of a node: @(lin,col) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
104 void printLoc(Node node) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
105 { |
675
e7811328e6c7
Made Token.getLocation() a template function and added two aliases.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
674
diff
changeset
|
106 auto loc = node.begin.getRealLocation(); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
107 put(indent).formatln("@({},{})",/+ loc.filePath,+/ loc.lineNum, loc.colNum); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
108 } |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
109 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
110 override: |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
111 D visit(ModuleDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
112 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
113 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
114 put.format("Dies ist das Modul '{}'", n.moduleName.str); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
115 if (n.packages.length) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
116 put.format(" im Paket '{}'", n.getPackageName('.')); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
117 put(".").newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
118 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
119 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
120 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
121 D visit(ImportDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
122 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
123 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
124 put("Importiert Symbole aus einem anderen Modul bzw. Module.").newline; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
125 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
126 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
127 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
128 D visit(ClassDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
129 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
130 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
131 scope E = new EnteredClass(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
132 put(indent).formatln("'{}' is eine Klasse mit den Eigenschaften:", n.name.str); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
133 scope I = new Indent(); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
134 n.decls && visitD(n.decls); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
135 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
136 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
137 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
138 D visit(InterfaceDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
139 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
140 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
141 scope E = new EnteredInterface(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
142 put(indent).formatln("'{}' is ein Interface mit den Eigenschaften:", n.name.str); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
143 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
144 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
145 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
146 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
147 |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
148 D visit(StructDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
149 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
150 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
151 scope E = new EnteredStruct(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
152 put(indent).formatln("'{}' is eine Datenstruktur mit den Eigenschaften:", n.name.str); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
153 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
154 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
155 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
156 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
157 |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
158 D visit(UnionDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
159 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
160 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
161 scope E = new EnteredUnion(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
162 put(indent).formatln("'{}' is eine Datenunion mit den Eigenschaften:", n.name.str); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
163 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
164 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
165 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
166 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
167 |
673
64fec49651cf
Renamed VariableDeclaration to VariablesDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
168 D visit(VariablesDeclaration n) |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
169 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
170 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
171 char[] was; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
172 if (inAggregate) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
173 was = "Membervariable"; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
174 else if (inFunc) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
175 was = "lokale Variable"; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
176 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
177 was = "globale Variable"; |
683
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
678
diff
changeset
|
178 foreach (name; n.names) |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
179 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
180 put(indent).format("'{}' ist eine {} des Typs: ", name.str, was); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
181 if (n.typeNode) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
182 visitT(n.typeNode); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
183 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
184 put("auto"); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
185 put.newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
186 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
187 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
188 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
189 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
190 D visit(FunctionDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
191 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
192 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
193 char[] was; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
194 if (inAggregate) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
195 was = "Methode"; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
196 else if(inFunc) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
197 was = "geschachtelte Funktion"; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
198 else |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
199 was = "Funktion"; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
200 scope E = new EnteredFunction(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
201 put(indent).format("'{}' ist eine {} ", n.name.str, was); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
202 if (n.params.length == 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
203 put("mit dem Argument "), visitN(n.params); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
204 else if (n.params.length > 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
205 put("mit den Argumenten "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
206 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
207 put("ohne Argumente"); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
208 put(".").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
209 scope I = new Indent(); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
210 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
211 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
212 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
213 D visit(ConstructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
214 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
215 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
216 scope E = new EnteredConstructor(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
217 put(indent)("Ein Konstruktor "); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
218 if (n.params.length == 1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
219 put("mit dem Argument "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
220 else if (n.params.length > 1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
221 put("mit den Argumenten "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
222 else |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
223 put("ohne Argumente"); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
224 put(".").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
225 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
226 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
227 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
228 D visit(StaticConstructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
229 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
230 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
231 put(indent)("Ein statischer Konstruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
232 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
233 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
234 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
235 D visit(DestructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
236 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
237 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
238 put(indent)("Ein Destruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
239 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
240 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
241 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
242 D visit(StaticDestructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
243 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
244 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
245 put(indent)("Ein statischer Destruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
246 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
247 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
248 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
249 D visit(InvariantDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
250 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
251 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
252 put(indent)("Eine Unveränderliche.").newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
253 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
254 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
255 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
256 D visit(UnittestDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
257 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
258 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
259 put(indent)("Ein Komponententest.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
260 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
261 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
262 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
263 Node visit(Parameter n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
264 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
265 put.format("'{}' des Typs \"", n.name ? n.name.str : "unbenannt"); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
266 n.type && visitN(n.type); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
267 put(\"); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
268 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
269 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
270 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
271 Node visit(Parameters n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
272 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
273 if (n.length > 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
274 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
275 visitN(n.children[0]); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
276 foreach (node; n.children[1..$]) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
277 put(", "), visitN(node); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
278 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
279 else |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
280 super.visit(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
281 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
282 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
283 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
284 TypeNode visit(ArrayType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
285 { |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
286 char[] c1 = "s", c2 = ""; |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
287 if (pluralize) |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
288 (c1 = pointer ? ""[] : "n"), (c2 = "s"); |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
289 pointer = false; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
290 if (n.assocType) |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
291 put.format("assoziative{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
292 // visitT(n.assocType); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
293 else if (n.e1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
294 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
295 if (n.e2) |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
296 put.format("gescheibte{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
297 else |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
298 put.format("statische{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
299 // visitE(n.e), n.e2 && visitE(n.e2); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
300 } |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
301 else |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
302 put.format("dynamische{} Array{} von ", c1, c2); |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
303 // Types following arrays should be in plural. |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
304 pluralize = true; |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
305 visitT(n.next); |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
306 pluralize = false; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
307 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
308 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
309 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
310 TypeNode visit(PointerType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
311 { |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
312 char[] c = pluralize ? (pointer ? ""[] : "n") : ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
313 pointer = true; |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
314 put.format("Zeiger{} auf ", c), visitT(n.next); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
315 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
316 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
317 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
318 TypeNode visit(QualifiedType n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
319 { |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
320 visitT(n.lhs); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
321 put("."); |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
322 visitT(n.rhs); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
323 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
324 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
325 |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
326 TypeNode visit(IdentifierType n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
327 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
328 put(n.ident.str); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
329 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
330 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
331 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
332 TypeNode visit(IntegralType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
333 { |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
334 char[] c = pluralize ? "s"[] : ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
335 if (n.tok == TOK.Void) // Avoid pluralizing "void" |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
336 c = ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
337 put.format("{}{}", n.begin.srcText, c); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
338 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
339 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
340 } |