Тааааааааакккккк.... СТОП!!!
Вот оно мы и подошли к парсеру и сканеру....
И тут повторяется классическая (даж не ошибка) идея RED BOOK книги драконов и компиляторов Страуструпа и Вирта...
Для началу
http://exmortis.narod.ru/ суды... Тута исходники на любой вкус, любых компилеров...
Парсер в принципе для Delphi можно выдрать из самой Delphi (класс TParser)
я в принципе так и делал...
Теперь смотри что у тя происходит, так называемый МЕТОД РЕКУРСИВНОГО СПУСКА...
procedure UpLevel;
begin
getToken; //<- берем токен кода
case Token.Name of
_Program: ;// обрабатываем сроку Program
_begin: ;// обрабатываем тело проги
_end: ;// завершаем компиляцию
end;
end;
..................
И т.д.
Метод хороший но имеет маленький нюансик... Он изночально привязан жостко к исходному языку. А нам надо (Jimon вон просил) исходный синтаксис любого языка... Поэтому луче действовать по Крэншоу, методом подъема. Смотрим логику.
Самое главное сейчас получить ассемблерный скажем байт-код Java. Потом останеться только разобрать входной язык. Поэтому надо начать с разбора ВЫРАЖЕНИЙ (Expression) вида
a=1+i-22/x+y*22;
и получать на выходе уже готовый байт-код
потом перейти к разбору переменных и типов... Это естественно заскочит в таблицы, на основе которых и соберётся заголовок.