annotate trunk/src/dil/translator/German.d @ 798:c24be8d4f6ab

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