Got past temporary variable deallocation bug. Now working on functions.

This commit is contained in:
Samuel D. Crow
2021-04-08 15:31:36 -05:00
parent 8797cb8870
commit d37eb38ad1
7 changed files with 258 additions and 100 deletions

View File

@@ -5,6 +5,24 @@
*/
#include "runtime.h"
struct subroutine *callStack=nullptr;
subroutine::subroutine(enum STATES r)
{
this->ret=r;
this->called=callStack;
}
enum STATES subroutine::close()
{
if (callStack==nullptr) return STACK_UNDERFLOW_ERROR;
enum STATES r=callStack->ret;
struct subroutine *l=callStack->called;
delete callStack;
callStack=l;
return r;
}
int main(int argc, char *argv[])
{
unsigned int ret=run();

View File

@@ -14,9 +14,24 @@ enum STATES:unsigned int
{
EXIT,
UNDEFINED_STATE_ERROR,
STACK_UNDERFLOW_ERROR,
START
};
class subroutine
{
struct subroutine *called;
enum STATES ret;
public:
static enum STATES close();
subroutine(enum STATES r);
virtual ~subroutine()
{}
};
extern struct subroutine *callStack;
/* function prototype */
unsigned int run();