SICP - структура и интерпретация копьютерных программ. Не С++, но зато фундаментально всё сделано.
Ну и потом (а может и параллельно), можно изучить очень крутой проект -
mal - Make a Lisp. На его основе можно написать свой интерпретатор Lisp на С++, например, подглядывая в существующие реализации.