Отказ от ответственности, фактический ответ ниже
Если вы действительно хотите получить информацию о том, как создать компилятор с нуля, и вам нужны все необходимые практические методы синтаксического анализа, компиляции, генерации и оптимизации, то книга *1006* будет лучший вариант.
Если вы хотите создать чистый язык программирования с нуля с использованием переводчика, я бы порекомендовал книгу EPL Фридмана.
Если то, что вы ищете в своей бакалаврской работе, является более глубоким пониманием всех фундаментальных вопросов в обеих предыдущих книгах, тогда читайте мой ответ ниже. SICP - это образовательная работа, она пытается донести основные понятия на понятном языке, насколько это возможно. Он не будет вдаваться в подробности о леворекурсивных синтаксических анализаторах, исключении общих подвыражений, расширениях SSE x86 и т. Д.
SICP CH4-5
Техника, используемая для объяснения сложных концепций, заключается в создании ряда компьютерных языков с нуля на ваших глазах.
Глава 4 начинается с создания мета-циклического интерпретатора Схемы: небольшого интерпретатора Схемы, написанного на самой Схеме. Это даст вам основы рекурсивного интерпретатора и послужит основой для построения серии мини-языков в оставшейся части главы 4-5. Он отвечает на вопрос о том, как представить ваш проанализированный код, какие структуры данных задействованы, как отделить хост от базового языка и т. Д.
Важно отметить, что языковой переводчик сам по себе является еще одной компьютерной программой.
В оставшейся части главы 4 показано, как можно изменить вкус вашего языка, изменив предыдущий переводчик. Два больших из них - ленивый анализ и логическое программирование.
Глава 5 создает приблизительную модель «регистрационных машин», чтобы представить ваш текущий компьютер на абстрактном уровне. Они создают небольшой машинный язык регистров, который действует как язык ассемблера для любых целей и задач. Они вводят все структуры данных и конструкции потока управления, необходимые для следующего этапа: создание интерпретатора схемы на этом машинном языке. Чем-то все еще похож на мета-круговой интерпретатор. После этого они спрыгивают с глубокого конца и создают компилятор схем на своем машинном языке регистров; в комплекте с этапом сборки, оптимизацией хвостовой рекурсии, сборкой мусора, лексической адресацией, трассировкой и т. д.
Хотя SICP конструирует игрушечные интерпретаторы и компиляторы, они концептуально достаточно полны, чтобы быстро освоить современные практические методы. Промежуточный код GCC очень похож на регистрационный машинный код SICP, например, и эти ребята реализовали интерпретатор SICP для микроконтроллеров ARM прямо в сборке.