diff --git a/src/classes/IoTScenario.cpp b/src/classes/IoTScenario.cpp index 34b6eb0f..754d12c5 100644 --- a/src/classes/IoTScenario.cpp +++ b/src/classes/IoTScenario.cpp @@ -707,7 +707,16 @@ int IoTScenario::gettok() { IdentifierStr = ""; LastChar = getLastChar(); while (LastChar != '"' && LastChar != EOF) { - IdentifierStr += (char)LastChar; + if (LastChar == '\\') { // обработка экранированных символов в строке + LastChar = getLastChar(); + if (LastChar == '"') { + IdentifierStr += '"'; + } else if (LastChar == 'n') { + IdentifierStr += '\n'; + } + } else { + IdentifierStr += (char)LastChar; + } LastChar = getLastChar(); } LastChar = getLastChar(); diff --git a/src/modules/sceninfo.json b/src/modules/sceninfo.json index 551f6d0e..53265548 100644 --- a/src/modules/sceninfo.json +++ b/src/modules/sceninfo.json @@ -7,7 +7,7 @@ "moduleName": "Scenario", "moduleVersion": "1.0", "title": "Сценарии", - "moduleDesc": "Сценарии позволяют реализовать индивидуальный алгоритм работы контроллера с учетом происходящих событий. Они представляют из себя описательный язык того, что нужно сделать при наступлении того или иного события, учитывая конкретные условия. \nВ базе языка - выражение вида: “Если условие истина, то выполнить одно действие, а если нет, то иное”. При этом проверка такого выражения будет осуществляться только при наступлении события связанного с элементом конфигурации, который упоминается в этом выражении. \nУсловием или действием может быть любое разрешенное выражение. Они все при выполнении возвращают значение. Выражение может состоять из: идентификаторов элементов конфигурации, чисел (целые, дробные и отрицательные), строк в кавычках, операций сравнения < > <= >= == !=, операций присваивания значений =, математических операций +-*/, логических операций &|, комментариев после символа #, функций (в параметрах которых так же могут быть любые разрешенные выражения), конструкции ветвления IfThenElse, группирующие блоки выражений {}", + "moduleDesc": "Сценарии позволяют реализовать индивидуальный алгоритм работы контроллера с учетом происходящих событий. Они представляют из себя описательный язык того, что нужно сделать при наступлении того или иного события, учитывая конкретные условия. \nВ базе языка - выражение вида: “Если условие истина, то выполнить одно действие, а если нет, то иное”. При этом проверка такого выражения будет осуществляться только при наступлении события связанного с элементом конфигурации, который упоминается в этом выражении. \nУсловием или действием может быть любое разрешенное выражение. Они все при выполнении возвращают значение. Выражение может состоять из: идентификаторов элементов конфигурации, чисел (целые, дробные и отрицательные), строк в кавычках, операций сравнения < > <= >= == !=, операций присваивания значений =, математических операций +-*/, логических операций &|, комментариев после символа #, функций (в параметрах которых так же могут быть любые разрешенные выражения), конструкции ветвления IfThenElse, группирующие блоки выражений {}, экранирование символа кавычек и переноса строки", "funcInfo": [ { "name": "getIntFromNet",