This commit is contained in:
Valk Richard Li 2020-07-29 02:21:31 -07:00 committed by GitHub
parent 7a36174789
commit e272e758b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 3 deletions

View File

@ -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

View File

@ -0,0 +1,39 @@
#ifndef __NASAL_RUNTIME_H__
#define __NASAL_RUNTIME_H__
class nasal_runtime
{
private:
nasal_ast root;
std::stack<int> function_position;
std::stack<int> running_stack;
std::stack<int> 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