diff --git a/.vscode/launch.json b/.vscode/launch.json index 4f21796..f54449a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,7 @@ "name": "Grammar - simple.bfe", "input": "samples/simple.bfe", "visualParseTree": true, - "grammar": "${workspaceFolder}/grammar/bf.g4" + "grammar": "${workspaceFolder}/grammar/bfe.g4" }, { "type": "antlr-debug", @@ -18,7 +18,15 @@ "name": "Grammar - group.bfe", "input": "samples/group.bfe", "visualParseTree": true, - "grammar": "${workspaceFolder}/grammar/bf.g4" + "grammar": "${workspaceFolder}/grammar/bfe.g4" + }, + { + "type": "antlr-debug", + "request": "launch", + "name": "Grammar - testmem.bfe", + "input": "samples/testmem.bfe", + "visualParseTree": true, + "grammar": "${workspaceFolder}/grammar/bfe.g4" }, { "name": "GDB - simple.bfe", @@ -76,6 +84,25 @@ "ignoreFailures": true } ] + }, + { + "name": "GDB - testmem.bfe", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/build/main.out", + "args": ["samples/testmem.bfe"], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] } ] } \ No newline at end of file diff --git a/include/executeBFE.hpp b/include/executeBFE.hpp index 48f7132..fb496e6 100644 --- a/include/executeBFE.hpp +++ b/include/executeBFE.hpp @@ -9,11 +9,11 @@ using namespace antlr4; using namespace antlrcpp; // using namespace std; class executeBGE: public bfeBaseVisitor{ - private: + protected: std::vector memory; int pointer=0; public: - executeBGE() : bfeBaseVisitor(),memory(100) { + executeBGE() : bfeBaseVisitor(),memory(1) { } // Any visitProgram(bfeParser::ProgramContext*) override; Any visitNumberedStmt(bfeParser::NumberedStmtContext*) override; diff --git a/samples/testmem.bfe b/samples/testmem.bfe new file mode 100644 index 0000000..2467cca --- /dev/null +++ b/samples/testmem.bfe @@ -0,0 +1 @@ +(+65.>)65536 \ No newline at end of file diff --git a/src/executeBFE.cpp b/src/executeBFE.cpp index 8372851..b21317c 100644 --- a/src/executeBFE.cpp +++ b/src/executeBFE.cpp @@ -20,9 +20,6 @@ Any executeBGE::visitNumberedStmt(bfeParser::NumberedStmtContext *ctx){ } Any executeBGE::visitPtrIncr(bfeParser::PtrIncrContext *ctx){ - if(memory.size() throw this program out + if(memory.max_size()==memory.size()){ + throw (std::string("Max Size Reached ")+to_string(memory.capacity())); + } + // its about to be incremented -> need to increase + if(memory.size()==pointer+1){ + memory.push_back(0); + } pointer++; return Any(); } Any executeBGE::visitPtrLeft(bfeParser::PtrLeftContext *ctx){ - if(pointer==0) throw std::string("Decrement below zero"); + if(pointer==0){ + throw std::string("Decrement below zero"); + } pointer--; return Any(); }