Merge pull request #36 from 2blSoft/ver4dev

Добавляем экранирование в строки сценария \" и \n
This commit is contained in:
Mit4el
2025-02-16 18:05:19 +03:00
committed by GitHub
2 changed files with 11 additions and 2 deletions

View File

@@ -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();

View File

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