Один подход должен был бы вставить пустой указатель для данных. Каждый раз, когда Вы пересекаете список, Вы отслеживаете предыдущий узел. При нахождении пустых данных Вы ремонтируете список и переходите к следующему узлу.
Я могу предложить "Создание компилятора" Чарльза Н. Фишера и Ричарда Дж. Леблана.
Править. Это обновленная версия: http://www.amazon.com/Crafting-Compiler-Charles-N-Fischer/dp/0136067050/ref=sr_1_2?ie=UTF8&s=books&qid=1258514561&sr=8-2