Добавляем сообщение о ненайденных ИД и исправляем баги

This commit is contained in:
2022-10-22 22:53:49 +03:00
parent 480e20a62e
commit e5a6a7a0c4

View File

@@ -104,6 +104,7 @@ class VariableExprAST : public ExprAST {
return &(Item->value);
}
SerialPrint("E", Name, "Элемент не найден или соединение потеряно", Name);
return nullptr; // Item не найден.
}
};
@@ -145,14 +146,16 @@ class BinaryExprAST : public ExprAST {
if (RHS == nullptr || LHS == nullptr) return nullptr;
IoTValue *rhs = RHS->exec(); // получаем значение правого операнда для возможного использования в операции присваивания
if (rhs == nullptr) return nullptr;
if (Op == '=' && LHS->setValue(rhs)) { // если установка значения не поддерживается, т.е. слева не переменная, то работаем по другим комбинациям далее
return rhs; // иначе возвращаем присвоенное значение справа
}
IoTValue *lhs = LHS->exec(); // если присваивания не произошло, значит операция иная и необходимо значение левого операнда
if (lhs == nullptr) return nullptr;
if (lhs != nullptr && rhs != nullptr) {
if (lhs->isDecimal && rhs->isDecimal) {
switch (Op) {
case '>':
@@ -228,7 +231,7 @@ class BinaryExprAST : public ExprAST {
}
return &val;
}
}
return &val;
}
@@ -544,7 +547,8 @@ class IfExprAST : public ExprAST {
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;
res_ret = Then->exec();
} else {