Цель – изучить теоретические основы построения модулей транслятора. Получить практические навыки разработки системного программного обеспечения.
Определения и логические связи языковых процессоров.
Языковым процессором — называется программа по обработке данных, представленных во входном формате на одном из языков. Программа выполняет роль перекодировки входного формата в некоторый выходной набор данных. Такие программы разрабатываются на основе синтаксически ориентированных методов и в зависимости от входного и выходного формата данных подразделяются на следующие четыре типа:
• Компиляторы
• Интерпретаторы
• Ассемблеры
• Препроцессоры.
Компилятор — это такой языковый процессор, в котором входной формат данных — язык высокого уровня, а выходной формат — объектный код.
На рис. 1.1 приведены логические связи компиляторов. Сплошными стрелками показана передача управления, пунктирными – информационные связи. рис 1.1 Логические связи компилятора
Охарактеризуем каждый блок в отдельности и при этом определим сопутствующие понятия:
1. Исходный текст или программа поступает в компилятор на некотором входном языке первоначально в сканер или лексический анализатор (блок 1), который выполняет декомпозицию текста на токены(лексемы) или просто символы.
Токен (token – лексема ) – некоторая программная единица, которая характеризует определённые категории языка. Традиционно токенами являются идентификаторы, числовые константы, ключевые слова, знаки операций и т.д. В свою очередь токены состоят из литер. Понятие токена широко используется в иностранной литературе , например в [11]. В отечественных источниках вместо токена употребляют эквивалентное понятие – лексема [12]. Токен или лексема в общем случае является подмножеством множества терминальных символов, строгое определение которых будет приведено ниже.
Литера(литерал)— неделимая информационная единица, из которых набирается текст программы, в простом информационном понятии нформационное терминальное поле на клавиатуре компьютера или компьютерный алфавит ASCII и EBCDIC. Иначе говоря, это знаковые клавиши на клавиатуре терминала , иключая служебные и функциональные. Токены(лексемы) могут состоять из одной или более литер, более строгое математическое понятие этой категории будет приведено ниже.
Функция сканера — предать определённый внутренний код определённым объектам программного сегмента. Так, ключевые слова в языке Си имеют один внутренний ключевой код, разделители – другой, числовые константы – третий и так далее. Сканер анализирует лишь алфавит грамматики языка.
2.Синтаксис — синтаксический анализатор проводит анализ на соответствие программы на входном языке грамматическим правилам этого языка и