Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 16:45   #1
maxlennon
Новичок
Джуниор
 
Регистрация: 16.02.2010
Сообщений: 2
По умолчанию задание с рекурсией

Помогите девушке написать программу. У всех спрашивала, никто не может мне помочь.

Задание: Построить синтаксический анализатор для понятия "скобки".

скобки::=А | скобка скобки
скобка::=( B скобки)

-----------------------------------------------------------------------
Вот так. Надо использовать рекурсию, а я даже задание понять не могу.Помогите мне.
Надо писать на С.
maxlennon вне форума Ответить с цитированием
Старый 16.02.2010, 19:09   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Поиск на википедии - Метод Рекурсивного спуска. У нас тут не благотворительный фонд. Мы помогаем думать, а не писать.
MaTBeu вне форума Ответить с цитированием
Старый 17.02.2010, 18:16   #3
maxlennon
Новичок
Джуниор
 
Регистрация: 16.02.2010
Сообщений: 2
По умолчанию

спасибо. я щас попытаюсь написать текст. поможете мне потом его доработать?

Добавлено через 21 час 4 минуты
Путём долгих мучений я вникла в задание.

Задание: Построить синтаксический анализатор для понятия "скобки".

скобки::=А | скобка скобки
скобка::=( B скобки)


То есть возможны корректные варианты:
A
(BA)
(BA)A
и всевозможное чередование этих трёх выражений.

некорректные выражения таковы:
  1. Пусто
  2. присутствуют лишнме символы - Z!345c и тд
  3. Спереди строки не могут стоять - B и закрывающая скобка ')'
  4. Когда конструкция незакончена - ( или (B
  5. Потеря части - (B)

получился такой текст: помогите его отредактировать и дополнить. Так чтобы программа анализировала символы из файла и выводила результат в другой файл. результат - это правильные последовательности + ошибки.
Да, ещё я попыталась сделать чтобы программа будущая игнорировала пробелы и переходы на новую строку.

очень надеюсь на вашу помощь с текстом программы.


Код:
 #include <iostream.h>
 #include <stdio.h>
 #include conio.h>

 void Error(int N)

 { switch (N)                                          //переключатель ошибок (надо как то реализовать вывод ошибок в файл)
    {
    case 1;
    cout<<"nycTo"<<endl;
    case 2;
    cout<<"HedonycTumblU cumBoJl"<<endl;
    case 3;
    cout<<"CnepeDu He mogeT 6blTb: ),B"<<endl;
    case 4;
    cout<<"HeT Круглой скобки"<<endl;
    case 5;
    cout<<"nocJle kpyrJlou cko6ku Het B"<<endl;
    case 6;
    cout<<"notep9 4actu - (B)"<<endl;   		//также ещё другие подобные некорректные ситуации

     }
  }

 Fsteam F;						//Входной файл из которого всё читается
 int Round ()						//фунцкция анализа скобок
 
 {
  char S; F>>S; int D=0; int k
    if(F eof())
       {
        Error(z);
        cout<<"BHytPu ()";
        }
     else 
      {
	if(S=='(') D=1;
	else
	if(S=='B') D=1;
	else
	if(S=='A') D=1;
	else
	if(S==')') D=1;					//не знаю как это записать. надо как то поместить сюда Error
	
	 
	 }
	return D;
  } 

 int Bracket()						//функция запуска
 {
  char S; F>>S; int D=0
  switch (S)
    {
      case 'A': case '(' ; D=Round(); break;
      case '(' ; D=Round(); break;
       }
	default; Error()
   }

  void main()
  {
    F open();
    char S; F.sets(skipws) 				//пропуск пробелов и переходов	
    F>>S;
    if(F.eof( ) ) Error()
    else
    {
      F.seekg(ios::beg);
      D=Bracket();
      if(D) cout<<"A";
     
        }
   }
maxlennon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с рекурсией agarum Общие вопросы Delphi 2 19.06.2009 00:28
Помогите с рекурсией biv171 Помощь студентам 1 02.11.2008 10:36
Факториал с рекурсией SaimaN Помощь студентам 2 24.09.2008 17:53
Помогите с рекурсией Serejka Общие вопросы Delphi 1 25.07.2008 15:36