
2.11. Интерпретаторы
Интерпретатор – это программа, которая непосредственно выполняет код исходной программы.
Его преимущество перед компилятором состоит в том, что не нужно последовательно вызывать компилятор, компоновщик, загрузчик и т. д.
Интерпретаторы традиционно не пытаются что – либо оптимизировать.
Как правило, интерпретатор переводит исходный код программы в код некой абстрактной машины (см. рис.).
Рис. Структура интерпретатора
Если предположить, что машинный код компьютера совпадает с выработанным интерпретатором абстрактным кодом, то интерпретатор превратится в компилятор. Поэтому в действительности провести различие между интерпретатором и компилятором очень трудно установить.
История создания интерпретатора связана с разработкой Pascal – компилятора для получения машинного кода ЭВМ CDC 6400. Никлаус Вирт создал компилятор, который вырабатывал код, названный Р – кодом, для абстрактной стековой машины. Написав программы по преобразованию исходного модуля в Р – коды в машинные коды конкретной машины, им были получены соответственно интерпретатор и компилятор для языка Pascal.
Условная схема процесса выполнения программы в среде интерпретатора
Считается, что интерпретаторы легко писать, так как они не машинно-ориентированные.
3. Элементы лингвистического обеспечения.
Основными элементами лингвистического обеспечения, необходимого для построения языков программирования, являются синтаксис, семантика, данные, операторы присваивания, контроль соответствия типов, управляющие операторы, подпрограммы и модули. Лингвистика – наука о языке (Ожегов).
3.1. Синтаксис
Лексика – словарный состав (набор) языка, который используется при информационном общении.
Синтаксис языка – это набор или свод правил, которые определяют, какие последовательности символов считаются допустимыми выражениями в языке. Применительно к языку программирования – это свод законов о построении предложений из данного набора слов.
Синтаксис задается с помощью формальной нотации. Самая распространенная формальная нотация – это расширенная форма Бекуса-Наура (РФБН). Синтаксис в РФБН начинается с верхнего уровня и, после применения декомпозиции объекта, достигает уровня отдельного символа. Например, в языке С синтаксис условного оператора if задается правилом:
If (выражение) оператор [else оператор];
Имена “выражение и оператор ” представляют синтаксические категории. Символы : if, else : , - фактические символы, которые должны появиться при использовании оператора if. else – оператор, указанный в квадратных скобках [ ], не является обязательным.
Правила синтаксиса легче изучить на диаграмме:
Рис. Синтаксическая диаграмма
В кругах находятся фактические символы, а в прямоугольниках – синтаксические категории, которые имеют собственные диаграммы. Последовательность символов, получаемых при последовательном прохождении пути на диаграммах, является программой.