22938

Синтаксичний аналіз виразів

Лекция

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

Мова в певному алфавіті основному символів це слова записані за певними синтаксичними правилами. Синтаксичні правила подаються формулами БекусаНаура БНФ вигляду : ::= де позначає синтаксичне поняття а послідовність символів розширеного алфавіту. Вираз [] означає що послідовність символів входить або не входить в конструкцію. Синтаксичний аналізатор це програма що для заданої послідовності символів основного алфавіту розпізнає чи побудована вона у відповідності з синтаксичними правилами для даного поняття.

Русский

2013-08-04

31 KB

1 чел.

ЛАБОРАТОРНА РОБОТА  6

 

ТЕМА:  Синтаксичний аналіз виразів.

Мова в певному алфавіті (основному) символів – це слова, записані за певними синтаксичними правилами. Синтаксичні правила подаються формулами Бекуса-Наура (БНФ) вигляду :  <…> ::= ,  де  <…> - позначає синтаксичне поняття, а  - послідовність символів розширеного алфавіту. Розширений алфавіт – це основний  алфавіт, доповнений  синтаксичними поняттями та метасимволами - ‘|’, ‘[‘, ‘]’, ‘{‘, ‘}’, ‘(‘, ‘)’.  Метасимвол ‘|’ розділяє  альтернативні варіанти поняття. Вираз […] означає,  що послідовність символів входить або не входить  в конструкцію. Вираз {…} – що конструкція може повторюватись довільну кількість  раз (n>=0).  Кожному поняттю відповідає певна індуктивно визначена сукупність синтаксично правильних  слів в основному алфавіті. Означені синтаксичні правила у вигляді формул є не що іншим, як лінійною формою вже згадуваних СД Н.Вірта.  Синтаксичний аналізатор - це програма, що для заданої  послідовності символів основного алфавіту розпізнає, чи побудована вона  у відповідності з синтаксичними правилами для даного поняття. Говорять, що БНФ допускає  LА(1)-аналіз, якщо в кожній її формулі альтернативи  правої  частини розпочинаються з попарно різних символів основного алфавіту. Програма LА(1)-аналізатор  складається з сукупності рекурсивних функцій, що відповідають кожному  синтаксичному правилу і які викликають  одна одну у відповідності до правих частин своїх формул.

  

ЗАВДАННЯ

Побудувати синтаксичний аналізатор  для   поняття <хороший>:

<хороший> :: = x | [<хороший>{+<хороший>}]

Вхідна послідовність символів  вводиться з клавіатури. Основний алфавіт складають чотири символи: x , [], + .  БНФ складається з одного синтаксичного правила.  «Хорошими»  є , нпр., слова :   x (база індукції),  [x], [x+x]  і т.д. (за індуктивним переходом).  «Нехорошими» cловами - xx, [],  x+x  тощо.

/* LA(1)- аналізатор для поняття  <хороший> */

#include <stdio.h>

char ch; /* для читання символів  вхідного слова */

beautiful()

/* УВАГА! Перед викликом аналізатора  змінна ch  завжди містить  черговий  символ вхідного слова  !!! */

{ if (ch == ‘[‘) { ch=getchar();  beautiful();

                          while (ch==’+’) { ch=getchar();  beautiful();}

                            if  (ch != ‘]‘) { Err(1); /* обробка  помилкової ситуації :“Відсутня дужка ‘]’ ” */

                                                     

                                                     exit(1);} 

                                /* Заключна дужка ‘]’  є  і це означає, що   прочитано правильний варіант  альтернативи  */

                                  ch=getchar();  

                          } else  if (ch == ‘x‘)  ch=getchar();

                                                  else { Err(2); /* обробка  помилкової ситуації : Очікування  х  */

}

main ()

{  ch= getchar();

   beautiful();

   if (ch == EOF) printf (“Yes”)  

    else  Err(3); /* обробка  помилкової ситуації : Зайві символи в кінці слова   */

}

Еrr( int i)

{  switch (i) {

                          case 1:  printf (”\n Помилкова ситуація 1  ----   відсутня дужка ‘]’ “); break;

                          case 2:  printf (”\n Помилкова ситуація 2  ----   очікування  х’ ” ); break;

                          case 3:  printf (”\n Помилкова ситуація 3  ----    зайві символи в кінці слова “); break;

                      }

    exit(1);

}


 

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

48447. ФОНЕТИЧНА СИСТЕМА УКРАЇНСЬКОЇ МОВИ. ПРИНЦИПИ УКРАЇНСЬКОЇ ОРФОГРАФІЇ 55.06 KB
  Співвідношення звуків і букв. Ключові поняття: Фонетика фонологія фонема звук класифікація звуків їх зміни в потоці мовлення орфографія орфограма орфоепія орфоепічна норма. Модифікації звуків у потоці мовлення. До них належать: ЗВУК найменший елемент усного мовлення; комплекс артикуляційних рухів і їхній певний акустичний ефект що формує звукову оболонку значущих одиниць мови; СКЛАД частина слова один звук або сполучення звуків що вимовляється одним поштовхом видихуваного повітря; ТАКТ або ФОНЕТИЧНЕ СЛОВО частина мовного...
48448. Філософія і медицина Стародавнього світу 85.83 KB
  Філософія і медицина Стародавнього світу План: Огляд індійських філософських вчень Загальна характеристика китайської філософії Антична філософія: періодизація проблеми особистості Рекомендована література Філософія: Навчальний посібник Л. Практикум з філософії: Методичний посібник для викладачів та студентів ВНЗ. літра по філософії Давньої Греції і Риму Зміст лекції В історії філософської думки існує проблема існування індійської філософії т. актуальним є питання:Чи можна взагалі Для розуміння ролі філософії в індійській...
48449. Загальна характеристика підприємництва 38.3 KB
  за згодою партнерів; ліквідується в разі смерті або виходу з бізнесу одного з партнерів строк дії необмежений якщо корпорація не ліквідується за рішенням відповідних державних органів ...
48451. ЕВОЛЮЦІЯ ТЕРМІНА ПІДПРИЄМЕЦЬ 35.94 KB
  Адам Сміт 1768 Підприємець власник підприємства який простує на економічний ризик із метою реалізації певної комерційної ідеї та отримання прибутку плануючи та організовуючи для цього виробництво. Сей 1803 Підприємець це людина яка вміє поєднувати та комбінувати чинники виробництва. Френсіс Уокер 1876 Підприємець це особа не обовязково власник що створює підприємство й управляє його діяльністю для отримання доходу.
48452. Теорія ймовірностей 467.82 KB
  Функція розподілу випадкової величини та її властивості. Статистична функція розподілу Лекція 11 Точкові та інтервальні оцінки параметрів розподілу. Довірчі інтервали для параметрів нормального розподілу. Поняття статистичної гіпотези. Функція розподілу випадкової величини та її властивості.
48453. Популяція як елементарна еволюційна одиниця. Елементарний еволюційний матеріал 85.34 KB
  При вивченні еволюційного процесу важливе значення має дослідження генофонду популяції сукупність генотипів усіх особин. Таким чином виникає генетична гетерогенність популяції. Завдяки панміксії вільному схрещуванню складна генетична структура популяції знаходиться в стані динамічної рівноваги. Разом з тим не завжди навіть усередині популяції панміксія буває повною.
48454. Лекція як форма викладення навчального матеріалу 240.5 KB
  Лекція - це логічно викладений, системно послідовний комплекс усних методів навчання (інформаційне повідомлення, пояснення, розповідь, бесіда), спрямований на реалізацію студентами репродуктивної або продуктивної творчої активності.