Mercurial > projects > dil
changeset 674:6a934ff01b68
Added code to GermanTranslator to pluralize types if needed.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Fri, 18 Jan 2008 17:25:37 +0100 |
parents | 64fec49651cf |
children | e7811328e6c7 |
files | trunk/src/dil/translator/German.d |
diffstat | 1 files changed, 28 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/dil/translator/German.d Fri Jan 18 16:44:20 2008 +0100 +++ b/trunk/src/dil/translator/German.d Fri Jan 18 17:25:37 2008 +0100 @@ -19,13 +19,15 @@ +/ class GermanTranslator : DefaultVisitor { - Print!(char) put; + Print!(char) put; /// Output buffer. + + char[] indent; /// Current indendation string. + char[] indentStep; /// Appended to indent at each indendation level. - char[] indent; - char[] indentStep; + Declaration inAggregate; /// Current aggregate. + Declaration inFunc; /// Current function. - Declaration inAggregate; - Declaration inFunc; + bool pluralize; /// Whether to use the plural in the next type. /++ Construct a GermanTranslator. @@ -279,26 +281,34 @@ TypeNode visit(ArrayType n) { + char[] c1 = "s", c2 = ""; + if (pluralize) + (pluralize = false), (c1 = "n"), (c2 = "s"); + // Types after arrays should be in plural. + pluralize = true; if (n.assocType) - put("assoziatives Array von "); + put.format("assoziative{} Array{} von ", c1, c2); // visitT(n.assocType); else if (n.e) { if (n.e2) - put("gescheibtes Array von "); + put.format("gescheibte{} Array{} von ", c1, c2); else - put("statisches Array von "); + put.format("statische{} Array{} von ", c1, c2); // visitE(n.e), n.e2 && visitE(n.e2); } else - put("dynamisches Array von "); + put.format("dynamische{} Array{} von ", c1, c2); visitT(n.next); return n; } TypeNode visit(PointerType n) { - put("Zeiger auf "), visitT(n.next); + char[] c = ""; + if (pluralize) + (pluralize = false), c = "n"; + put.format("Zeiger{} auf ", c), visitT(n.next); return n; } @@ -318,7 +328,14 @@ TypeNode visit(IntegralType n) { - put(n.begin.srcText); + char[] c = ""; + if (pluralize) + { + (pluralize = false), c = "s"; + if (n.tok == TOK.Void) // Avoid pluralizing "void" + c = ""; + } + put.format(n.begin.srcText, c); return n; } }