From e272e758b45a1ec1291018782c511b7e89ce7f81 Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 29 Jul 2020 02:21:31 -0700 Subject: [PATCH] update --- version3.0/nasal_gc.h | 16 +++++++++++++--- version3.0/nasal_runtime.h | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 version3.0/nasal_runtime.h diff --git a/version3.0/nasal_gc.h b/version3.0/nasal_gc.h index d7b78c9..8dccb36 100644 --- a/version3.0/nasal_gc.h +++ b/version3.0/nasal_gc.h @@ -56,9 +56,19 @@ public: ~nasal_scalar(); void clear(); bool set_type(int); - // +-*/~ - // = - // unary - ! + int nasal_scalar_add(int,int); + int nasal_scalar_sub(int,int); + int nasal_scalar_mult(int,int); + int nasal_scalar_div(int,int); + int nasal_scalar_link(int,int); + int nasal_scalar_unary_sub(int); + int nasal_scalar_unary_not(int); + int nasal_scalar_cmp_equal(int,int); + int nasal_scalar_cmp_not_equal(int,int); + int nasal_scalar_cmp_less(int,int); + int nasal_scalar_cmp_greater(int,int); + int nasal_scalar_cmp_less_or_equal(int,int); + int nasal_scalar_cmp_greater_or_equal(int,int); }; class nasal_virtual_machine diff --git a/version3.0/nasal_runtime.h b/version3.0/nasal_runtime.h new file mode 100644 index 0000000..b9f4987 --- /dev/null +++ b/version3.0/nasal_runtime.h @@ -0,0 +1,39 @@ +#ifndef __NASAL_RUNTIME_H__ +#define __NASAL_RUNTIME_H__ + +class nasal_runtime +{ +private: + nasal_ast root; + std::stack function_position; + std::stack running_stack; + std::stack closure_stack; +public: + nasal_runtime(); + ~nasal_runtime(); +}; + +nasal_runtime::nasal_runtime() +{ + root.clear(); + while(!function_position.empty()) + function_position.pop(); + while(!running_stack.empty()) + running_stack.pop(); + while(!closure_stack.empty()) + closure_stack.pop(); + return; +} +nasal_runtime::~nasal_runtime() +{ + root.clear(); + while(!function_position.empty()) + function_position.pop(); + while(!running_stack.empty()) + running_stack.pop(); + while(!closure_stack.empty()) + closure_stack.pop(); + return; +} + +#endif \ No newline at end of file