fix: bug of loss dequate
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
cmake_minimum_required(VERSION 3.15.2)
|
cmake_minimum_required(VERSION 3.15.2)
|
||||||
project(python_interpreter)
|
project(python_interpreter)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address")
|
||||||
|
|
||||||
include_directories(/usr/include/antlr4-runtime/)
|
include_directories(/usr/include/antlr4-runtime/)
|
||||||
include_directories(
|
include_directories(
|
||||||
|
@ -184,6 +184,7 @@ std::any EvalVisitor::visitContinue_stmt(
|
|||||||
std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) {
|
std::any EvalVisitor::visitReturn_stmt(Python3Parser::Return_stmtContext *ctx) {
|
||||||
if (!ctx->testlist()) return FlowType(RETURN, std::vector<std::any>());
|
if (!ctx->testlist()) return FlowType(RETURN, std::vector<std::any>());
|
||||||
std::any val = visitTestlist(ctx->testlist());
|
std::any val = visitTestlist(ctx->testlist());
|
||||||
|
val = DeQuate(val, Variables);
|
||||||
std::vector<std::any> *val_ptr = std::any_cast<std::vector<std::any>>(&val);
|
std::vector<std::any> *val_ptr = std::any_cast<std::vector<std::any>>(&val);
|
||||||
if (val_ptr) return FlowType(RETURN, *val_ptr);
|
if (val_ptr) return FlowType(RETURN, *val_ptr);
|
||||||
std::vector<std::any> tmp;
|
std::vector<std::any> tmp;
|
||||||
|
@ -15,7 +15,7 @@ std::any VariableContainer::ReadVariable(const std::string &name) {
|
|||||||
if (top.find(name) != top.end()) return top[name];
|
if (top.find(name) != top.end()) return top[name];
|
||||||
}
|
}
|
||||||
if (GlobalScope.find(name) != GlobalScope.end()) return GlobalScope[name];
|
if (GlobalScope.find(name) != GlobalScope.end()) return GlobalScope[name];
|
||||||
throw InterpretException(("ReadVariable: " + name + " not found").c_str());
|
throw InterpretException(("ReadVariable: not found"));
|
||||||
}
|
}
|
||||||
void VariableContainer::WriteVariable(const std::string &name,
|
void VariableContainer::WriteVariable(const std::string &name,
|
||||||
const std::any &value, bool cover) {
|
const std::any &value, bool cover) {
|
||||||
|
Reference in New Issue
Block a user