mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Добавляем сообщение о ненайденных ИД и исправляем баги
This commit is contained in:
@@ -104,6 +104,7 @@ class VariableExprAST : public ExprAST {
|
|||||||
return &(Item->value);
|
return &(Item->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SerialPrint("E", Name, "Элемент не найден или соединение потеряно", Name);
|
||||||
return nullptr; // Item не найден.
|
return nullptr; // Item не найден.
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -145,14 +146,16 @@ class BinaryExprAST : public ExprAST {
|
|||||||
if (RHS == nullptr || LHS == nullptr) return nullptr;
|
if (RHS == nullptr || LHS == nullptr) return nullptr;
|
||||||
|
|
||||||
IoTValue *rhs = RHS->exec(); // получаем значение правого операнда для возможного использования в операции присваивания
|
IoTValue *rhs = RHS->exec(); // получаем значение правого операнда для возможного использования в операции присваивания
|
||||||
|
if (rhs == nullptr) return nullptr;
|
||||||
|
|
||||||
if (Op == '=' && LHS->setValue(rhs)) { // если установка значения не поддерживается, т.е. слева не переменная, то работаем по другим комбинациям далее
|
if (Op == '=' && LHS->setValue(rhs)) { // если установка значения не поддерживается, т.е. слева не переменная, то работаем по другим комбинациям далее
|
||||||
return rhs; // иначе возвращаем присвоенное значение справа
|
return rhs; // иначе возвращаем присвоенное значение справа
|
||||||
}
|
}
|
||||||
|
|
||||||
IoTValue *lhs = LHS->exec(); // если присваивания не произошло, значит операция иная и необходимо значение левого операнда
|
IoTValue *lhs = LHS->exec(); // если присваивания не произошло, значит операция иная и необходимо значение левого операнда
|
||||||
|
if (lhs == nullptr) return nullptr;
|
||||||
|
|
||||||
|
|
||||||
if (lhs != nullptr && rhs != nullptr) {
|
|
||||||
if (lhs->isDecimal && rhs->isDecimal) {
|
if (lhs->isDecimal && rhs->isDecimal) {
|
||||||
switch (Op) {
|
switch (Op) {
|
||||||
case '>':
|
case '>':
|
||||||
@@ -228,7 +231,7 @@ class BinaryExprAST : public ExprAST {
|
|||||||
}
|
}
|
||||||
return &val;
|
return &val;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return &val;
|
return &val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -544,7 +547,8 @@ class IfExprAST : public ExprAST {
|
|||||||
return nullptr; //&zeroIotVal;
|
return nullptr; //&zeroIotVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cond_ret->isDecimal && cond_ret->valD) {
|
// если число больше нуля или строка не равна пустой, то считаем условие выполненным
|
||||||
|
if (cond_ret->isDecimal && cond_ret->valD || !(cond_ret->isDecimal) && cond_ret->valS != "") {
|
||||||
if (Then == nullptr) return nullptr;
|
if (Then == nullptr) return nullptr;
|
||||||
res_ret = Then->exec();
|
res_ret = Then->exec();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user