parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Да эти задачи можно решать вообще с помощью только вложенных if, но это не красиво...

Sergei 15.10.2002 20:36

Да проблема была не с булевой алгеброй и даже не с приоритетами - тут всё относительно просто и про это хорошо написано (и в документации к парсеру в том числе).
Проблема была в том, как более изящно ("в одну строчку") написать рабочий код, определяющий можно ли использовать тот или иной оператор. Если мы помешаем в логическое выражение до "&& def переменная" оператор, который может вызвать ошибку (например, поле формы пусто, а мы пытаемся в нём что-то искать), то мы ошибку и получим.
Если навернуть вместо нормально кода:
@main[]
$str[]
^if(def $str && ^str.pos[ABC]>0){
YES	
}{
NO	
}
вот такой 3-х этажный через вложенные IF:
@main[]
$str[]
^if(def $str){
^if(^str.pos[ABC]>0){
YES	
}{
NO	
}
}{
переменная не определена
}
то всё будет работать как трактор - и никакой булевой алгебры вообще не надо (ни and, ни or, ни xor), но согласитесь, что красивее написать код в одну строчку, чем писать тоже самое на весь экран. Вы как хороший программист, наверное, полностью разделяете мою точку зрения на этот счёт.
Я думаю, что мы с Вами говорим об одном и том же и друг друга прекрасно понимаем, поэтому предлагаю данную тему закрыть :). Я получил от Вас исчерпывающий ответ на свой вопрос, чем вполне удовлетворён. Спасибо.
Желаю удачи!