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

}


 

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

41184. ПОЛУЧЕНИЕ ВЫГОДЫ В СИСТЕМЕ МАРКЕТИНГА 486.5 KB
  Исключение этих расходов из расчета прибыли позволяет получить более полное представление о работе компании в данном году; 2 полная валовая общая балансовая прибыль – это разница между выручкой от продажи и затратами на производство проданных товаров услуг. их права на активы компании4. Это обусловлено тем что обычно основатели создают компании с целью личного обогащения6 которая не всегда особенно – в краткосрочной перспективе совпадает с целью создания потребительской ценности которая лучше чем предложения конкурентов...
41185. Комплексный (символический) метод расчета электрических цепей при периодическом синусоидальном воздействии 267.5 KB
  Из курса Математики известно что комплексное число можно представить в виде вектора на комплексной плоскости а действительная и мнимая части комплексного числа есть проекции вектора на вещественную и мнимую оси. Если допустить что вектор А на комплексной плоскости вращается против часовой стрелки с угловой скоростью  то это комплексное число запишется: Величину назвали – оператор вращения. Комплексное число назвали комплексной амплитудой тока а – комплексном действующего значения тока. Комплексное число назвали комплексной...
41186. Расчет теплообмена при пузырьковом кипении жидкости в большом объеме 514.5 KB
  Это приводит к тому что практические расчеты теплоотдачи при пузырьковом кипении основываются на использовании эмпирических соотношений большинство из которых получено с применением аппарата теории подобия. В подтверждение сказанного рассмотрим ряд уравнений подобия для расчета теплоотдачи при пузырьковом кипении жидкости. В результате такого подхода было получено для средней теплоотдачи при пузырьковом кипении жидкости такое эмпирическое уравнение уравнение В. Результатом такого подхода явилось уравнение подобия для теплоотдачи при...
41187. Тонкие пленки наносимые в вакууме 222 KB
  Таким образом при нанесении тонких пленок одновременно протекают три основных процесса: генерация направленного потока частиц осаждаемого вещества пролет частиц в вакуумном пространстве от их источника к обрабатываемой поверхности осаждение конденсация частиц на поверхности с образованием тонкопленочных слоев. Метод термического испарения основан на нагреве веществ в специальных испарителях до температуры при которой начинается заметный процесс испарения и последующей конденсации паров вещества в виде тонких пленок на обрабатываемых...
41189. Разработка и принятие управленческих решений 86 KB
  Принятие решений – это организационный связующий процесс. Если коммуникации своего рода стержень пронизывающий любую деятельность в организации то принятие решений – это центр вокруг которого вращается жизнь организации.1 По поводу разработки и принятия решений в менеджменте ведутся продолжительные споры между специалистами.
41190. Учет обязательств МСФО 114 KB
  Определение обязательства Обязательства настоящая задолженность предприятия которая возникает вследствие прошедших событий и погашение которой как ожидается приведет к убытию ресурсов с предприятия которые воплощают в себе будущие экономические выгоды. Обязательства – это обязанность или ответственность действовать или поступать определенным образом. Обязательства могут иметь юридическую силу вследствие контрактных обязательств или законодательных требований. Но обязательства также возникают в результате ежедневной деловой практики...
41191. Теплообмен излучением 390 KB
  Природа теплового излучения Излучение – это перенос энергии при помощи электромагнитных волн испускаемых излучаемым телом. Последние проявляются в том что испускание и поглощение энергии излучения осуществляется отдельными порциями – фотонами света или квантами. Каждое конкретное тело обладает своим спектром излучения с соответствующим распределением электромагнитного излучения по длинам волн. Твердые тела и жидкости как правило имеют непрерывный спектр излучения
41192. Нанесение пленок методом ионного распыления 105 KB
  Принцип действия устройств ионного распыления основан на таких физических явлениях как ионизация частиц газа тлеющий разряд в вакууме и распыление веществ бомбардировкой ускоренными ионами. Таким образом плазма тлеющего разряда является генератором ионов необходимых для эффективной бомбардировки катода и его распыления. Схема ионного распыления Показателем эффективности процесса ионного распыления является коэффициент распыления который выражается числом удаленных частиц распыляемого вещества приходящихся на один бомбардирующий ион и...