Добавляем экранирование в строки сценария \\" и \\n

This commit is contained in:
2025-02-16 14:19:45 +03:00
parent 9d32b0c33d
commit 2e8a7f111c
2 changed files with 11 additions and 2 deletions

View File

@@ -707,7 +707,16 @@ int IoTScenario::gettok() {
IdentifierStr = ""; IdentifierStr = "";
LastChar = getLastChar(); LastChar = getLastChar();
while (LastChar != '"' && LastChar != EOF) { while (LastChar != '"' && LastChar != EOF) {
if (LastChar == '\\') { // обработка экранированных символов в строке
LastChar = getLastChar();
if (LastChar == '"') {
IdentifierStr += '"';
} else if (LastChar == 'n') {
IdentifierStr += '\n';
}
} else {
IdentifierStr += (char)LastChar; IdentifierStr += (char)LastChar;
}
LastChar = getLastChar(); LastChar = getLastChar();
} }
LastChar = getLastChar(); LastChar = getLastChar();

View File

@@ -7,7 +7,7 @@
"moduleName": "Scenario", "moduleName": "Scenario",
"moduleVersion": "1.0", "moduleVersion": "1.0",
"title": "Сценарии", "title": "Сценарии",
"moduleDesc": "Сценарии позволяют реализовать индивидуальный алгоритм работы контроллера с учетом происходящих событий. Они представляют из себя описательный язык того, что нужно сделать при наступлении того или иного события, учитывая конкретные условия. \nВ базе языка - выражение вида: “Если условие истина, то выполнить одно действие, а если нет, то иное”. При этом проверка такого выражения будет осуществляться только при наступлении события связанного с элементом конфигурации, который упоминается в этом выражении. \nУсловием или действием может быть любое разрешенное выражение. Они все при выполнении возвращают значение. Выражение может состоять из: идентификаторов элементов конфигурации, чисел (целые, дробные и отрицательные), строк в кавычках, операций сравнения < > <= >= == !=, операций присваивания значений =, математических операций +-*/, логических операций &|, комментариев после символа #, функций (в параметрах которых так же могут быть любые разрешенные выражения), конструкции ветвления IfThenElse, группирующие блоки выражений {}", "moduleDesc": "Сценарии позволяют реализовать индивидуальный алгоритм работы контроллера с учетом происходящих событий. Они представляют из себя описательный язык того, что нужно сделать при наступлении того или иного события, учитывая конкретные условия. \nВ базе языка - выражение вида: “Если условие истина, то выполнить одно действие, а если нет, то иное”. При этом проверка такого выражения будет осуществляться только при наступлении события связанного с элементом конфигурации, который упоминается в этом выражении. \nУсловием или действием может быть любое разрешенное выражение. Они все при выполнении возвращают значение. Выражение может состоять из: идентификаторов элементов конфигурации, чисел (целые, дробные и отрицательные), строк в кавычках, операций сравнения < > <= >= == !=, операций присваивания значений =, математических операций +-*/, логических операций &|, комментариев после символа #, функций (в параметрах которых так же могут быть любые разрешенные выражения), конструкции ветвления IfThenElse, группирующие блоки выражений {}, экранирование символа кавычек и переноса строки",
"funcInfo": [ "funcInfo": [
{ {
"name": "getIntFromNet", "name": "getIntFromNet",