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

}


 

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

77456. Понятие, цель и порядок введения процедуры, применяемой в деле о банкротстве: внешнего управления. Последствия введения внешнего управления 26.88 KB
  Последствия введения внешнего управления. План внешнего управления. Отчет внешнего управляющего и прекращение внешнего управления.
77459. Порядок расчёта с кредиторами 49.5 KB
  В течение двух месяцев со дня публикации объявления о признании должника банкротом кредиторы желающие получить удовлетворение должны включиться в реестр требования кредиторов. Но это не прекращает те требования что не были заявлены за 2 месяца влияет на очередность удовлетворения. Не заявленные в течение 2 месяцев требования могут быть удовлетворены если у должника осталось имущество после расчётов с кредиторами требования которых включены в реестр. Исключение ещё установлено для требований кредиторов первой и второй очереди имеются...
77460. Понятие и порядок заключения мирового соглашения. Форма и содержание мирового соглашения, утверждение мирового соглашения арбитражным судом 17.3 KB
  Форма и содержание мирового соглашения утверждение мирового соглашения арбитражным судом. Расторжение мирового соглашения. Последствия неисполнения мирового соглашения.
77461. Упрощенные процедуры банкротства: банкротство ликвидируемого и отсутствующего должника 16.9 KB
  Особенности подачи заявления о признании отсутствующего должника банкротом. В случаях если гражданин должник или руководитель должника юридического лица фактически прекратившего свою деятельность отсутствует или установить место их нахождения не представляется возможным заявление о признании отсутствующего должника банкротом может быть подано конкурсным кредитором уполномоченным органом независимо от размера кредиторской задолженности. Заявление о признании отсутствующего должника банкротом подается уполномоченным органом только при...
77462. Особенности банкротства физических лиц, индивидуальных предпринимателей и крестьянского (фермерского) хозяйства 18.16 KB
  Основания для признания крестьянского фермерского хозяйства банкротом неспособность удовлетворить требования кредиторов по денежным обязательствам и или исполнить обязанность по уплате обязательных платежей. Особенности порядка признания индивидуального предпринимателя главы крестьянского фермерского хозяйства банкротом Заявление индивидуального предпринимателя главы крестьянского фермерского хозяйства о признании его банкротом может быть подано в арбитражный суд при наличии согласия в письменной форме всех членов крестьянского...
77463. Оспаривание сделок в деле о банкротстве. Подозрительные сделки и сделки предпочтения 16.94 KB
  Сделки совершенные должником или другими лицами за счет должника могут быть признаны недействительными в соответствии с Гражданским кодексом Российской Федерации а также по основаниям и в порядке которые указаны в настоящем Федеральном законе. Оспаривание подозрительных сделок должника...
77464. Антимонопольное законодательство и иные акты о защите конкуренции. Цель и метод правового регулирования, предусмотренного антимонопольным законодательством 18.32 KB
  Понятие конкуренции недобросовестная конкуренция понятие формы. Принцип: регулирование и контроль монополистической деятельности осуществление монополистической деятельности допускается если это не нарушает свободу конкуренции. При обнаружении факти или угроза нарушения конкуренции монополистическая деятельность признается незаконной.