Page 18 - 4761
P. 18

З а д а ч а   р о з б о р у   (   п о с т а н о в к а   з а д а ч і ) .
                         Граматика  і  розпізнавачі  –  два  незалежних  методи,  які  реально  можуть  бути
                  використані  для  визначення  будь-якої  мови.  Але  при  розробці  компілятора  для  деякої
                  мови програмування виникає задача, яка потребує зв’язати між собою ці методи задання
                  мов.
                         Розробники  компілятора  завжди  мають  справу  з  визначеною  мовою
                  програмування.  Граматика  –  відома.  Задача  розробників  у  тому,  щоб  побудувати
                  розпізнавач для даної мови, який буде основою синтаксичного аналізатора в компіляторі.
                         Таким чином, задача розбору полягає в наступному: на основі наявної граматики
                  деякої мови побудувати розпізнавач для цієї мови. Задача граматика і розпізнавач повинні
                  бути еквівалентні.

                         2.2  Загальна схема роботи транслятора


                           Транслятор  –  це  програма,  яка  переводить  програму  на  вхідній  мові  в
                  еквівалентну їй програму на вихідній мові. В роботі транслятора працюють 3 програми:
                      1.  Сам  транслятор  є  програмою,  тобто  транслятор  –  це  частина  програмного
                         забезпечення (ПЗ), він являє собою набір машинних команд і даних і виконується
                         комп’ютером,  як  і  всі  інші  програми  в  межах  ОС.  Всі  складові  частини
                         трансляторів  представляють  собою  фрагменти  або  модулі  програми  –зі  своїми
                         вхідними та вихідними даними.
                      2.  Вхідними  даними  для  роботи  транслятора  служить  програма  на  вхідній  мові
                         програмування  –  деяка  послідовність  речень  вхідної  мови.  Як  правило,  це
                         символьний  файл,  але  цей  файл  має  вміщати  текст  програми,  який  задовольняє
                         синтаксичним і семантичним вимогам вхідної мови.
                      3.  Вихідними  даними  транслятора  є  програма  на  вихідній  мові.  Вона  називається
                         результуючою.  Вона  будується  за  синтаксичними  правилами  вхідної  мови
                         транслятора, а її зміст визначається семантикою мови.
                         Важливим  пунктом  у  визначенні  транслятора  є    еквівалентність  вхідної  і
                  результуючої програм.
                         Отже,  щоб  створити  транслятор,  необхідно  вибрати  вхідну  та  вихідну  мови.
                  Результатом  роботи  транслятора  буде  результуюча  програма,  якщо  в  тексті  вхідної
                  програми  немає помилки, інакше результатом буде повідомлення про помилку.
                         Компілятор  –  це  транслятор,  який  здійснює  переклад  вхідної  програми  на
                  еквівалентну їй об’єктну програму на мові машинних кодів, або на мові асемблер. Таким
                  чином компілятор відрізняється від транслятора тим, що його результуюча програма має
                  бути  написана  на  мові  машинних  кодів,  або  на  асемблері.  Результуюча  програма
                  компілятора називається об’єктною програмою, або об’єктним кодом, а вхідна програма
                  називається  вхідним  кодом.  Файл,  в  якому  записана  об’єктна  програма  називається
                  об’єктним кодом. Компілятори – найбільш поширений вид трансляторів.
                          Інтерпретатор  –  це  програма,  яка  сприймає  вхідну  програму  на  вхідній  мові  та
                  виконує її .
                         Інтерпретатор, як і транслятор, аналізує текст вхідної програми. Але він не створює
                  результуючу програму, а відразу ж виконує вхідну програму у відповідності з її змістом.
                  Щоб  виконати  вхідну  програму  інтерпретатор  має  перетворити  її  в  машинний  код,  але
                  отримані  машинні  коди  користувач  не  бачить,  вони  недоступні.  Вони  узгоджуються  з
                  інтерпретатором,  виконуються  і  по  мірі  потреби  знищуються.  Користувач  бачить
                  результат цих кодів.




                                                                16
   13   14   15   16   17   18   19   20   21   22   23