2014 dxdy logo

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

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




На страницу Пред.  1, 2
 
 Re: Построение дерева разбора
Сообщение14.04.2013, 21:35 

(Оффтоп)

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

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

(Оффтоп)

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

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

(2 _Ivana.)

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

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

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

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

(Оффтоп)

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

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

(2 _Ivana.)

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

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

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

(Оффтоп)

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

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

 
 
 
 Re: Построение дерева разбора
Сообщение15.04.2013, 09:32 
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 

(2 _Ivana.)

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

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

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

(Оффтоп)

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 
Странно, ТС говорит про задачу построения дерева разбора, а речь во всем топике крутится вокруг абстрактного синтаксического дерева...
Вообще-то, это разные понятия, хоть и связанные.

 
 
 [ Сообщений: 25 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group