Форум программистов, компьютерный форум CyberForum.ru

Синтаксический анализатор понятия "скобки" (рекурсия) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ квадратная матрица http://www.cyberforum.ru/cpp-beginners/thread361048.html
помогите решить задачу на турбо си,очень надо( Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1,2,...,49, расположенные в ней по спирали
C++ помогите решить циклом!!! Имеется кусок ткани длиной М метров. От него последовательно отрезаются куски разной длины. Все данные по использованию ткани заносятся в компьютер. Компьютер должен выдать сообщение о том, что материала не хватает, если будет затребован кусок ткани, большей длины, чем имеется. http://www.cyberforum.ru/cpp-beginners/thread361047.html
C++ Описать структуру с именем AEROFLOT
Вариант 4 1. Описать структуру с именем АЕRОFLОТ, содержащую следующие поля: • NAZN - название пункта назначения рейса; • NUMR - номер рейса; • ТIР - тип самолета. 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив AIRPORT, состоящий из семи элементов типа АЕRОFLОТ; записи должны быть упорядочены по возрастанию номера рейса; • вывод на экран номеров...
Плавятся мозги от непонятной задачи C++
Кто может, помогите написать программу, которая меняет местами последний (младший) и предпоследний байты переменной i типа int.
C++ Елочка из звездочек http://www.cyberforum.ru/cpp-beginners/thread361013.html
Понимаю, что это довольно легко, но у меня не получается. задача состоит в том, чтобы сделать елочку. входные данные: n-число треугольников, допустим 3 выходные данные: * *** * *** ***** *
C++ Заменить все положительные элементы целочисленного массива на значение минимального пожалуйста, помогите решить задачку на турбо си. заменить все положительные|отрицательные элементы целочисленного массива размера 10 на значение минимального|максимального. подробнее

Показать сообщение отдельно
Тома1993
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 13
05.10.2011, 19:18     Синтаксический анализатор понятия "скобки" (рекурсия)
Здравствуйте, уже замучалась с программой. Нужно построить синтаксический анализатор для понятия скобки.
скобки::=квадратные | круглые
квадратные:: = [ [ квадратные ] ( круглые ) ] | B
круглые::=( ( круглые ) [ квадратные ] ) | А
Моя попытка просто ужасна, но не могу ничего придумать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
 
bool Square ( string str );
 
main()
{
      
      string str;
      
      cout << "Welcome to program Syntax Analysis of Bracket!" << endl;
      
      cout << "Input your string: " << endl;
      
      cin >> str;
      
      bool Bracket = false;
      
      int i = 0;
      
      if ( (str[i] == 'B') || ( str[i] == '[' )) 
         Bracket = Square ( str );
         
      if ( (str[i] == 'A') || ( str[i] == '(' )) 
         Bracket = Round ( str );
      
 
      system ("pause");
      return 0;     
}
 
bool Square ( string str )
 
{
    bool indSquare = false;
    
    bool indRound = false;
    
    bool Square = false;
    
    int i = 0;
    
    if ( !(str.length()-1))
       {
            if  ( str[i] == 'B' )
                Square = true;
            else //if ( str[i] != 'B' )
            
            {
                 
                 if ( (str[i] == '[') )
                    {
                        i++;
                        while ( str[i] == ' ' )
                              i++;
                            
                        //Check of '[square]'      
                        if ( str[i] == '[' )
                        {
                        
                          while ( str[i] != ']' )
                          {
                             i++; //ÏåðåäâèãГ*åìñÿ ГЇГ® âûðГ*æåГ*ГЁГѕ ГўГ® âëîæåГ*Г*ûõ ГЄГўГ*äðГ*ГІГ*ûõ ñêîáêГ*Гµ  
                             Square ( str );
                          }
                          indSquare = Square;
                          if ( indSquare == true ) 
                             {
                              
                               indSquare = Square;
                              
                             } 
                          else //if ( indSquare != true )
                              {
                                    cout << "There are no square brackets inside the main '[ ]'" << endl;  
                                    cout << "This isn't a brackets" << endl;     
                                    exit;
                              }
                          if ( indSquare == true ) //both square brackets inside the main are right
                             {
                                 i++;    
                                 while ( str[i] == ' ' )
                                       i++;
                                 if ( str[i] == ']' )
                                    indSquare = true;
                                 else
                                     {
                                            cout << "This isn't a brackets, there are no second ']' inside the main brackets" << endl;
                                            exit;  
                                     }
                             }//if ( indSquare == true )
                             
                             
                     }//if ( str[i] != '[') second square bracket
                 else
                     {
                       cout >> "This isn't a brackets, there are no second '['" << endl;
                       exit;
                     }
                 //End of check '(square')    
                     
                 //Check of '(round)'
                         i++;
                         
                         while ( str[i] == ' ' )
                               i++; 
                                
                         if ( str[i] == '(' )
                        {
                        
                          while ( str[i] != ')' )
                          {
                             i++;  
                            Round ( str[i], Square );
                          }
                          indRound = Round;
                          if ( indRound == true ) 
                             {
                              
                               indRound = Round;
                              
                             } 
                          else //if ( indRound != true )
                              {
                                    cout << "There are no second round brackets inside the main '[ ]'" << endl;  
                                    cout << "This isn't a brackets" << endl;     
                                    exit;
                              }
                          if ( indRound == true ) //both square brackets inside the main are right
                             {
                                 i++;    
                                 while ( str[i] == ' ' )
                                       i++;
                                 if ( str[i] == ')' )
                                    indRound = true;
                                 else
                                     {
                                            cout << "This isn't a brackets, there are no second ')' inside the main brackets" << endl;
                                            exit;  
                                     }
                             }//if ( indRound == true )
                             
                             
                     }//if ( str[i] != '(') second round bracket
                 else
                     {
                       cout >> "This isn't a brackets, there are no second '(' inside the main brackets" << endl;
                       exit;
                     }    
                     
                 //End of check '(round)'    
                 
                 
                 }
                 else //if ( str[i] != '[' ) main square bracket
                 {
                      cout << "There are no '[' " << endl;  
                      cout << "This isn't a brackets" << endl;     
                      exit;
                 }
            }    
            
                             
       }//{{if( i <= (string1.length()-1))}     
           
            if ( Square == true ) || ( ( indSquare == true ) && ( indRound == true ) )
               Square = true;
               else
               Square = false;
               
           return Square;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru