Реферат: Построение блок схем алгоритмов. Алгоритмические языки высокого уровня



Рис. 1. Упрощенная модель компилятора.


ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР.

Исходная программа на языке высокого уровня (ЯВУ), представляет собой цепочку символов, образуемую последовательным сцеплением всех строк программы. Среди допустимых для языка символов всегда выделя­ют несколько, так называемых,символов-разделителей, благодаря кото­рым предложения исходной программы разбиваются на отдельные слова. Такие слова в теории компиляции называютсялексемами. Например, предложение (оператор)

for i:=1 to n do Writeln(i) ;

будет разбито на лексемы

for, i, :=, 1, to, n, do, Writeln, (, i, ), ;.

Здесь в качестве разделителя используется символ «пробел». Однако можно заметить, что между некоторыми лексемами пробел не стоит. Это связано с тем, что эти лексемы сами являются разделителями и поэтому для отделения их от других лексем специальные символы-разделители использовать не обязательно, хотя и допустимо. Например, то же самое предложение без изменения смысла можно было бы записать так

fox i := 1 to n do Writeln ( i ) ;


СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР.

Синтаксический анализатор на основе синтаксических правил грамматики языка проверяет корректность записи предложений програм­мы и переводит последовательность лексем в последовательность внут­ренних кодов компилятора. Эта последовательность уже отражает порядок действий, которые должен выполнить компьютер, но еще не является окончательным машинным кодом. В теории компиляции разработано не­сколько разновидностей внутренних кодов компилятора (триады, тетра­ды, ПОЛИЗ, деревья, атрибутированные деревья, р-код), однако их рас­смотрение выходит за рамки упрощенной модели.

ГЕНЕРАТОР КОДА.

Генератор кода осуществляет перевод внутреннего кода компиля­тора в окончательный машинный код компьютера.

ТАБЛИЦЫ.

В процессе работы все рассмотренные выше блоки компилятора обращаются к общему наборутаблиц, куда помещается как постоянная для трансляции всех программ информация (например, таблица зарезер­вированных слов), так и информация, индивидуальная для каждой про­граммы (например, таблицы идентификаторов, литералов и др.).

Языки высокого уровня.

Язык высокого уровня состоит из алфавита и ключевых слова, правил написания идентификаторов, а также особенности построе­ния программ.

Алфавит языка.

Рассматриваемые нами языки программирования, имеют сходный алфавит — набор символов, разрешенных к использова­нию и воспринимаемых компилятором. В алфавит языка входят:

Латинские строчные и прописные буквы:

A,B,…,Z и a,b,…,z

Цифры от 0 до 9.

Символ подчеркивания «_» (код ASCII номер 95).

Из этих символов (и только из них!) конструируются идентифика­торы — имена типов, переменных, констант, процедур, функций и модулей, а также меток переходов. Имя может состоять из любого числа перечисленных выше символов, но должно начинаться с буквы, или символа «_» например:

IX Char Var My_Int_Var C_Dd16_32m int _L

Прописные и строчные буквы не различаются на языках Pascal и Delphi: идентифи­каторы FILENAME и filename — это одно и тоже. Но на языке С, С++ прописные и строчные буквы различаются, поэтому приведенные идентификаторы – это два различных идентификатора. Длина имен формально не ограничена, но различаются в них – «лишь» первые 32–63 символа (остальные игнорируются [зависит от установок в компиляторе]).


Символ «пробел» (код 32). Пробел является разделителем в языках. Если между двумя буквами имени или ключевого слова стоит пробел, то две буквы будут считаться принад­лежащими разным именам (словам). Пробелы отделяют ключевые слова от имен. Количество пробелов не является значащим. Там, где можно поставить один пробел, можно поставить их сколько угодно. Например, выражения


С=2+2; и С = 2 + 2 ; С:=2+2; С := 2+2;

для компиляторов эквивалентны.

К-во Просмотров: 371
Бесплатно скачать Реферат: Построение блок схем алгоритмов. Алгоритмические языки высокого уровня