import std.d.lexer;
import std.d.ast;
import std.stdio;
class XMLPrinter : ASTVisitor
{
override void visit(Module mod)
{
output.writeln("");
mod.accept(this);
output.writeln("");
}
override void visit(ModuleDeclaration modDec)
{
output.writeln("");
modDec.accept(this);
output.writeln("");
}
override void visit(IdentifierChain chain)
{
output.writeln("");
foreach (ident; chain.identifiers)
{
output.writeln("", ident.value, "");
}
output.writeln("");
}
override void visit(ClassDeclaration classDec)
{
output.writeln("");
output.writeln("", classDec.name.value, "");
output.writeln("");
}
override void visit(StructDeclaration structDec)
{
output.writeln("");
output.writeln("", structDec.name.value, "");
output.writeln("");
}
override void visit(FunctionDeclaration functionDec)
{
output.writeln("");
output.writeln("", functionDec.name.value, "");
output.writeln("");
}
override void visit(EnumDeclaration enumDec)
{
output.writeln("");
if (enumDec.name.type == TokenType.identifier)
output.writeln("", enumDec.name.value, "");
enumDec.accept(this);
output.writeln("");
}
override void visit(EnumMember enumMem)
{
output.writeln("");
output.writeln("", enumMem.name.value, "");
enumMem.accept(this);
output.writeln("");
}
alias ASTVisitor.visit visit;
File output;
}