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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }