ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Конвертер програми з підмножини мови Сі в Паскаль з використанням LL (1) методу синтаксичного аналізу (вираження )
         

     

    Інформатика, програмування

    Конвертер програми з підмножини мови Сі в Паскаль з використанням LL (1) методу синтаксичного аналізу (вираження)

    Курсова робота з дисципліни "Мови програмування та методи трансляції"

    Виконали студенти групи ІАС-00 Мардасова У. А., Шалудько В. А.,

    Кемеровський Державний Університет

    Кафедра Автоматизованих Систем

    Новокузнецьк, 2002р.

    Вступ

    При знайомстві з мовою СІ, особливо після вивчення Паскаля і Бейсіка, заглиблення в деталі його образотворчих засобів може затушувати важливу думку: хоча на ЗІ можна написати практично будь-яку прикладну програму, він спочатку для цього не призначений. СІ є результатом еволюційного розвитку мов створення системних програмних засобів. Якщо в прикладному програмуванні еволюція йшла від Фортрану до Алгол, Кобол, Паскалю і т.д., то в системному - від Асемблер, прив'язаних до архітектури ЕОМ, до СІ, для якого створені транслятори, що роблять його хоч і незалежним від архітектури, але не змінює основного призначення.

    За допомогою ЗІ можна зробити те, що на Паскалі зробити неможливо (або майже неможливо) - наприклад, написати фрагмент операційної системи (або нову операційну систему), утиліти і т.п. Так, ряд трансляторів з Паскаля написані на СІ; зворотне неможливо уявити. У той же час, не раз наголошувалося, що прикладні програми, написані на Паскалі, відрізняються більшою надійністю, ніж написані на СІ; їх легше читати, передавати від одного програміста іншому для вдосконалення і супроводу. Це пов'язано з тим, що Паскаль містить істотно більше обмежень і є мовою більш високого рівня з сильною типізацією даних. Для мови ж, який призначений для розробки системного програмного забезпечення, чим менше обмежень, тим краще; так, в СІ можливі неявні перетворення всіх базових типів даних і покажчиків одне в одного, що вкрай бажано при створенні системних засобів, але при неуважності програміста призводить до помилок, не вловлює транслятором з СІ (Паскаль ж подібні неприпустимі операції припиняє негайно).

    Зрозуміло, сказане вище не слід абсолютизувати. Програмісти, що звикли до СІ, успішно пишуть на ньому програми різних класів. Це стосується не тільки СІ - згадайте про експертних системах, написаних на Бейсіку. У той же час, при масовому програмуванні дотримуватися "розподіл праці" між мовами представляється більш природним.

    Широкої популярності Паскаля серед програмістів сприяють наступні причини:

    Завдяки своїй компактності, вдалому початкового опису Паскаль виявився досить легким для вивчення.

    Мова програмування Паскаль відображає фундаментальні та найбільш важливі концепції (ідеї) алгоритмів в очевидною і легко сприймається формі, що надає програмісту кошти, допомагають проектувати програми.

    Мова Паскаль дозволяє чітко реалізувати ідеї структурного програмування і структурної організації даних.

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

    Застосування мови Паскаль значно підняло "планку" надійності розроблюваних програм за рахунок вимог Паскаля до опису використовуються у програмі змінних, перевірки узгодженості програми при компіляції без її виконання.

    Використання в Паскалі простих і гнучких структур управління: розгалужень, циклів.

    З іншого боку мова програмування СІ - це універсальна мова з багатим набором операторів і компактним способом запису виразів. Завдяки гнучкості, виразності і компактності своїй конструкції СІ завоював найбільшу популярність в середовищі професійних програмістів і широко використовується при розробці системних і прикладних програм.

    Мова СІ є вдалий компроміс між бажанням мати у своєму розпорядженні тими можливостями, які зазвичай надають програмісту настільки зрозумілі та зручні мови високого рівня, і прагненням ефективно використовувати особливості комп'ютера. Крім набору засобів, притаманних сучасних мов програмування високого рівня (структурність, модульна, що визначаються типи даних) в нього включені кошти для програмування "майже" на рівні асемблера (використання покажчиків, побітового операції, операції зсуву). Великий набір операторів дозволяє писати компактні й ефективні програми. Однак, такі потужні засоби вимагають від програміста обережності, акуратності і доброго знання мови з усіма його перевагами і недоліками. На відміну від мов програмування типу Паскаль, що вимагають жорсткої дисципліни програмування що обмежують свободу програміста, що сприяють усуненню багатьох помилок ще на стадії їх трансляції, мова СІ надає програмісту найбільшу свободу. Однак, відповідальність за коректність програм при цьому повністю лягає на програміста.

    В даний час є велика кількість систем програмування на СІ для різних типів комп'ютерів. Розроблено багато бібліотек модулів, інструментальних засобів розробки і налагодження, що полегшують створення нових програм. Програми на СІ мають високу мобільністю, без будь-яких змін вони переносяться, транслюються і виконуються на машинах різного типу.

    В рамках навчального проекту реалізована програмна система, звана надалі конвертором, що дозволяє автоматизувати процес перетворення програм на Паскалі в програми на мові СІ. На вхід конвертора подається синтаксично правильна програма на Паскалі, на виході його формується еквівалентна їй програма на мовою СІ.

    Завдання розробки конвертора відноситься до класу задач автоматизації реінженерінга програм із застарілих мов на сучасні мови програмування та нові платформи. Розробка конвертора для мови Паскаль є досить трудомісткою з огляду на особливості синтаксису і семантики мови Паскаль.

    Мова Паскаль не допускає використання принципів умовчань і скорочень, вимагає суворого дотримання відповідності типів даних, у ньому жорстко регламентовані структура і місце описи програмних об'єктів.

    У силу вище сказаного, навіть ручний переклад програми на Паскалі на мову СІ вимагає від програміста програми значних інтелектуальних зусиль, а реалізація конвертора для мови Паскаль можлива лише за наявності істотних тимчасових і матеріальних ресурсів. Крім синтаксичних обмежень вхідна програма конвертора має ряд чисто семантичних обмежень, пов'язаних з реалізацією власне конвертора. Перелічимо основні з них:

    Обмежене використання типів даних, у повному обсязі підтримуються тільки арифметичні типи даних.

    Вкладеність блоків, в яких використовуються однойменні об'єкти, не повинна перевищувати двох рівнів.

    Процедурні блоки не повинні бути усередині BEGIN-блоків, вкладеність процедурних блоків не обмежується.

    Допускається використовувати тільки одномірні масиви з відкритою правою кордоном (динамічні масиви) як параметрів процедурних блоків; при цьому адресуються елементи масиву в Паскаль програмою, починаючи з нульового елемента.

    Обмежене використання змішання різних типів даних.

    Вирази в Паскалі

    Конструкція мови, що задає порядок виконання дії над елементами даних, називається виразом. Вираз складається з операндів (operand - елемент даних, який бере участь в операції), - величин і виразів, над якими проводиться операція (константи операцій. Операції визначають дії, які треба виконати над операндами. Наприклад, у виразі (X + Y-10) X, Y і 10 - операнди; а "+" і "-" - Знаки операцій складання і віднімання.

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

    Операції в мові Паскаль діляться на арифметичні, відносини, логічні (Булевського), операцію @, рядкові і ін Вирази відповідно називаються арифметичними, відносини, Булевського, рядковими і т.д. залежно від того, якого типу операнди та операції в них використовуються.

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

    Операції можуть бути унарний і бінарними. У першому випадку операція відноситься до одного операнд і завжди записується перед ним, у другому - операція виражає відношення між двома операндами і записується між ними.

    Наприклад,-А - унарний операція, Х + У - бінарна.

    Арифметичні вираження та операції.

    Арифметичні називається вираз, що складається з операндів арифметичного типу і використовує тільки знаки арифметичних операцій і круглі дужки. Порядку обчислення визначається дужками і старшинством операцій.

    Арифметичне вираз породжує ціле або дійсне (дійсне) значення. Найбільш простими формами арифметичних виразів є:

    Ціла або дійсна константа без знака;

    Ціла або дійсна мінлива;

    Елемент масиву цілого або дійсного типу;

    Функція, що приймає ціле або дійсне значення.

    Значення змінної або елементу масиву має бути визначено до їх появи в арифметичному вираженні. Інші арифметичні вирази складаються з перерахованих вище простих форм шляхом застосування круглих дужок і арифметичних операцій.

    Арифметичні операції виконують арифметичні дії у виразах над значеннями операндів цілочисельних і речових типів. Арифметичні операції мови Паскаль представлені в таблице1.

    Арифметичні операції        

    Операція         

    Дія         

    Типи операндів         

    Тип результату             

    Бінарні             

    +   

    -   

    *   

    /   

    DIV   

    MOD   

    AND   

    SHL   

    SHR   

    OR   

    XOR            

    Складання   

    Віднімання   

    Множення   

    Поділ   

    Цілочисельне поділ   

    Ділення   

    Арифметичне І   

    Зрушення вліво   

    Зсув вправо   

    Арифметичне АБО   

    виключає диз'юнкція            

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий         

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Речовий   

    Речовий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий   

    Цілий             

    Унарні             

    +   

    -   

    NOT         

    Збереження знака   

    Заперечення знака   

    Арифметичне заперечення         

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий         

    Цілий   

    Речовий   

    Цілий   

    Речовий   

    Цілий     

    Вирази і операції відносини.

    Виразом відносини називається словосполучення мови, в якому два вирази пов'язані знаком операції відносини. Вираз відносини визначає істинність або хибність результату. Операції відносини виконують порівняння двох операндів і визначають, поправді значення виразу або помилково.

    У мові Паскаль операції відносини і розглянуті нижче Булевського операції більш важливі при написанні програм, ніж в інших мовах, тому що вони інтенсивно використовуються для реалізації розгалужуються і циклічних алгоритмів. У таблиці 2 наведено операції відносини, що дозволені в версії мови Паскаль для ПЕОМ.

    порівнювані величини можуть належати до будь-якого скалярному і не перераховувати типу даних. Результат завжди має булевський тип і приймає одне з двох значень: True (істина) або False (неправда).

    Операції відносини.        

    Операція         

    Назва         

    Вираз         

    Результат             

    =   

      

    >   

    =   

    B   

    A = B   

    A

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status