Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8_Vsi_razom.doc
Скачиваний:
5
Добавлен:
10.09.2019
Размер:
347.65 Кб
Скачать

19. Програмування сканера.

Відповідь:

Для побудови сканера будем використовувати скінченний автомат. До автомата пред'являються вимоги:

-він повинен формувати потік лексем

(Лексемами є роздільники або оператори, ключові слова, службові слова, ідентифікатори і константи.);

-повинен заносити розпізнані лексемив таблицю символів або імен.

Розглянемо спрощений розпізнавальний автомат:

D D

( S )->-( int )->-( S )

|

| L L

|->-( id )->-( S )

| ____

| | |

| / * \|/ | * /

|->-( sla )->-( com )->-( R )->-( end )->-( S )

| | /|\ /

| \|/ |_______/

| ( S )

|

| delim

|--->---( S )

|

| інакше

|---->---( err ) // (...) - слово описане кругом

D-цифра

L-буква

delim-розділювач

Стан:

int-розпізнавач числа

id-розпізнавач ідентифікатора

sla, com, R-розпізнавач коментарів

1)При переході в поч. стан іноді потрібно повернути символ вхідної послідовності назад інакше будем втрачати частину зчитаних лексем;

2)Автомат в такому вигляді нічого не вартий бо він не виконує нічого корисного. Його потрібно доповнити процедурною частиною. Процедурна частина відповідає за формування імен, які будуть заноситись в таблицю символів, за повернення зчитаного символу назад в потік, за інсталізацію і т. д.

Доповнення атомата процедурними частинами полягає в тому, що коли автомат здійснить перехід, повинна виникнути зв'язана з цим переходом одна чи декілька підпрограм

20. Таблиці символів, хеш-функції, хеш-адресація

При трансляції програми для кожного нового елемента в таблиці символів додається цей елемент, якщо його немає в таблиці. Найпростіше шукати елемент в пересортованій таблиці, і час пошуку елементів в таблиці рівний n/2. Якщо відсортувати елементи таблиці, то можна виконати алгоритм бінарного пошуку, в якому середнє число порівнянь – 1+log2n

Хеш функція — функція, що перетворює вхідні дані будь-якого (як правило, великого) розміру в дані фіксованого розміру.

Криптографічна хеш-функція повинна забезпечувати:

  • стійкість до колізій (два різні набори даних повинні мати різні результати перетворення);

  • необоротність (неможливість обчислити вхідні дані за результатом перетворення).

Хеш-функції також використовуються в деяких структурах даних — хеш таблицях і декартових деревах. Вимоги до хеш-функції в цьому разі інші:

  • добра перемішуваність даних;

  • швидкий алгоритм обчислення.

Хеш-адресація

Ідеальний варіант: при розпізнаванні ідентифікатора одразу визначити його адресу в таблиці

Хеш-адресація – це метод перетворення імені індекса ел. таблиці. Якщо таблиця має розмір N , то індексація від 0 до N-1 елементів. Хеш-ф-ію назвемо деяке перетворення імені в адресу

Найпростіший варіант хеш-ф-ії – взяти код першої літери як адресу таблиці. Ситуація, коли хеш-адреса для 2 імен різні коди, то все нормально, але якщо ні, то така ситуація називається- колізією. «Добра хеш-функція» - функція, яка розподіляє адреси імен по табл.. відносно рівномірно і колізії виникають не надто часто.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]