2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 21:35 
Заслуженный участник


27/04/09
28128

(Оффтоп)

Вот угловые скобки конкретизации шаблона от его имени отделяете зачем-то, а в заголовке for ни одного пробела… :roll: Ужесть.

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 21:54 


05/09/12
2587

(Оффтоп)

Давайте продолжать критиковать чужой стиль - необязательные скобки при единственных внутренних операторах тел if и while тоже можно убрать :-)

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 22:32 
Заслуженный участник


27/04/09
28128

(2 _Ivana.)

Скобки как раз не резонно — операторы туда могут добавляться в будущем. А пробелы отделяют токены для большего удобства взгляда. Конечно,можно писать числа33и пунктуацию слитно с текстом—всё же равно отделится.Но зачем?

Есть и операции, которые лучше писать слитно — . и ->, к примеру. В большинстве случаев такие правила семантически оправданы.

А ещё есть запятые и другие вещи, любящие пробел с одной стороны и слитность с другой. С запятыми уже явно преемственность из естественных текстов — их можно было бы писать и раздельно с обоих сторон…

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 22:44 


05/09/12
2587

(Оффтоп)

Вот когда добавятся, тогда можно и скобки поставить :-) Хотя, я как-то наступал на презабавнейшие грабли - вызывал внутри условия одну процедуру, скобки не поставил, все работало, а потом я решил оптимизировать и заменил процедуру на макрос :lol:
А вообще, имхо, вы немного категоричны - конечно где-то надо проводить грань необходимого форматирования текста кода, но и излишне усердствовать в этом не стоит, особенно с эпитетами типа "ужас" :-)

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 23:11 
Заслуженный участник


27/04/09
28128

(2 _Ivana.)

_Ivana в сообщении #710268 писал(а):
Вот когда добавятся, тогда можно и скобки поставить :-)
А когда останется один оператор — снова убавить? :wink: А если добавление и убирание частое?

_Ivana в сообщении #710268 писал(а):
А вообще, имхо, вы немного категоричны - конечно где-то надо проводить грань необходимого форматирования текста кода, но и излишне усердствовать в этом не стоит, особенно с эпитетами типа "ужас" :-)
Может быть, хотя я не верю. (И там было «ужесть».) :-)

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 23:22 


05/09/12
2587

(Оффтоп)

arseniiv в сообщении #710284 писал(а):
А когда останется один оператор — снова убавить? А если добавление и убирание частое?
Да, снова убавить. А если частое - тогда автор кода никак не определится что делать :-) А если сразу ясно, что по условию надо один цикл прогнать (с единственным оператором в его теле) или break/continue/return написать - тогда безо всяких скобок и более того - в одну строчку, чтобы была структурная визуальная стройность.

ЗЗЫ какое у нас с вами получается дерево раздбора :-)

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение15.04.2013, 09:32 


06/04/13
5
pavlov_ivan в сообщении #710214 писал(а):
12301230 в сообщении #709324 писал(а):
pavlov_ivan в сообщении #709022 писал(а):
Всем спасибо, осилил таки :D

Поделишься кодом?)

Вот та часть кода, которая строит дерево

(Оффтоп)

Код:
void hang_up(stack <char>& st1, stack <node*>& st2)
{
   node* p;
   p=new_node(st1.top(),NULL,NULL); st1.pop();
   p->l=st2.top(); st2.pop();
   p->r=st2.top(); st2.pop();
   st2.push(p);
}
а можно весь проект целиком?)

node* expr_to_tree(char *expr)
{
   stack <char> st1;
   stack <node*> st2;
   int i, len;
   node* p;
   len=strlen(expr);
   for(i=0;i<len;++i)         
   {
      if(expr[i]==')')             
      {
         while(st1.top()!='(')
         {
            hang_up(st1,st2);
         }
         st1.pop();
      }
      if(is_var(expr[i]))
      {
         p=new_node(expr[i],NULL,NULL);
         st2.push(p);
      }
      if(expr[i]=='(')                         
         st1.push(expr[i]);           
      if(is_oprt(expr[i]))
      {
         while(!st1.empty()&&(oprt_prior(st1.top())>=oprt_prior(expr[i])))
         {
            hang_up(st1,st2);
         }
         st1.push(expr[i]);           
      }                                   
   }
   while(!st1.empty())
   {                     
      hang_up(st1,st2);
   }
   return st2.top();
}

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение15.04.2013, 15:32 
Заслуженный участник


27/04/09
28128

(2 _Ivana.)

_Ivana в сообщении #710294 писал(а):
Да, снова убавить. А если частое - тогда автор кода никак не определится что делать :-)
:mrgreen: Не соглашусь.

Ладно, со своей стороны пока больше не буду оффтопить здесь. Ещё столько тем!

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение16.04.2013, 23:14 


09/04/13
6

(Оффтоп)

arseniiv в сообщении #710505 писал(а):

(2 _Ivana.)

_Ivana в сообщении #710294 писал(а):
Да, снова убавить. А если частое - тогда автор кода никак не определится что делать :-)
:mrgreen: Не соглашусь.

Ладно, со своей стороны пока больше не буду оффтопить здесь. Ещё столько тем!

Я как обычно все пропустил?
arseniiv в сообщении #710224 писал(а):

(Оффтоп)

Вот угловые скобки конкретизации шаблона от его имени отделяете зачем-то, а в заголовке for ни одного пробела… :roll: Ужесть.

1) Дело вкуса в msdn тоже пишут vector <int> http://msdn.microsoft.com/en-us/library ... 4bwhd.aspx
2) Если for более сложный, то я обычно ставлю пробелы, здесь смысла в них не вижу
_Ivana в сообщении #710241 писал(а):

(Оффтоп)

Давайте продолжать критиковать чужой стиль - необязательные скобки при единственных внутренних операторах тел if и while тоже можно убрать :-)
Не сразу заметил, что одинаковый код можно вынести в hang_up, изначально в скобках был не один оператор
_Ivana в сообщении #710268 писал(а):

(Оффтоп)

Вот когда добавятся, тогда можно и скобки поставить :-) Хотя, я как-то наступал на презабавнейшие грабли - вызывал внутри условия одну процедуру, скобки не поставил, все работало, а потом я решил оптимизировать и заменил процедуру на макрос :lol:
А вообще, имхо, вы немного категоричны - конечно где-то надо проводить грань необходимого форматирования текста кода, но и излишне усердствовать в этом не стоит, особенно с эпитетами типа "ужас" :-)
Компиляторы вроде сами умеют такие оптимизации делать
12301230, скинул в ЛС

 Профиль  
                  
 
 Re: Построение дерева разбора
Сообщение17.04.2013, 13:01 


23/12/07
1763
Странно, ТС говорит про задачу построения дерева разбора, а речь во всем топике крутится вокруг абстрактного синтаксического дерева...
Вообще-то, это разные понятия, хоть и связанные.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group