Si tu t´intéresse à l´écriture de compilateur, je te conseillerai pour commencer, si tu ne l´as pas encore fait, de t´intéresser au langage Objective Caml, qui a été conçu pour cette tâche (mais qui reste un langage polyvalent extrêmement puissant).
Avec ce langage, toutes les tâches "mécaniques" (analyse syntaxique et lexicale), puis la compilation elle même (génération d´un arbre abstrait, manipulation de toute les structure que tu veux), seront bien plus simple et plus proche des algorithmes qui les décrivent (sans rien masquer de leurs intérêt).
Tu peut par exemple lire ça :
http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/ qui est un peu ancien mais toujours correcte. Tu peut apprendre le langage avec les chapitres 1 à 4. Puis le chapitre 6 (tu peut zapper le 5) te permettra déjà de faire un petit interpréteur pour un langage BASIC. Ensuite le chapitre 11 (mais il faudrait lire les chapitre 7 et 8 avant) te présente les outils d´analyse lexicale et syntaxique qui sont la base de l´écriture de compilateur.
En parallèle si tu veux avoir des idée sur les compilo (je pense qu´il est interessant de pouvoir implémenter soi même ce genre de chose au fur et à mesure où tu les apprend, d´où l´idée df´apprendre le langage dans lequel tout les cours sont écrit), tu peut regarder ces deux poly :
http://www.enseignement.polytechnique.fr/profs/informatique/Luc.Maranget/compil/poly/
Que j´ai parcouru assez rapidement, mais qui semble assez bon
http://www.pps.jussieu.fr/~dicosmo/CourseNotes/Compilation/
Qui est écrit par un très bon prof (mais je n´ai pas lu le poly par contre, et il me semble qu´il utilise un logiciel pour simuler la machine cible qui n´est pas ou plus accessible, il faut voir).