Ответ в том, что вы не должны пытаться написать компилятор с использованием регулярных выражений;они не подходят для работы.Для начала они полезны только для идентификации строк на обычных языках ;любой нетривиальный язык программирования не является регулярным.
Возможно, вам лучше всего использовать bison или Yacc для генерации кода вашего синтаксического анализатора.