  In Compiler Design courses, students learn how a program written in high
level programming language and designed for humans understanding is
systematically converted into low level assembly language understood by
machines, through different representations. This article presents the design,
educative characteristics and possibilities of a modular and didactic compiler
for a Pascal-like programming mini-language that is super-set of Niklaus
Wirth's PL/0. The main feature is that it implements the compiling phases in
such a way that the information delivered to each next one may be reflected as
an XML document, which can be studied separately. It is also shown that its
design is suitable for being included as learning tool into compiler design
courses. It is possible to implement a compiler in a high-level language like
Python.
