Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые проекты / курса не мои / ПЗ по СПО-юджен / пояснительная записка.doc
Скачиваний:
70
Добавлен:
02.05.2014
Размер:
546 Кб
Скачать

1.4 Упорядоченный список

Метод организации таблицы идентификаторов, в котором при добавлении надо перестраивать весь список, т.е. упорядочивать его согласно некоторому условию.

В этом методе применяется бинарный или логарифмический способ поиска элементов. Алгоритм этого поиска заключается в следующем: искомый символ сравнивается с элементом (N+1)/2 в середине таблицы; если этот элемент не является искомым, то мы должны просмотреть только блок элементов, пронумерованных от 1 до (N+1)/2 – 1, или блок элементов от (N+1)/2 + 1 до N в зависимости от того, меньше или больше искомый элемент того, с которым его сравнивали. Затем процесс повторяется с блоком в два раз меньшего размера. Так продолжается до тех пор, пока либо не будет найден искомый элемент, либо алгоритм не дойдет до очередного блока.

Так как на каждом шаге число элементов, которые могут содержать искомый элемент, сокращается в 2 раза, максимальное число сравнений равно 1+log2(N).

Недостатком данного метода в том, что для поиска требуется упорядочивание таблицы идентификаторов, следовательно, время заполнения будет зависеть от числа добавляемых элементов.

Блок-схемы добавления и поиска элемента в упорядоченном списке представлены на рис. 3 и рис. 4.

Рис. 3. Блок-схема алгоритма добавления элемента в упорядоченный список

min(начало блока элементов)=1;

max(конец блока элементов)=N;

max=( max-min)/2-1

Нет

Да

Да

Нет

min=( max-min)/2+1

Рис. 4 Блок-схема алгоритма поиска элемента в упорядоченном списке

1.5 Результаты

Полученные результаты (рис. 5) говорят о том, что при поиске в методе хеш-адресации с рехешированием количество операций сравнения и среднее число сравнений меньше, чем при упорядоченном списке. А так как чаще всего компилятору приходится искать идентификатор, то, следовательно, метод хеш-адресации с рехешированием более эффективен.

Рис. 5 Экранная форма организации таблиц идентификаторов

2. Проектирование лексического анализатора

2.1 Исходные данные

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

Входной язык содержит:

  • операторы цикла “do” и “while”;

  • идентификаторы;

  • круглые открывающиеся и закрывающиеся скобки;

  • операторы сравнения “<”, “>”, “=”;

  • знак присваивания “:=” ;

  • составные операторы “begin” и “end”;

  • условные операторы “if”, “then”, “else” и “endif”;

  • ключевые слова начала и конца программы “prog” и “end.”;

  • разделяющий знак “;”.

  • логические операторы “not”, “and” и “or”;

  • арифметические операции сложения, вычитания, умножения и деления;

  • комментарии любой длины в фигурных скобках;

  • константы в шестнадцатеричной форме.

Соседние файлы в папке ПЗ по СПО-юджен