Mercurial > projects > dil
annotate trunk/src/dil/translator/German.d @ 694:19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Added visit(TypeofType) to SemanticPass2.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Tue, 22 Jan 2008 20:56:10 +0100 |
parents | 8e38774d562b |
children | c24be8d4f6ab |
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 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
17 /++ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
18 Traverses a D syntax tree and explains in German. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
19 +/ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
20 class GermanTranslator : DefaultVisitor |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
21 { |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
22 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
|
23 |
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
24 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
|
25 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
|
26 |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
27 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
|
28 Declaration inFunc; /// Current function. |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
29 |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
30 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
|
31 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
|
32 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
33 /++ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
34 Construct a GermanTranslator. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
35 Params: |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
36 put = buffer to print to. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
37 indentStep = added at every indendation step. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
38 +/ |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
39 this(Print!(char) put, char[] indentStep) |
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 this.put = put; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
42 this.indentStep = indentStep; |
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 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
45 /// Start translation. |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
46 void translate(Node root) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
47 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
48 visitN(root); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
49 } |
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 scope class Indent |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
52 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
53 char[] old_indent; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
54 this() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
55 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
56 old_indent = this.outer.indent; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
57 this.outer.indent ~= this.outer.indentStep; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
58 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
59 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
60 ~this() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
61 { this.outer.indent = old_indent; } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
62 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
63 char[] toString() |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
64 { return this.outer.indent; } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
65 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
66 |
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 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
103 void printLoc(Node node) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
104 { |
675
e7811328e6c7
Made Token.getLocation() a template function and added two aliases.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
674
diff
changeset
|
105 auto loc = node.begin.getRealLocation(); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
106 put(indent).formatln("@({},{})",/+ loc.filePath,+/ loc.lineNum, loc.colNum); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
107 } |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
108 |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
109 override: |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
110 D visit(ModuleDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
111 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
112 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
113 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
|
114 if (n.packages.length) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
115 put.format(" im Paket '{}'", n.getPackageName('.')); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
116 put(".").newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
117 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
118 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
119 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
120 D visit(ImportDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
121 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
122 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
123 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
|
124 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
125 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
126 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
127 D visit(ClassDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
128 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
129 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
130 scope E = new EnteredClass(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
131 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
|
132 scope I = new Indent(); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
133 n.decls && visitD(n.decls); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
134 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
135 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
136 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
137 D visit(InterfaceDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
138 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
139 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
140 scope E = new EnteredInterface(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
141 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
|
142 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
143 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
144 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
145 } |
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 D visit(StructDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
148 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
149 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
150 scope E = new EnteredStruct(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
151 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
|
152 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
153 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
154 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
155 } |
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 D visit(UnionDeclaration n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
158 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
159 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
160 scope E = new EnteredUnion(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
161 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
|
162 scope I = new Indent(); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
163 n.decls && visitD(n.decls); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
164 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
165 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
166 |
673
64fec49651cf
Renamed VariableDeclaration to VariablesDeclaration.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
670
diff
changeset
|
167 D visit(VariablesDeclaration n) |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
168 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
169 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
170 char[] was; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
171 if (inAggregate) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
172 was = "Membervariable"; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
173 else if (inFunc) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
174 was = "lokale Variable"; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
175 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
176 was = "globale Variable"; |
683
1ae72234db26
Implemented some methods in SemanticPass1.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
678
diff
changeset
|
177 foreach (name; n.names) |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
178 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
179 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
|
180 if (n.typeNode) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
181 visitT(n.typeNode); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
182 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
183 put("auto"); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
184 put.newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
185 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
186 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
187 } |
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 D visit(FunctionDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
190 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
191 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
192 char[] was; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
193 if (inAggregate) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
194 was = "Methode"; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
195 else if(inFunc) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
196 was = "geschachtelte Funktion"; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
197 else |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
198 was = "Funktion"; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
199 scope E = new EnteredFunction(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
200 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
|
201 if (n.params.length == 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
202 put("mit dem Argument "), visitN(n.params); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
203 else if (n.params.length > 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
204 put("mit den Argumenten "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
205 else |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
206 put("ohne Argumente"); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
207 put(".").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
208 scope I = new Indent(); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
209 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
210 } |
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 D visit(ConstructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
213 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
214 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
215 scope E = new EnteredConstructor(n); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
216 put(indent)("Ein Konstruktor "); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
217 if (n.params.length == 1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
218 put("mit dem Argument "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
219 else if (n.params.length > 1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
220 put("mit den Argumenten "), visitN(n.params); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
221 else |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
222 put("ohne Argumente"); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
223 put(".").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
224 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
225 } |
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 D visit(StaticConstructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
228 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
229 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
230 put(indent)("Ein statischer Konstruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
231 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
232 } |
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 D visit(DestructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
235 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
236 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
237 put(indent)("Ein Destruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
238 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
239 } |
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 D visit(StaticDestructorDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
242 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
243 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
244 put(indent)("Ein statischer Destruktor.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
245 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
246 } |
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 D visit(InvariantDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
249 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
250 printLoc(n); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
251 put(indent)("Eine Unveränderliche.").newline; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
252 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
253 } |
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 D visit(UnittestDeclaration n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
256 { |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
257 printLoc(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
258 put(indent)("Ein Komponententest.").newline; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
259 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
260 } |
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 Node visit(Parameter n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
263 { |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
264 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
|
265 n.type && visitN(n.type); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
266 put(\"); |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
267 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
268 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
269 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
270 Node visit(Parameters n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
271 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
272 if (n.length > 1) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
273 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
274 visitN(n.children[0]); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
275 foreach (node; n.children[1..$]) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
276 put(", "), visitN(node); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
277 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
278 else |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
279 super.visit(n); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
280 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
281 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
282 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
283 TypeNode visit(ArrayType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
284 { |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
285 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
|
286 if (pluralize) |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
287 (c1 = pointer ? ""[] : "n"), (c2 = "s"); |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
288 pointer = false; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
289 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
|
290 put.format("assoziative{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
291 // visitT(n.assocType); |
689
8e38774d562b
Added some methods to ArrayType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
683
diff
changeset
|
292 else if (n.e1) |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
293 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
294 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
|
295 put.format("gescheibte{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
296 else |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
297 put.format("statische{} Array{} von ", c1, c2); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
298 // visitE(n.e), n.e2 && visitE(n.e2); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
299 } |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
300 else |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
301 put.format("dynamische{} Array{} von ", c1, c2); |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
302 // Types following arrays should be in plural. |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
303 pluralize = true; |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
304 visitT(n.next); |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
305 pluralize = false; |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
306 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
307 } |
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 TypeNode visit(PointerType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
310 { |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
311 char[] c = pluralize ? (pointer ? ""[] : "n") : ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
312 pointer = true; |
674
6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
673
diff
changeset
|
313 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
|
314 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
315 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
316 |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
317 TypeNode visit(QualifiedType n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
318 { |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
319 visitT(n.lhs); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
320 put("."); |
694
19a34b69cc7d
Renamed some members of BinaryExpression and QualifiedType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
689
diff
changeset
|
321 visitT(n.rhs); |
670
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
322 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
323 } |
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 TypeNode visit(IdentifierType n) |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
326 { |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
327 put(n.ident.str); |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
328 return n; |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
329 } |
d8c32113afde
Added command 'translate'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
669
diff
changeset
|
330 |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
331 TypeNode visit(IntegralType n) |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
332 { |
678
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
333 char[] c = pluralize ? "s"[] : ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
334 if (n.tok == TOK.Void) // Avoid pluralizing "void" |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
335 c = ""; |
cedfc67faabf
Improved GermantTranslator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
675
diff
changeset
|
336 put.format("{}{}", n.begin.srcText, c); |
669
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
337 return n; |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
338 } |
1e3c5967ef12
Added module dil.translator.German.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff
changeset
|
339 } |