Recently, I was going around looking for ideas on what I can build using C this summer and I came across this post: Interesting project to learn C?
Implement a programming language. This doesn't have to be terribly hard - I did the language that must not be named - but it will force you to learn a lot of the important parts of C. If you don't want to write a lexer and/or parser yourself, you can use lex/flex and yacc/bison, but if you plan on that you might want to start with a somewhat smaller project.
I was kinda intrigued about the implementing a programming language answer and I'm wondering how do I go about starting this? I've gone through the whole K&R book and I've done some of the exercises as well. I also have a bit of experience in C++ and Java if that matters. Any tips? Thanks!
Read through posts on the usenet newsgroup comp.compilers, it is accessible through Google Groups. It has many discussions related to building a language, building a compiler, lex/yacc, grammars and the like. Of course, you'd have to have good familiarity with the classics such as the dragon book, the tiger book among many books on compilers and, good books on algorithms and data structures.
The Original C Compiler is being given a new life. Most of it is being rewritten, and its code base is small enough to be read and understood in a summer vacation. Consider reading the code along with the papers that were used to write the code of this or any working compiler and I'm sure you'd get ideas about where to start, etc.
If you speak French you may be interested in one of my colleagues courses (freely available) http://matthieuamiguet.ch/scientifique/enseignement/langages-et-compilateurs although he uses Python to explain the concepts of language construction and compilation.
English PDF from PyCon 2010 http://matthieuamiguet.ch/assets/files/scientifique/publis/TeachingCompilersWithPython_Paper.pdf
I may have to speak to him about translating his info to English 8)