42367

Побудова лексичного аналізатора

Лабораторная работа

Информатика, кибернетика и программирование

Граматика створена під впливом мов Pascal та C , зокрема аналогічно першій програма починається з ключового слова program, для початку оголошення використовується слово var. Від мови С було перейнято дужки, що позначають початок і кінець програми, ключове слово main, конструкції умови, циклу та присвоєння.

Украинкский

2013-10-29

370 KB

9 чел.

Міністерство освіти і науки, молоді та спорту України

НТУУ «КПІ»

Кафедра АПЕПС

Лабораторна робота №1

з курсу Лінгвістичне забезпечення САПР

На тему: «Побудова лексичного аналізатора»

Виконав

студент 3-го курсу ТЕФ

групи ТР-91

Лисий А.

Перевірила

Третяк В.А.

Київ – 2011


Вступ

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

Для даного випадку Л.А. має також перевіряти можливі помилки при написанні прорами такі як дублювання в оголошенні ідентифікаторів та використання необ’явлених ідентифікаторів.

Результати роботи Л.А. подаються у вигляді файлів.


Виконання лабораторної роботи

Граматика заданої мови програмування

  1.  <програма>::= program <id>; var <спис. огол> main{<спис. опер>}
  2.  <спис. огол>::=<огол.>; <спис. огол>|<огол.>;
  3.  <огол.>::=<тип>:<спис. id>;
  4.  <тип>::=double | int 
  5.  <спис. опер>::=<оператор>;|<оператор>;<спис. опер>
  6.  <оператор>::=<цикл> | <ум. оп> | <ввід> | <вивід> | <присвоєння>
  7.  <цикл>::=for(<id>=<вираз>;<лог. вираз>;<id>=<вираз>)<оператор>
  8.  <ум. оп>::=if (<відношення>) {<спис. опер>}
  9.  <ввід>::=read(<спис. id>)
  10.  <вивід>::=write(<спис. id>)
  11.  <присвоєння>::=<id>=<вираз>
  12.  <вираз>::=<додан.> |<вираз>+<додан.> | <вираз>-<додан.>
  13.  <додан.> ::=<множн.>|<додан.>*<множн.> |<додан.>/<множн.>
  14.  <множн.> ::= <конст> | (<вираз>) | <id>|-<вираз>
  15.  <конст>::=<цбз>|<цбз>.|<цбз>.<цбз>
  16.  <цбз>::=<цифра>|<цбз><цифра>
  17.  <цифра>::= 0 |…| 9
  18.  <спис. id>::=<id>|<спис. id>,<id>
  19.  <id>::=<буква>|<id><буква>|<id><цифра>
  20.  <буква>::=a |…| Z
  21.  <відношення>::=<вираз><знак><вираз>
  22.  <знак>::= > | < | >= | <= | == | !=
  23.  <лог. вираз>::=<лог. множ>|<лог. вираз> && <лог. множ>
  24.  <лог. множ.> ::= <лог. додан.> | <лог. вираз> || <лог. додан.>
  25.  <лог. додан.>::= <лог. од.> | !<лог. од.> | [<лог. вираз>]
  26.  <лог. од.> ::= <відношення> | true | false |

Граматика створена під впливом мов Pascal та C , зокрема аналогічно першій програма починається з ключового слова program, для початку оголошення використовується слово var. Від мови С було перейнято дужки, що позначають початок і кінець програми, ключове слово main, конструкції умови, циклу та присвоєння.

Додатковою функцією лексичного аналізатора є перевірка таких помилок як дублювання операторів при оголошенні та використання неоголошеного оператора.

Таблиця лексем

Лексема ID

program  0    

var         1    

double    2    

int     3    

main   4    

{       5    

}       6    

read    7    

write          8    

for     9    

if      10   

,       11   

:       12   

;       13   

+       14   

-       15   

*       16

/       17   

Лексема ID

=       18   

(       19   

)       20   

>       21   

<       22   

>=      23   

<=      24   

==      25   

!=      26   

&&      27   

||        28   

!       29

[ 30

] 31  

true    32   

false          33

id 34

con 35

Нижче наведено приклади роботи програми

1.  Якщо в початковому коді були допущені такі помилки як дублювання ідентифікаторів при оголошенні або використання неоголошеного ідентифікатора (рисунок 1, наявні обидві вищевказані помилки), тоді в файл ErrorLog.txt будуть занесені відповідні записи(рисунок 3). На виході програми формується файл LexTable.txt з таблицею лексем (рисунок 2). Лексеми, в яких було допущено помилку не вносяться до таблиці, при цьому розбір коду продовжується. Крім вищевказаних файлів додатково створюється таблиця констант та ідентифікаторів (рисунок 3). Лексеми з помилками в них також не заносяться.

Рисунок 1-Текст програми.

Рисунок 2-Вихідна таблица лексем.

Рисунок 3-Таблиці индентификаторів, констант і лог помилок.

2. При відсутності в початковому коді помилок (рисунок 4) в файл ErrorLog.txt не буде занесено жодного запису (рисунок 6), при цьому таблиця лексем в файлі LexTable.txt (рисунок 5) вміщуватиме всі без виключення знайдені лексеми. Таблиці констант та ідентифікаторів також не буде відсутніх елементів (рисунок 6), на відміну від випадку з помилками (рисунок 3).

Рисунок 4-Код програми.

Рисунок 5-Вихідна таблиця лексем.

Рисунок 6-Таблиці идентификаторів, констант і лог помилок.


Список використаних джерел

  1.  Сліпченко, В.Г., Медведєва В.М. Основи побудови компіляторів: Навч. посібник / В.Г. Сліпченко, В.М. Медведєва. – К.: ІЗМН, 2004. – 104с.
  2.  Ахо, А. Компиляторы: принципы, технологии и инструменты. : Пер. с англ / А. Ахо, Р. Сети, Дж. Ульман. – М. : Издательский дом «Вильямс», 2003. – 768с. : ил. – Парал. тит. англ.
  3.  Конспект лекцій з курсу лінгвістичного забезпечення САПР


 

А также другие работы, которые могут Вас заинтересовать

28674. Разработка и принятие первой Конституции РСФСР 1918 г., ее классовый характер. Избирательное право 12.53 KB
  Она закрепила политическую основу государства Советы рабочих солдатских и крестьянских депутатов. Выборы в Советы были многоступенчатыми и основанными на принципах представительства и делегирования граждане прямо избирали депутатов в сельские и городские Советы и делегатов на выборы всех последующих уровней. Правом избирать и быть избранными в Советы пользовались трудящиеся достигшие 18 лет независимо от пола национальности вероисповедания и т.
28675. Основные положения Конституции РСФСР 1918 г. Политическая система. Система органов власти и управления 12.33 KB
  Основные положения Конституции РСФСР 1918 г. Конституция РСФСР состояла из шести разделов: 1. Общие положения Конституции РСФСР. О гербе и флаге РСФСР.
28676. Политика «военного коммунизма», ее сущность, содержание. Продразверстка. Всеобщая трудовая повинность 13.36 KB
  й чрезвычайных мер управления эккой харных для периода Гражданской войны. Поскольку жесткая система контроля и распредя основывалась на уравнительном распреди для трудящихся она получила название коммунизма а поскольку система возникла как чрезвычайная мера в период войны название военного коммунизма. С окончанием Гражданской войны он был отменен.
28677. Перестройка государственного аппарата в годы гражданской войны и иностранной военной интервенции. Совет рабочей и крестьянской обороны 13.45 KB
  В перерывах между съездами Советов высшим органом власти являлся ВЦИК. был установлен сессионный порядок работы ВЦИК. С сессионным порядком работы ВЦИК изменился и харер деятти его Президиума: он был наделен правом руководить заседаниями ВЦИК наблюдать за выпем его постановлений назначать наркомов инструктировать центральные и местные органы отменять постановления СНК и др. Президиум ВЦИК был наделен законодательными полномочиями.
28678. Военно-политический и хозяйственный союз республик в годы гражданской войны -и иностранной военной интервенции (1918- 1920 гг.) 12.25 KB
  Военнополитический и хозяйственный союз республик в годы гражданской войны и иностранной военной интервенции 1918 1920 гг. ознаменовался рождением Российской Советской Федеративной Социалистической Республики. На первом этапе на территории бывшей царской России возникли автономные республики территориальные автономии с учетом национального состава населения появились суверенные Советские республики. Второй этап объединительного движения народов советских республик связан с периодом гражданской войны и иностранной военной интервенции...
28679. Переход Советского государства к новой экономической политике, ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу 13.46 KB
  Переход Советского государства к новой экономической политике ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу. X съезд Коммунистической партии принял решение о переходе от продразверстки к продналогу и о переходе к новой экономической политике нэпу. Переход к новой эккой политике означал отказ от методов военного коммунизма. предполагалось начать выпуск новой валюты.
28680. Судебная реформа 1922 г. и создание единой судебной системы. Упразднение чрезвычайных судебных органов. Создание прокуратуры и адвокатуры 13.61 KB
  ВЦИК утвердил Положение о судоустройстве РСФСР положившее начало новой судебной реформе. Положение вводилось в действие на всей терории РСФСР с 1 января 1923 г. Данным нормативным актом создавалась единая судебная система: народный суд в составе постоянного народного судьи; народный суд в составе постоянного народного судьи и 2ух народных заседателей; губернский суд; Верховный суд РСФСР и его коллегии. Параллельно с единой системой народных судов РСФСР действовали специальные суды: военные трибуналы военнотранспортные трибуналы...
28681. Развитие законодательства и его кодификация в 1922 г. Кодексы законов о труде, земле, гражданский и уголовный кодексы 1922 г. 14.06 KB
  ГК РСФСР состоял из 4 разделов: общ. ЗК РСФСР состоял из Оснх положений и 3 частей: о трудовом землепользи о городских землях и госных земельных имвах о землеустройстве и переселении. Кодекс закрепил отмену частной собствти на землю недра воды и леса в пределах РСФСР. КЗоТ РСФСР сост.
28682. Национально-государственное размежевание в Средней Азии и образование новых советских социалистических республик 12.23 KB
  Первыми субъектами СССР были четыре союзные республики: РСФСР УССР БССР и ЗСФСР. В дальнейшем СССР пополнялся новыми субъектами. На первом этапе развития Союза ССР происходило национальногосударственное размежевание в Средней Азии на территории Туркестанской АССР входившей в состав РСФСР и двух самостоятельных государств Хорезмской и Бухарской народных советских республик. были приняты декларации об образовании Узбекской ССР и Туркменской ССР.