Введение Основа Синтаксический анализ выражений Начало Одиночные цифры Выражения с двумя цифрами Общая форма выражения Использование стека Умножение и деление Круглые скобки Унарный минус Слово об оптимизации Снова выражения Введение Переменные Функции Подробнее об обработке ошибок Присваивание Многосимвольные токены Пробелы Интерпретаторы Введение Интерпретатор Немного философии Управляющие конструкции Введение План Немного основ Оператор IF Оператор WHILE Оператор LOOP Цикл FOR Оператор DO Оператор BREAK Заключение Булевы выражения Введение План Грамматика Операторы отношений Исправление грамматики Синтаксический анализатор Объединение с управляющими конструкциями Добавление присваиваний Лексический анализ Введение Лексический анализ Конечные автоматы и альтернативы Эксперименты по сканированию Пробел Конечные автоматы Новые строки Операторы Списки, запятые и командные строки Становится интересней Возвращение символа Распределенные сканеры против централизованных Объединение сканера и парсера Заключение Немного философии Введение Дорога домой Почему это так просто? Здесь нет ничего сложного! Заключение Вид сверху Введение Верхний уровень Структура Паскаля Расширение Объявления Структура Си Представление «TINY» Введение Подготовка Объявления Объявления и идентификаторы Инициализаторы Таблица идентификаторов Выполнимые утверждения Булева логика Управляющие структуры Лексический анализ Многосимвольные имена переменных Снова операторы отношений Ввод/Вывод Заключение Пересмотр лексического анализа Введение Предпосылка Проблема Решение Исправление компилятора Заключение Разное Введение Точки с запятой Синтаксический сахар Работа с точками с запятой Компромисс Комментарии Односимвольные разделители Многосимвольные разделители Односторонние комментарии Заключение Процедуры Введение Последнее отклонение Основы Основа для экспериментов Объявление процедуры Вызов процедуры Передача параметров Семантика параметров Передача по значению Что неправильно? Передача по ссылке Локальные переменные Заключение Типы Введение Что будет дальше? Таблица идентификаторов Добавление записей Распределение памяти Объявление типов Присваивания Трусливый выход Более приемлемое решение Литеральные аргументы Аддитивные выражения Почему так много процедур? Мультипликативные выражения Умножение Деление Завершение Приводить или не приводить Заключение Назад в будущее Введение Новое начало, старое направление Начинаем заново? Модуль INPUT Модуль OUTPUT Модуль ERROR Лексический и синтаксический анализ Модуль SCANNER Решения, решения Синтаксический анализ Ссылки Конструирование модулей Введение Совсем как классический? Расширение синтаксического анализатора Термы и выражения Присваивания Булева алгебра Булево «AND»
Начало Если вы прочитали введение, то вы уже в курсе дела. Вы также скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы готовы.
Целью этой главы является обучение синтаксическому анализу и трансляции математических выражений. В результате мы хотели бы видеть серию команд на ассемблере, выполняющую необходимые действия. Выражение – правая сторона уравнения, например:
x = 2*y + 3/(4*z)
В самом начале я буду двигаться очень маленькими шагами для того, чтобы начинающие из вас совсем не заблудились. Вы также получите несколько хороших уроков, которые хорошо послужат нам позднее. Для более опытных читателей: потерпите. Скоро мы двинемся вперед.