mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 03:49:13 +03:00
Merge pull request #177 from biveraxe/ver4dev
Исправляем баг с фигурными скобками
This commit is contained in:
@@ -19,6 +19,7 @@ class IoTScenario {
|
|||||||
String IdentifierStr; // Заполняется, если tok_identifier
|
String IdentifierStr; // Заполняется, если tok_identifier
|
||||||
float NumVal; // Заполняется, если tok_number
|
float NumVal; // Заполняется, если tok_number
|
||||||
int LastChar;
|
int LastChar;
|
||||||
|
int curLine;
|
||||||
|
|
||||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||||
int gettok();
|
int gettok();
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ class SysCallExprAST : public ExprAST {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IoTValue *exec() {
|
IoTValue *exec() {
|
||||||
Serial.printf("Call from SysCallExprAST exec %d\n", operation);
|
//Serial.printf("Call from SysCallExprAST exec %d\n", operation);
|
||||||
|
|
||||||
if (isIotScenException) return nullptr; // если прерывание, то сразу выходим
|
if (isIotScenException) return nullptr; // если прерывание, то сразу выходим
|
||||||
|
|
||||||
@@ -586,8 +586,11 @@ class BracketsExprAST : public ExprAST {
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
int IoTScenario::getLastChar() {
|
int IoTScenario::getLastChar() {
|
||||||
if (file) return file.read();
|
if (file) {
|
||||||
else return EOF;
|
LastChar = file.read();
|
||||||
|
if (LastChar == 10) curLine++;
|
||||||
|
return LastChar;
|
||||||
|
} else return EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||||
@@ -712,7 +715,7 @@ int IoTScenario::GetTokPrecedence() {
|
|||||||
|
|
||||||
/// Error* - Это небольшие вспомогательные функции для обработки ошибок.
|
/// Error* - Это небольшие вспомогательные функции для обработки ошибок.
|
||||||
ExprAST *IoTScenario::Error(const char *Str) {
|
ExprAST *IoTScenario::Error(const char *Str) {
|
||||||
Serial.printf("Error: %s\n", Str);
|
Serial.printf("Scenario error in line %d: %s\n", curLine-1, Str);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -781,7 +784,7 @@ ExprAST *IoTScenario::ParseParenExpr() {
|
|||||||
|
|
||||||
if (CurTok != ')')
|
if (CurTok != ')')
|
||||||
return Error("expected ')'");
|
return Error("expected ')'");
|
||||||
getNextToken(); // получаем ).
|
//getNextToken(); // получаем ).
|
||||||
return V;
|
return V;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -807,7 +810,7 @@ ExprAST *IoTScenario::ParseBracketsExpr() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getNextToken(); // получаем }.
|
//getNextToken(); // получаем }.
|
||||||
return new BracketsExprAST(bracketsList);
|
return new BracketsExprAST(bracketsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -930,13 +933,17 @@ void IoTScenario::exec(String eventIdName) { // посимвольно счит
|
|||||||
LastChar = 0;
|
LastChar = 0;
|
||||||
CurTok = 0;
|
CurTok = 0;
|
||||||
file.seek(0);
|
file.seek(0);
|
||||||
|
curLine = 1;
|
||||||
|
|
||||||
while ((getNextToken()) != EOF) {
|
while ((getNextToken()) != EOF) {
|
||||||
switch (CurTok) {
|
switch (CurTok) {
|
||||||
case tok_if: {
|
case tok_if: {
|
||||||
IDNames = ""; // сбрасываем накопитель встречающихся идентификаторов в условии
|
IDNames = ""; // сбрасываем накопитель встречающихся идентификаторов в условии
|
||||||
ExprAST *tmpAST = ParseIfExpr(&IDNames);
|
ExprAST *tmpAST = ParseIfExpr(&IDNames);
|
||||||
if (!tmpAST) break;
|
if (!tmpAST) {
|
||||||
|
Error("IF Expr wrong.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (tmpAST->hasEventIdName(eventIdName)) {
|
if (tmpAST->hasEventIdName(eventIdName)) {
|
||||||
tmpAST->exec();
|
tmpAST->exec();
|
||||||
|
|||||||
Reference in New Issue
Block a user