Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Трансляцiя у ПОЛIЗ арифметичних виразiв та iнтерпретацiя постфiксного коду

Автор:   •  Июль 31, 2022  •  Лабораторная работа  •  7,318 Слов (30 Страниц)  •  207 Просмотры

Страница 1 из 30

Лабораторна робота #4

Варіант #5

Трансляцiя у ПОЛIЗ арифметичних виразiв та iнтерпретацiя постфiксного коду

ВСТУП

Представлена мова програмування MP2 призначена слугувати навчальним прикладом для курсу, що має на метi вивчення основ трансляцiї. MP2 — iмперативна мова загального призначення.

1.1 Завдання

        

Арифметика: цілі та дійсні числа, основні чотири арифметичні операції  (додавання, віднімання, ділення та множення), піднесення до степеня  (правоасоціативна операція), дужки

Особливості: унарний мінус

 Інструкція повторення: for (<ід>=<вираз>; <відношення>; <ід>=<вираз>) {<cписок операторів>}

Інструкція розгалуження: if <відношення> {<список операторів>}

Мета лабораторної роботи №4 – програмна реалiзацiя для розробленої мови програмування транслятора та iнтерпретатора арифметичних виразiв та iнструкцiй присвоювання. Цiльова мова трансляцiї – ПОЛIЗ.

1. Граматика мови.

2. Специфiкацiя арифметичних виразiв розробленої мови (типи, константи, iдентифiкатори, оператори тощо).

3. Лексичний аналiзатор.

4. Синтаксичний аналiзатор.

5. Формат таблиць: символiв, iдентифiкаторiв, констант, мiток.

6. Приклади програм для тестування транслятора та iнтерпретатора

1.2 Граматика мови

        Програма, написана мовою MP2, подається на вхiд транслятора (компiлятора або iнтерпретатора) для трансформацiї (перекладу, трансляцiї) до цiльової форми (мови). Результат трансляцiї виконується у системi часу виконання (run-time system), для чого приймає вхiднi данi та надає результат виконання програми.

Трансляцiя передбачає фази лексичного, синтаксичного та семантичного аналiзу, а також фазу генерацiї коду. Фази лексичного та синтаксичного аналiзу здiйснюються окремими проходами.

Program = program AssignList end .
AssignList = Assign  { Assign } .
Ident = Letter {Letter | Digit } .
Assign = Ident ':=' Expr.
Num = [Sign] (Float | Int) .
Float = Digit {Digit} '.' {Digit} .
Int = Digit {Digit} .
Sign = '+' | '-'   .
Const = IntNumb | RealNumb | BoolConst .
IntNumb = [Sign] UnsignedInt .
RealNumb = [Sign] UnsignedReal .
Sign = ’+’ | ’-’ .
UnsignedInt = Digit {Digit} .
UnsignedReal = ’.’ UnsignedInt | UnsignedInt ’.’ | UnsignedInt ’.’ UnsignedInt .
BoolConst = true | false .
Expr = [Sign] Term
                  | Expr '+' Term
                  | Expr '-' Term .
Term = Factor | Term '*' Factor | Term '/' Factor  .
Factor = Ident | Num | '(' Expr ')'    .

Letter = a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z .
Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10'.
WhiteSpace = (Blank|Tab) {Blank|Tab} .
Blank = "' '" .
Tab = '\t' .
Newline = '\n' .
EndOfFile = \0 .
ForStatement = for IndExpr do DoBlock .
IndExpr = Ident ’:=’ ArithmExpression1 to ArithmExpression2 ArithmExpression1 = ArithmExpression .
ArithmExpression2 = ArithmExpression .
DoBlock = Statement | ’begin’ StatementList ’end’ .

 

1.3 Реалізація лексичного та синтаксичного аналізатора

Для опису мови MP2 використовується розширена форма Бекуса – Наура. Ланцюжки, що починаються з великої лiтери вважаються нетермiналами (не термiнальними символами).

Термiнали (термiнальнi символи) — ланцюжки, що починаються з маленької лiтери, або ланцюжки, що знаходяться мiж оди нарними або подвiйними лапками. Для графiчного представлення граматики використовуються синтаксичнi дiграми Вiрта. Розглянемо графічні представлення розробленої мови за допомогою лексичного аналізатора JFLAP .

[pic 1]

Рис. 1. Дiаграма станiв для розпiзнавання iдентифiкатора для розробленої мови програмування

1.4 Короткий опис розробленої мови

        Мова програмування MP2. Програма складається iз списку iнструкцiй присвоювання мiж ключовими словами ’begin’ та ’end’. Мова пiдтримує роботу з дiйсними та цiлими виразами. Дiйснi константи представленi у форматi з плаваючою крапкою. Вирази можуть мiстити чотири основнi (лiвоасоцiативнi) арифметичнi операцiї та круглi дужки.

        Таблиця 1 містить опис всіх лексем розробленої мови MP2.

...

Скачать:   txt (48 Kb)   pdf (252.1 Kb)   docx (43.2 Kb)  
Продолжить читать еще 29 страниц(ы) »
Доступно только на Essays.club