Глава 8 Разработка программ
Глава 8
Разработка программ
Первоначально системе UNIX предназначалась роль среды для разработки программ. В настоящей главе мы обсудим некоторые применяемые с этой целью программные средства на примере солидной программы — интерпретатора языка программирования, сравнимого по мощности с Бейсиком. Мы выбрали реализацию языка, потому что возникающие здесь проблемы характерны для больших программ. Более того, многие программы полезно рассматривать как языковые процессоры, преобразующие входной поток определенной структуры в последовательность действий и выходной поток, т. е. мы хотим продемонстрировать вам программные средства разработки языков.
В частности, вашему вниманию предлагаются следующие программы:
• yacc — генератор синтаксических анализаторов; программа, которая по описанию грамматики языка порождает анализатор;
• make — программа, определяющая процесс компиляции сложных программ и управляющая им;
• lex — программа, аналогичная yacc, но создающая лексические анализаторы.
Мы покажем вам приемы разработки программ в несколько этапов — от простого к сложному. Ниже описаны шесть этапов реализации языка, каждый из которых поучителен уже сам по себе. Эти этапы отражают реальный процесс написания программы:
1. Создание калькулятора с четырьмя действиями: +, -, *, / (и со скобками). Калькулятор выполняет операции над числами с плавающей точкой, каждая строка состоит из одного выражения; полученное значение печатается сразу.
2. Добавление переменных с именами от а до z. В этой версии есть также унарный минус и некоторые средства защиты от ошибок.
3. Добавление переменных с именами произвольной длины, встроенных функций для sin, exp и т.п., полезных констант типа ? (обозначается как PI) и операции возведения в степень.
4. Внесение внутренних изменений: оператор вычисляется не непосредственно, а порождает код, который впоследствии интерпретируется. Новые возможности не добавляются, но подготавливается переход к п. 5.
5. Добавление структур управления: if-else и while — группирование операторов с помощью и и операции отношений типа >, <= и т.п.
6. Добавление рекурсивных процедур и функций с параметрами, а также операторов для ввода-вывода строк и чисел.
Окончательная версия языка описана в гл. 9 как пример программных средств подготовки документации системы UNIX. В приложении 2 приводится справочное руководство по калькулятору.
Эта глава довольно объемная, поскольку в ней детально рассматривается, как правильно написать нетривиальную программу. Предполагается, что вы знаете язык Си и имеете под рукой экземпляр справочного руководства по системе UNIX (том 2), поскольку просто невозможно объяснить все нюансы. Будьте готовы к тому, что вам придется прочитать главу несколько раз. Окончательная версия полностью представлена в приложении 3. Заметим, кстати, что мы долго спорили из-за имени языка, но так и не придумали подходящее. Остановились на hoc, что означает "калькулятор высокого уровня" (high level calculator).
Его версии соответственно называются hoc1, hoc2 и т.д.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Глава 3. Разработка сайтов в программе CatsHtml
Глава 3. Разработка сайтов в программе CatsHtml В данной главе мы расскажем о том, как заниматься разработкой и администрированием веб-сайтов с помощью бесплатной программы CatsHtml. Этот HTML-редактор создан отечественными разработчиками, и распространяется бесплатно.
Глава 20 Заплаты, разработка и сообщество
Глава 20 Заплаты, разработка и сообщество Одно из самых больших преимуществ операционной системы Linux — это связанное с ней большое сообщество пользователей и разработчиков. Сообщество предоставляет множество глаз для проверки кода и множество пользователей для
Глава 10 Разработка СОМ-объектов с помощью языков сценариев
Глава 10 Разработка СОМ-объектов с помощью языков сценариев Во всех сценариях WSH, которые мы рассматривали ранее, создавались экземпляры внешних СОМ-объектов, являющихся серверами автоматизации, после чего мы не задумываясь использовали свойства и методы этих объектов.
Глава 4 Разработка шахты
Глава 4 Разработка шахты Играя в Minecraft, вы, вероятно, потратили несколько часов, раскапывая подземелья и пещеры, добыли много угля, железа и даже алмазов и красного камня. Но чтобы получить эти сокровища вам пришлось потратить много времени, особенно если вы не нашли
Глава 23 Разработка графического приложения: библиотека GTK+
Глава 23 Разработка графического приложения: библиотека GTK+ Сейчас мы поговорим о создании графического интерфейса для вашей Linux-программы. Как вы знаете, средствами одного С нормальный GUI не построишь, тем более что привычный пользователь Windows очень требователен не просто
Глава 13 Разработка чертежей в среде AutoCAD
Глава 13 Разработка чертежей в среде AutoCAD Существует много способов разработки чертежей в среде AutoCAD. Квалифицированные пользователи, обладающие большим опытом работы, имеют в своем багаже собственные подходы к разработке конструкторской документации. Вашему вниманию
10. Классы памяти и разработка программ
10. Классы памяти и разработка программ ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕКЛАССЫ ПАМЯТИФУНКЦИЯ ПОЛУЧЕНИЯ СЛУЧАЙНЫХ ЧИСЕЛПРОВЕРКА ОШИБОКМОДУЛЬНОЕ
Глава 4 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual C++ 3.0
Глава 4 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual C++ 3.0 По сравнению с eVB язык C++, безусловно, предоставляет разработчику больше возможностей. Несмотря на то что в eVB можно было сделать почти все, что можно сделать в eVC (так в этой главе будет называться eMbedded Visual C++
Глава 5 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual С++ 4.0
Глава 5 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual С++ 4.0 Поскольку все сказанное о среде VC 3.0 относится в полной мере и к eVC 4.0, да и сами среды похожи друг на друга как близнецы, нет нужды снова описывать среду разработки. Использовать eVC 4.0 необходимо, если
Глава 6 NET Compact Framework и разработка программ для Pocket PC в Microsoft Visual Studio.NET 2003
Глава 6 NET Compact Framework и разработка программ для Pocket PC в Microsoft Visual Studio.NET 2003 Не покривлю душой, если скажу, что мы переходим к одной из самых интересных частей книги. На самом деле, еще совсем недавно технология. NET вызывала у меня вполне законные опасения. Уж очень это все было
Глава 13 Разработка чертежей в среде AutoCAD
Глава 13 Разработка чертежей в среде AutoCAD Существует много способов разработки чертежей в среде AutoCAD. Квалифицированные пользователи, обладающие большим опытом работы, имеют в своем багаже собственные подходы к разработке конструкторской документации. Вашему вниманию
ГЛАВА 29. Разработка модулей PSQL.
ГЛАВА 29. Разработка модулей PSQL. Хранимые процедуры и триггеры объявляются при помощи операторов CREATE PROCEDURE и CREATE TRIGGER соответственно. Каждый из этих сложных операторов состоит из заголовка и
Глава 13 Разработка чертежей в среде AutoCAD
Глава 13 Разработка чертежей в среде AutoCAD Существует много способов разработки чертежей в среде AutoCAD. Квалифицированные пользователи, обладающие большим опытом работы, имеют в своем багаже собственные подходы к разработке конструкторской документации. Вашему вниманию
Глава 7 Разработка приложений
Глава 7 Разработка приложений Активация и деактивация формы Модель выполнения программ на карманном компьютере отличается от поведения программ, работающих на обычном персональном компьютере. Например, на мобильных компьютерах используется один экземпляр запущенной
Глава 7 Разработка баз данных в программе Access
Глава 7 Разработка баз данных в программе Access ? Урок 7.1. Знакомство с программой Access? Урок 7.2. Основные приемы работы с данными? Урок 7.3. Создание таблиц? Урок 7.4. Проектирование базы данных. Создание связей между таблицами? Урок 7.5. Запросы? Урок 7.6. Формы и отчетыAccess – это