Вид сверху
Вид сверху
Введение
В предыдущих главах мы изучили многие из методов, необходимых для создания полноценного компилятора. Мы разработали операции присваивания (с булевыми и арифметическими выражениями), операторы отношений и управляющие конструкции. Мы все еще не обращались к вопросу вызова процедур и функций, но даже без них мы могли бы в принципе создать мини-язык. Я всегда думал, что было бы забавно просто посмотреть, насколько маленьким можно было бы построить язык, чтобы он все еще оставался полезным. Теперь мы уже почти готовы сделать это. Существует проблема: хотя мы знаем, как анализировать и транслировать конструкции, мы все еще совершенно не знаем, как сложить их все вместе в язык.
В этих ранних главах разработка наших программ имела явно восходящий характер. В случае с синтаксическим анализом выражений, например, мы начали с самых низкоуровневых конструкций, индивидуальных констант и переменных и прошли свой путь до более сложных выражений.
Большинство людей считают, что нисходящий способ разработки лучше, чем восходящий. Я тоже так думаю, но способ, который мы использовали, казался естественно достаточным для тех вещей, которые мы анализировали.
Тем не менее вы не должны думать, что последовательный подход, который мы применяли во всех этих главах, является принципиально восходящим. В этой главе я хотел бы показать вам, что этот подход может работать точно также, когда применяется сверху вниз... может быть даже лучше. Мы рассмотрим языки типа C и Pascal и увидим как могут быть построены законченные компиляторы начиная сверху.
В следующей главе мы применим ту же самую методику для создания законченного транслятора подмножества языка KISS, который я буду называть TINY. Но одна из моих целей в этой серии состоит в том, чтобы вы не только могли увидеть как работает компилятор для TINY или KISS, но чтобы вы также могли разрабатывать и создавать компиляторы своих собственных языков. Примеры Си и Паскаля помогут вам в этом. Одна вещь, которую я хотел чтобы вы увидели, состоит в том, что естественная структура компилятора очень сильно зависит от транслируемого языка, поэтому простота и легкость конструирования компилятора очень сильно зависит от того, позволите ли вы языку определять структуру программы.
Немного сложнее получить полный компилятор C или Pascal, да мы и не будем. Но мы можем расчистить верхние уровни так, чтобы вы увидели как это делается.
Давайте начнем.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
«Магнит сверху», поднимающий средний чек
«Магнит сверху», поднимающий средний чек В интернет-магазинах можно хорошо простимулировать увеличение средней суммы покупки за счет использования денежных планок, при «пробитии» которых покупатель будет получать дополнительную скидку.Например, при покупке на сумму
ТЕХНОЛОГИИ:World: вид сверху
ТЕХНОЛОГИИ:World: вид сверху Сервисы Google Maps и Google Moon, а также программа Google Earth стали в последнее время самыми популярными источниками изображений земной и лунной поверхностей, снятых со спутника. Благодаря тому, что компания Google открыла API Google Maps, ее сервис стал стандартом
4.3. Создание трехмерной модели и построение видов сверху и слева детали
4.3. Создание трехмерной модели и построение видов сверху и слева детали На рис. 4.18 представлены исходные данные и решение одного из вариантов задания 3. Так же как и в предыдущем задании, необходимые изображения строятся в сетке с оптимальным шагом, после чего наносятся
Проектирование сверху вниз: общая оценка
Проектирование сверху вниз: общая оценка Проведенное обсуждение функционального проектирования сверху вниз показывает, что этот метод плохо приспособлен для разработки важных систем. Он остается полезной парадигмой для небольших программ и отдельных алгоритмов, он
То же самое и два сверху
То же самое и два сверху Противоборство двух конкурирующих форматов оптодисков следующего поколения, Blu-ray и HD-DVD, порой очень напоминает партию в покер. Особенно в тех вопросах, которые касаются защиты контента от копирования. Здесь противники точно так же до последнего
ПИСЬМОНОСЕЦ: Шкаф, правое отделение, 2-я полка сверху, за ползунками
ПИСЬМОНОСЕЦ: Шкаф, правое отделение, 2-я полка сверху, за ползунками Автор: Илья Щуров VoyagerУважаемая «Компьютерра»! Родилась недавно у меня одна идея, подстегнутая попытками не пропустить очередной номер любимого журнала в киоске. Киоскерши постоянно меняются, со всеми не
Дмитрий Вибе: Мы сверху Дмитрий Вибе
Дмитрий Вибе: Мы сверху Дмитрий Вибе Опубликовано 17 февраля 2012 года Предсказание пересечения Солнцем галактического экватора заключает в себе сразу три неявных предположения: что у Галактики есть экватор, что Солнце и Солнечная система его