You may split your learning task in two fields:
- How to build a compiler (there are many many books about).
- Gain a deep knowledge of the programming language used to actually build the compiler (and, again, there are many many books on C# programming language).
You may also find useful a tool like
ANTLR[
^] (it's 'natural' target is
Java
, but
C#
is supported as weel, see:
"ANTLR3 Code Generation Targets"[
^]).