Добавляем режим чтения сценария из String

This commit is contained in:
2022-09-04 19:16:08 +03:00
parent ed2eb6cfb7
commit 0d7304e297

View File

@@ -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) {