UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75855
останнє поновлення: 2016-12-09
за 7 днів додано 12

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

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

Українські рефератиРусские рефератыКниги
НазваЧитання лексем виразу (реферат)
Авторdimich
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1318
Скачало269
Опис
ЗАКАЧКА
Замовити оригінальну роботу

Реферат на тему:

 

Читання лексем виразу

 

Вираз є послідовністю лексичних одиниць (лексем) чотирьох різновидів:

сталі, імена (позначення функцій), знаки операцій та дужки. Виділення

лексем із виразу називається його лексичним аналізом. Лексеми

виділяються в ході побудови внутрішнього подання виразу багаторазовим

розв'язанням задачі добування чергової лексеми виразу.

 

Тут ми представимо розробку модуля, що забезпечує все необхідне для

добування лексем. Створюючи цей модуль, ми повністю відділяємо обробку

лексем виразу від їх добування. Якщо колись нам доведеться міняти

добування лексем, ми внесемо зміни лише в цей модуль.

 

1. Алгоритм добування лексеми

 

Розв'язання задачі добування чергової лексеми буде описано функцією

getlx. За її виконання обчислюється ознака того, чи є ще лексема у

вхідній послідовності символів, і за її наявності вона присвоюється

параметру-змінній функції. Помістимо функцію getlx і допоміжні для неї

засоби в модуль Glx.

 

Алгоритм добування лексеми має такий загальний вигляд:

 

відшукати перший символ лексеми;

 

if відшукали

 

then

 

прочитати символи лексеми та

 

створити її подання

 

else

 

зафіксувати відсутність лексеми.

 

2. Модуль розпізнавання лексем

 

У цьому модулі треба означити все необхідне для читання лексем. За

межами модуля використовуються тип st8 імен, типи лексем Tlx та їх

різновидів Ttlx, а також функція getlx. Означення цих типів та заголовок

функції мають бути в інтерфейсному розділі модуля.

 

У розділі реалізації означимо необхідні сталі, а також масив Namf, що

зберігає множину імен функцій. Означимо змінні Bcon, Bnam, Bops, Bpar та

Blex для зберігання множин символів, якими починаються лексеми

відповідних різновидів, та їх об'єднання. Ініціалізацію всіх цих змінних

задає процедура glxinit, виклик якої записується в розділі ініціалізації

модуля. Останньою в розділі реалізації записується основна функція

getlx, а перед нею – допоміжні для неї підпрограми та інші означення.

 

Отже, модуль Glx, записаний мовою Турбо Паскаль, має такий загальний

вигляд:

 

Unit Glx ( input, output );

 

Interface

 

type st8=string[8];

 

Ttlx = (con, nam, ops, par, err);

 

Tlx = record

 

case stl : Ttlx of

 

con : (numb : real);

 

nam : (name : st8 );

 

ops : (sig : char);

 

par : (prt : char);

 

err : (wrlx : st8 )

 

end;

 

function getlx ( var lx : Tlx ) : boolean;

 

Implementation

 

кількість імен функцій}

 

var Namf : array [ 1..fnum ] of st8;

 

Bcon, Bnam, Bops, Bpar, Blex : set of char;

 

procedure glxinit; … end;

 

… { Допоміжні для getlx означення}

 

function getlx; … end;

 

Begin

 

glxinit

 

End.

 

Одразу наведемо процедуру ініціалізації:

 

procedure glxinit;

 

begin

 

Bcon := [ '0'..'9' ]; Bnam := [ 'a'..'z' ];

 

Bops := [ '+', '*', '-', '/' ]; Bpar := [ '(', ')' ];

 

Blex := Bcon + Bnam + Bops + Bpar;

 

Namf[1] := 'sin'; Namf[2] := 'cos'

 

end;

 

3. Функція getlx

 

Будемо вважати, що вираз записано в тексті, між його лексемами можуть

бути пропуски в довільній кількості, і що вираз може займати кілька

рядків тексту. Інших уточнень поки що не робимо. Текст читається по

-----> Page:

0 [1] [2] [3]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ