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);

}


 

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

2082. Локальные компьютерные сети 627.36 KB
  Локальные компьютерные сети, базовые понятия. Оборудование компьютерных сетей. Локальные сети в общей классификации компьютерных сетей. Структура стандартов IEEE 802.X. Формат кадра и этапы доступа к среде. Производительность сети Ethernet. Маркерный метод доступа к разделяемой среде.
2083. Физико-химические основы микроэлектроники и технологии РЭС и ЭВС 2.33 MB
  Строение твердых тел. Основы кристаллографии. Основы квантовой физики. Основы зонной теории твердых тел и квантовой статистики. Гальваномагнитные эффекты в твердых телах. Оптические и фотоэлектрические явления в твердых телах
2084. Конспект лекций Turbo Pascal -2 725.88 KB
  Параметры-переменные и параметры-значения. Новые графические процедуры и функции. Вертикально-горизонтальное отношение. Поворот фигур и вывод текста. Тип данных множество и записи. Файлы с прямым доступом.
2085. Конспект лекций Turbo Pascal 1.57 MB
  Знакомство со средой PASCAL. Структура программы на Паскале. Печать списка и текстов. Переменные. Оператор присваивания. Управление выводом информации. Ввод данных (операторы READLN и READ). Логические переменные и операции. Многомерные массивы. Процедуры и функции с параметрами.
2086. Техническое диагностирование и неразрушающий контроль деталей и узлов локомотивов 182.16 MB
  Основы управления техническим состоянием локомотива, задачи и средства диагностирования. Акустический вид неразрушающего контроля. Диагностирование полупроводниковых и тиросторных блоков. Диагностирование тяговых электродвигателей. Выбор и расчет параметров диагностирование.
2087. Кузнечно-штамповочное оборудование 40.49 MB
  Принцип действия и классификация кузнечно-штамповочных машин. Основные признаки для конструктивного подразделения кривошипных прессов. Кинематические свойства и проектирование исполнительных механизмов. Силовой расчет и условие прочности кривошипных прессов. Типовые конструкции гидравлических прессов.
2088. Состояние и перспективы развития геоинформатики в геологических науках на дальнем востоке России 226.81 KB
  В статье приведено определение геоинформатики как самостоятельного научного направления и перечислены основные области исследований. Описано состояние исследований в геоинформатике и геологических науках.
2089. Железы внутренней секреции (эндокринные железы) 3.57 MB
  Морфофункциональная характеристика ЖВС. Регуляция желёз внутренней секреции. Соматотропный гормон.
2090. Антенно–фидерные устройства 22.67 KB
  Антенно-фидерные устройства являются неотъемлемым элементом любой радиолинии. Радиолиния - комплекс приборов, осуществляющих передачу информации через окружающее пространство с помощью свободно распространяющихся электромагнитных волн (радиоволн).