
- •Автоматы магазинного типа
- •Алфавит
- •Атрибутивные грамматики
- •Блок сканирования
- •Бэкуса–Наура форма (бнф)
- •Восходящий синтаксический анализ
- •Генератор кода машинных команд
- •Грамматика
- •Граф распознавания.
- •Двухпроходной компилятор
- •Детерминированный конечный автомат
- •Детерминированный метод разбора
- •Диагностика об ошибках при трансляции
- •Интерпретатор
- •Компилятор с однопроходной структурой
- •Конвертор
- •Конечный автомат
- •Регулярные выражения
- •Семантика языка
- •Синтаксис языка
- •Синтаксическая диаграмма
- •Синтаксический анализатор
- •Синтаксический граф
- •Состав компилятора
- •Терминалы
- •Транслятор
- •Трехпроходный транслятор
- •Фаза оптимизации
- •Четверка
Регулярные выражения
В алфавите А к регулярным выражениям относятся следующие:
1. Элемент А (или пустая строка).
Если P и Q – регулярные выражения, то регулярными будут также и
выражения
2. PQ (Q следует за P)
3. P | Q (P или Q)
4. P* (нуль или более экземпляров P)
В алфавите {a, b, c}
ab* | ca* – регулярное выражение, которое описывает язык, включающий
следующие строки (помимо прочих):
abb c caaa ab ca
Пример регулярного выражения. Регулярное выражение,
описывающее идентификатор, имеет вид:
L ( L | D )*, где L обозначает букву, D – цифру.
У регулярных выражений есть существенные ограничения. Например,
регулярное выражение не может задавать шаблоны скобок произвольной
длины, и, следовательно, их нельзя генерировать с помощью грамматики
типа 3.
Семантика языка
Семантика задает значение всем предложениям языка.
Синтаксис языка
Синтаксис – множество правил, которые задают
множество формально правильных предложений. Синтаксис для конечного
языка (состоящего из конечного числа строк) можно специфицировать, задав
список строк.
Синтаксическая диаграмма
Синтаксическая диаграмма — это направленный граф с одним входным ребром и одним выходным ребром и помеченными вершинами. Синтаксическая диаграмма задаёт язык. Цепочка пометок при вершинах на любом пути от входного ребра к выходному — это цепочка языка, задаваемого синтаксической диаграммой. Поэтому можно считать, что синтаксическая диаграмма — это одна из форм порождающей грамматики автоматных языков
Синтаксический анализатор
Программа, выполняющая синтаксический анализ
синтакси́ческий ана́лиз — это процесс сопоставления линейной последовательности лексем (слов, токенов) языка с его формальной грамматикой.
Синтаксический граф
Синтаксический граф является эквивалентным представлением
грамматики языка; его можно использовать вместо множества порождающих
правил БНФ. Это очень удобная форма, и во многих (если не в большинстве)
случаев она предпочтительнее БНФ.
Состав компилятора
В состав любого компилятора входят три
основных компонента:
- лексический анализатор (блок сканирования);
- синтаксический анализатор;
- генератор кода машинных команд.
Таблица символов
Например, во многих языках идентификаторы не
могут применяться, если они не описаны, также имеются ограничения в
отношении способов употребления в программе значений различных типов.
Для запоминания описанных идентификаторов и их типов большинство
компиляторов пользуется таблицей символов.
Терминалы
Символы (терминалы), из них строятся цепочки порождаемые грамматикой.
Транслятор
Трансля́тор — программа или техническое средство, выполняющее трансляцию программы.[1][2]
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.[1]
Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т. д.[1]
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.