Referat.me

Название: Аналіз та обчислення дужкових виразів

Вид работы: реферат

Рубрика: Астрономия

Размер файла: 18.42 Kb

Скачать файл: referat.me-4966.docx

Краткое описание работы: Реферат на тему: Аналіз та обчислення дужкових виразів У розділі 9 розглядалися дужкові арифметичні вирази, мова яких породжується розширеною LA(1)-граматикою

Аналіз та обчислення дужкових виразів

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

Аналіз та обчислення дужкових виразів


У розділі 9 розглядалися дужкові арифметичні вирази, мова яких породжується розширеною LA(1)-граматикою G 2 :

( { 0, … , 9, ., c, i, n, o, s, +, *, -, /, (, ) },

{ E , T , F , A , C , D , N },

{ E ® T { +T | -T }, T ® F { *F | /F }, F ® (E ) | C | A ,

C ® N (E ), N ® 'sin' | 'cos',

A ® D { D } [ . { D } ], D ® 0 | … | 9 },

E ).

Імена A , C, N є скороченнями фраз "A rithmetic constant", "C all of function", "N ame of function" відповідно, тобто "Арифметична стала", "Виклик функції", "Ім'я функції".

Побудуємо програму Aexval аналізу та обчислення арифметичних виразів на основі програми Aexan із попереднього підрозділу. Нехай вираз подається в кількох рядках, і ознакою кінця є порожній рядок. Читання лексем виразу задається модулями Glx та Inbuf, означеними в розділі 20. Замість функції getc добування наступного символу з програми Aexan використовується функція getlx добування наступної лексеми, а замість поточного символу ch – поточна лексема lx типу Tlx. Ознака наявності лексеми, що повертається з функції getlx, присвоюється бульовій змінній islx.

Підпрограми для нетерміналів A , N тут не створюються, оскільки аналіз лексем, позначених ними, уже задаєно в модулі Glx. Кожна з процедур E, T, F перетворюється на функцію обчислення тієї частини виразу, яка аналізується при виконанні її виклику. Побудуємо їх таким чином, щоб за помилкового виразу з них поверталося значення 1.

Згідно з продукціями граматики G 2 , функція F обчислення множника у виразі має такий вигляд:

function F : real;

begin

if ( lx.lxt = par ) and ( lx.prt = '(' ) then

begin

islx := getlx ( lx ); F := E;

if islx and ( lx.lxt = par ) and ( lx.prt = ')' )

then islx := getlx ( lx )

else begin error; F := 1 end

end

else

if lx.lxt = con then

begin F := lx.numb; islx := getlx ( lx ) end

else

if lx.lxt = nam then F := C

else begin error; F := 1 end

end

Функція C задає обчислення значення, що має повернутися з указаного у виразі виклику функції sin чи cos:

function C : real;

var lx1 : Tlx; v : real;

begin

lx1 := lx; islx := getlx ( lx );

if islx and ( lx.lxt = par ) and ( lx.prt = '(' ) then

begin

islx := getlx ( lx ); v := E;

if islx and ( lx.lxt = par ) and ( lx.prt = ')' )

then islx := getlx ( lx )

else begin error; C := 1 end ;

if ok then

if lx1.name = 'sin' then C := sin ( v )

else C := cos ( v )

else begin error; C := 1 end

end

else begin error; C := 1 end

end

Функція E задає обчислення виразу, вивідного з E :

function E : real;

var lx1 : Tlx; v : real;

begin

v := T;

while ok and ( lx.lxt = ops )

and ( lx.sig in ['+', '-'] ) do

begin

lx1 := lx; islx := getlx ( lx );

case lx1.sig of

'+' : v := v + T;

'-' : v := v - T

end

end;

if ok then E := v else E := 1

end

Функцію T обчислення доданка у виразі, яка має аналогічну функції E структуру, залишаємо для самостійної розробки. Головна програма подібна до програми Aexan:

program Aexval ( input, output );

uses Inbuf, Glx

var islx, ok : boolean;

v : real; lx : Tlx;

procedure error;

begin ok := false ; islx := false end ;

function E : real; forward ;

function C : real; … end ;

function F : real; … end ;

function T : real; … end ;

function E; { скорочений заголовок } … end ;

begin

ok := true ;

v := 0;

islx := getlx ( lx );

v := E;

if ok and not islx then writeln ( v )

else writeln ( '***error***' )

end .

Похожие работы

  • Побудова алгоритму LA-аналізу

    Реферат на тему: Побудова алгоритму LA(1)-аналізу 1. Правила побудови Нехай ) – LA(1)-граматика без e -правил, можливо, розширена. Опишемо побудову програми синтаксичного аналізу слів мови

  • Паскаль рекурсивні означення та підпрограми

    1. Рекурсивні означення Часто кажуть, що рекурсивне означення – це коли щось означається з його ж допомогою. Фраза ця не зовсім точна, а вірніше, зовсім неточна. Кожне означення задає щось, і цим чимось є, як правило, об'єкти, що утворюють деяку множину.

  • Програмування основних алгоритмічних структур

    Тема. Програмування основних алгоритмічних структур. 1. Оператори присвоювання, вводу-виводу; запис лінійних алгоритмів. Практично кожна програма повинна виконувати такі дії: вводити вихідні дані, проводити опрацювання цих даних (як правило, обчислення) та виводити результати роботи. Для виконання цих дій використовуються оператори вводу, присвоювання та виводу.

  • Оператор присвоювання

    Реферат на тему: Оператор присвоювання В будь-якій мові програмування можна виділити чотири типи елементів, що використовуються при побудові описів програм:

  • Контекстно-вільні та LA-граматики

    Реферат на тему: Контекстно-вільні та LA(1)-граматики 1. Контекстно-вільні граматики Контекстно-вільною , або КВ-граматикою , називається граматика, в якій ліві частини всіх продукцій є нетерміналами. Зміст терміну "контекстно-вільна" полягає в тім, що застосування продукції

  • Про систему задач для вивчення інтеграла

    Система задач для вивчення первісної та інтеграла в навчальному посібнику (1) недостатньо досконала. Завдання тут в основному зводяться до обчислення площ фігур (№1022-1027, 1037-1042, 1081-1087) і інтеграла (1028-1036, 1071-1080), тобто, так як і в задачниках з математичного аналізу для втузів, мають тренувальний характер.

  • Застосування подвійних інтегралів до геометричних і фізичних задач Обчислення інтеграла Пуассон

    Пошукова робота на тему: Застосування подвійних інтегралів до геометричних і фізичних задач. Обчислення інтеграла Пуассона. План Застосування подвійних інтегралів до геометричних і фізичних задач

  • Мова Паскаль

    КОЛОМИЙСЬКЕ ВПУ-17 РЕФЕРАТ НА ТЕМУ: МОВА ПАСКАЛЬ Виконав: учень групи : №13 Гаврищук Ігор Юрович Викладач: Остапчук С.М. КОЛОМИЯ 2002р. ВСТУП Мова ПАСКАЛЬ, затвердженна в якості стандартної в 1979р.

  • Використання основних ф-цій Ознайомлення із табличним процесором Excel використання основних ф

    Лабораторна робота №2 Тема: Використання стандартних функцій Excel. Мета: Ознайомитися із використанням стандартних функцій в Excel. Одержати навички роботи з функціями і навчитися працювати із майстром функцій.

  • Інтегрування ірраціональних виразів

    Пошукова робота на тему: Інтегрування ірраціональних виразів. План Інтегрування деяких ірраціональних функцій Інтеграли від виразів Підстановки Чебишева