Учебное пособие: Разработка в структурно логической схемы микропроцессора
Цель:
1. получения эффективного объектного кода программы.
2. Минимизация времени компилирования программы.
3. Разработка небольших объектных программ.
4. Разработка компилятора минимального размера.
5. Создания компилятора обладающий широкими возможностями обнаружения и исправления ошибки.
6. Обеспечение надежности компилятора.
Существует и другой подход, который называется интерпретация, представителем является Basic. Интерпретация состоит в том, что вместо трансляции в машинный код и последующее выполнение программа сначала по операторно транслируется в промежуточный язык, а затем транслируется и выполняется каждый оператор промежуточного языка.
Передать сообщение об ошибках пользователю, часто бывает легче в терминах исходной программы.
Версия программы на языке не редко оказывается компактней, чем машинный код, выдаваемый компилятор.
Изменение части программы не требует перекомпиляции всей программы.
Недостатки:
Медленность работы.
Общая схема обработки языков высокого уровня
Общая структура компилятора
Исходная программа ЯВУ
Лекция (1_11_07)
Лексический анализатор – представляет собой первую фазу компилятора. Его основная задача состоит в чтении новых символов и выдачи последовательности лексем. Замена объектов переменной длины символами фиксированной длины. С теоретической точки зрения лексический анализатор не является обязательной частью компилятора. Все его функции могут выполнятся на этапе синтаксического разбора, поскольку полностью регламентированы синтаксисом входного языка. Однако существует несколько причин по которым состав практически всех компиляторов включает лексический анализ.
Применения лексического анализатора упрощает работу с текстом программы, за счет удаления комментариев и пробелов, то есть символов не несущих смысловой нагрузки.
Увеличения эффективности компилятора. Поскольку на чтение исходной программы и разбор ее на лексемы тратится много времени, специальные технологии утилизации и обработки лексем могут существенно повысить производительность компилятора.
Увеличения переносимости компилятора.
Лексема – минимальная единица языка. Исходная программа на ЯВУ представляет собой цепочку образуя последовательность всех листов программы. Язык паскаль использует алфавит, который использует подмножество наборов символа таблицы кодов.
Специальные символы.
Управляющие символы. Некоторые символы расширенного набора кодов включают буквы и кириллицы. Они используются в строках, но не применяются для построения лексем. Среди допустимых для всех языков символов разделителей, благодаря предложения исходной программы разделяются на отдельные слова. В паскале можно выделить несколько категорий лексем:
Минимальная значимая единица текста программ
Идентификаторы – последовательность букв и цифр. Стандартными, пред определенными идентификаторами в языке паскаль является: имена встроенных процедур и функций.
Метки – числовые и символьные и отделяются двоеточием.
Числа. Число различают целое - десятичное, вещественное,
Строки – последовательность символов из расширенного набора кодов, заключенная в кавычках.
Синтаксический анализатор
Проверяет является ли программа грамматически правильной, иначе говоря удовлетворяет ли она законам языка программирования, на котором она написана. Синтаксис языка затрагивает только форму языка. Если предложения удовлетворяет нормальным правилам, оно не зависимо от его значения рассматривается как синтаксически правильное.