From 3ddc966106cb24bdbfe5be6571291e76722b3ebb Mon Sep 17 00:00:00 2001 From: Syndamia Date: Wed, 30 Nov 2022 09:55:13 +0200 Subject: [PNP] Fixed retrieval of value in variable --- src/PolishNotationParser.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/PolishNotationParser.cpp') diff --git a/src/PolishNotationParser.cpp b/src/PolishNotationParser.cpp index 22905a6..bf941d8 100644 --- a/src/PolishNotationParser.cpp +++ b/src/PolishNotationParser.cpp @@ -82,6 +82,7 @@ void PNParser::pushToWork(Memory& mem, MemoryData* data, ifstream& inFile) { void PNParser::parseScope(ifstream& inFile, Memory& mem, int start, int end) { mem.scopeVars.push(0); + bool absorbed = false; while (start < inFile.tellg() && inFile.tellg() < end && inFile.peek() != EOF) { skipSpacing(inFile); @@ -119,10 +120,10 @@ void PNParser::parseScope(ifstream& inFile, Memory& mem, int start, int end) { /* If value is a variable */ Name* cname; - for (auto i = ++mem.vars.rbegin(); mem.vars.size() > 0 && i++ != mem.vars.rend(); ++i) { + for (auto i = mem.vars.rbegin(); i++ != mem.vars.rend(); ++i) { cname = static_cast(*i); if (cname->value == name->value) { - MemoryData* value = new MemoryData(*static_cast(*(--i))); + MemoryData* value = (*(--i))->clone(); pushToWork(mem, value, inFile); absorbed = true; break; @@ -136,7 +137,7 @@ void PNParser::parseScope(ifstream& inFile, Memory& mem, int start, int end) { pushToWork(mem, name, inFile); } cout << static_cast(mem.vars.back())->value << endl; - // cout << static_cast(mem.work.top())->value << endl; + cout << static_cast(mem.work.top())->value << endl; for (int i = mem.scopeVars.top(); i > 0; i--) { delete mem.vars.back(); -- cgit v1.2.3