mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Исправляем ошибку определения ИД в условиях сценария и Добавляем шаблон игнорирования символа при сравнении строк *
This commit is contained in:
@@ -185,7 +185,7 @@ public:
|
|||||||
if (!lhs->isDecimal && !rhs->isDecimal) {
|
if (!lhs->isDecimal && !rhs->isDecimal) {
|
||||||
switch (Op) {
|
switch (Op) {
|
||||||
case tok_equal:
|
case tok_equal:
|
||||||
val.valD = lhs->valS == rhs->valS;
|
val.valD = compStr(lhs->valS, rhs->valS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -196,6 +196,17 @@ public:
|
|||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool compStr(String str1, String str2){
|
||||||
|
if (str1.length() != str2.length()) return false;
|
||||||
|
for (int i = 0; i < str1.length(); i++) {
|
||||||
|
if (str1[i] == '*' || str2[i] == '*') continue; //считаем, что если есть подстановочная звезда, то символы равны
|
||||||
|
if (str1[i] != str2[i]) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;//str1 == str2;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// CallExprAST - Класс узла выражения для вызова команды.
|
/// CallExprAST - Класс узла выражения для вызова команды.
|
||||||
@@ -269,7 +280,7 @@ public:
|
|||||||
|
|
||||||
bool hasEventIdName(String eventIdName) {
|
bool hasEventIdName(String eventIdName) {
|
||||||
//Serial.printf("Call from BinaryExprAST _IDNames:%s\n", _IDNames.c_str());
|
//Serial.printf("Call from BinaryExprAST _IDNames:%s\n", _IDNames.c_str());
|
||||||
return _IDNames.indexOf(eventIdName) >= 0; // определяем встречался ли ИД, для которого исполняем сценарий в выражении IF
|
return _IDNames.indexOf(" " + eventIdName + " ") >= 0; // определяем встречался ли ИД, для которого исполняем сценарий в выражении IF
|
||||||
}
|
}
|
||||||
|
|
||||||
IoTValue* exec() {
|
IoTValue* exec() {
|
||||||
@@ -609,7 +620,7 @@ public:
|
|||||||
case tok_identifier: {
|
case tok_identifier: {
|
||||||
if (IDNames) {
|
if (IDNames) {
|
||||||
String tmpstr = *IDNames;
|
String tmpstr = *IDNames;
|
||||||
*IDNames = tmpstr + " " + IdentifierStr;
|
*IDNames = tmpstr + " " + IdentifierStr + " ";
|
||||||
}
|
}
|
||||||
return ParseIdentifierExpr(IDNames);
|
return ParseIdentifierExpr(IDNames);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user