mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Добавляем режим чтения сценария из String
This commit is contained in:
@@ -586,11 +586,22 @@ class BracketsExprAST : public ExprAST {
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
int IoTScenario::getLastChar() {
|
int IoTScenario::getLastChar() {
|
||||||
if (file) {
|
if (mode == 0) {
|
||||||
LastChar = file.read();
|
if (file) {
|
||||||
if (LastChar == 10) curLine++;
|
LastChar = file.read();
|
||||||
return LastChar;
|
if (LastChar == 10) curLine++;
|
||||||
} else return EOF;
|
return LastChar;
|
||||||
|
} else return EOF;
|
||||||
|
} else if (mode == 1) {
|
||||||
|
if (charCount < strFromFile.length()) {
|
||||||
|
LastChar = strFromFile.charAt(charCount);
|
||||||
|
//Serial.printf("%d, ", LastChar);
|
||||||
|
if (LastChar == 10) curLine++;
|
||||||
|
charCount++;
|
||||||
|
return LastChar;
|
||||||
|
} else return EOF;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||||
@@ -806,7 +817,7 @@ ExprAST *IoTScenario::ParseBracketsExpr(String *IDNames, bool callFromCondition)
|
|||||||
|
|
||||||
//if (CurTok == '}') break;
|
//if (CurTok == '}') break;
|
||||||
|
|
||||||
Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok);
|
//Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -931,15 +942,21 @@ ExprAST *IoTScenario::ParseExpression(String *IDNames, bool callFromCondition) {
|
|||||||
|
|
||||||
|
|
||||||
void IoTScenario::loadScenario(String fileName) { // подготавливаем контекст для чтения и интерпретации файла
|
void IoTScenario::loadScenario(String fileName) { // подготавливаем контекст для чтения и интерпретации файла
|
||||||
if (file) file.close();
|
if (mode == 0) {
|
||||||
file = FileFS.open(fileName, "r");
|
if (file) file.close();
|
||||||
if (!file) {
|
file = FileFS.open(fileName.c_str(), "r");
|
||||||
Error("Open file scenario error");
|
if (!file) {
|
||||||
return;
|
Error("Open file scenario error");
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
if (mode == 1) {
|
} else if (mode == 1) {
|
||||||
|
file = FileFS.open(fileName.c_str(), "r");
|
||||||
|
if (!file) {
|
||||||
|
Error("Open file scenario error");
|
||||||
|
return;
|
||||||
|
}
|
||||||
strFromFile = file.readString();
|
strFromFile = file.readString();
|
||||||
|
Serial.printf("strFromFile: %s, %s\n", strFromFile.c_str(), fileName.c_str());
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -950,8 +967,9 @@ void IoTScenario::exec(String eventIdName) { // посимвольно счит
|
|||||||
LastChar = 0;
|
LastChar = 0;
|
||||||
CurTok = 0;
|
CurTok = 0;
|
||||||
curLine = 1;
|
curLine = 1;
|
||||||
|
charCount = 0;
|
||||||
|
|
||||||
if (mode == 0) file.seek(0); else charCount = 0;
|
if (mode == 0) file.seek(0);
|
||||||
|
|
||||||
if (mode < 2) {
|
if (mode < 2) {
|
||||||
while (CurTok != EOF) {
|
while (CurTok != EOF) {
|
||||||
|
|||||||
Reference in New Issue
Block a user