Аналіз та розрахунок дугоподібних вірусів
Тести та шпаргалки

Аналіз та розрахунок дугоподібних вірусів


Анотація на тему:

Аналіз та розрахунок дугоподібних вірусів

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

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

{ Е, Т, Ф, А, C, д, Н },

{ Е Т {+Т | —Т }, Т Ф {*Ф | /Ф }, Ф (Е) | C | А,

C Н (Е), Н ‘гріх’ | ‘cos’,

А д { д } [ . { D } ], д 0 | … | 9 },

Е ).

імена АC, Н є скорочені фрази»Аритмічна константа», «Cвсі функції», «Нame of function» очевидно означає «Вона стала арифметикою», «Натиснення функції», «Ім’я функція».

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

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

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

функція F : справжній

почати

якщо ( lx.lxt = пар ) і ( lx.prt=»(» ) потім

почати

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

якщо islx і ( lx.lxt = пар ) і (lx.prt=»)» )

потім islx := getlx ( lx )

інше почнеться помилка; F := 1 кінець

кінець

інше

якщо lx.lxt = кон потім

почати F := lx.numb; islx := getlx ( lx ) кінець

інше

якщо lx.lxt = нам потім F := C

інше почнеться помилка; F := 1 кінець

кінець

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

функція C : справжній

вар lx1 : Tlx; v : справжній

почати

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

якщо islx і ( lx.lxt = пар ) і ( lx.prt=»(» ) потім

почати

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

якщо islx і ( lx.lxt = пар ) і (lx.prt=»)» )

потім islx := getlx ( lx )

інше почнеться помилка; C := 1 кінець;

якщо в порядку потім

якщо lx1.name=»sin» потім C := sin ( v )

інше C := cos ( v )

інше почнеться помилка; C := 1 кінець

кінець

інше почнеться помилка; C := 1 кінець

кінець

Функція E задає обчислення viraz, vivid z Е:

функція Е: справжня

вар lx1 : Tlx; v : справжній

почати

v := T;

поки в порядку і ( lx.lxt = ops )

і (lx.sig в [‘+’, ‘-‘] ) робити

почати

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

випадок lx1.sig з

‘+’ : v := v + T;

‘-‘ : v := v — T

кінець

кінець;

якщо в порядку потім E := v інше E := 1

кінець

Функція Т є доповненням до вірусу, оскільки вона може мати структуру, подібну до функції Е, необхідна для самостійного розвитку. Основна програма схожа на програму Aexan:

програма aexval( вхід, вихід);

використовує Інбуф, Glx

вар islx, ok : boolean;

v : реальний lx : Tlx;

процедури помилка;

почати добре := помилковий; islx := помилковий кінець;

функція Е: справжня вперед;

функція C: справжня… кінець;

функція Ф: справжня… кінець;

функція Т: справжня… кінець;

функція E; {назва скорочень} … кінець;

почати

добре := правда;

v := 0;

islx := getlx ( lx );

v := E;

якщо в порядку і ні islx потім написати ( v )

інше writeln (‘***помилка***’)

кінець.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *