через if(22==22&&11==22) строка возврашает строка 22==22&&11==22 и проходит проверка по ней через парсер
function(string str) -> boolean { // if
integer step = 0, n = 0, l = StringLength(str);
string s = "", e = "", sParam = "", sValue = "";
boolean bValue = false, bResult = true;
while(n < l) {
s = SubString(str, n, n + 1);
e = SubString(str, n + 1, n + 2);
if(step > 0 && s == " ") {
} else if(step == 0) {
if(s == "=" && e == "=") {
n = n + 1;
step = 1;
} else {
sParam = sParam + s;
}
} else if(step == 1) {
if(s == "|" && e == "|" && !bResult) {
step = 0;
} else if(s == "&" && e == "&" && bResult) {
bValue = bResult == bValue;
step = 0;
} else {
sValue = sValue + s;
bValue = sParam == sValue;
bResult = bResult == bValue;
}
}
n = n + 1;
}
return bResult;
}
так правильно? Или что я упустил... а то голова не пашет как реализовать =)
Принятый ответ
- Условия типа bool1() and bool2(). Если bool1() ложь, то bool2() выполнятся не будет.
- Условия типа bool1() or bool2(). Если bool1() правда, то bool2() выполнятся не будет.
- JASS2 не шарит за приоритет операций, то есть bool1() or bool2() and bool3() имеет тот же результат, что и (bool1() or bool2()) and bool3().
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
сначало я переношу текст где есть проверка и && как строка в случаем если встретим || то переносим строка проверку иначе результат получен.