/* ** over */ void over( void ) { if(ds_len() < 2){ error_msg(5); clean_stack(); return; } ds_p++; *ds_p = *(ds_p-2); return; }
/* ** push */ void push( STACK_TYPE value ) { if(ds_len() >= STACK_SIZE){ error_msg(1); clean_stack(); return; } ds_p++; *ds_p = value; return; }
/* ** negate */ void negate( void ) { if(ds_len() < 1){ error_msg(2); clean_stack(); return ; } *ds_p = 0 - *ds_p; return; }
/* ** pop */ void pop( void ) { if(ds_len() < 1){ error_msg(2); clean_stack(); return ; } printf("%d\n",*ds_p); ds_p--; return; }
/* ** mul */ void mul( void ) { if(ds_len() < 2) { error_msg(5); clean_stack(); return; } *(ds_p-1) *= *ds_p; ds_p--; return; }
/* ** dup */ void dup( void ) { if(ds_len() < 1) { error_msg(2); clean_stack(); return; } ds_p++; *ds_p = *(ds_p-1); return; }
/* ** bool1 */ void bool1( void ) { if(ds_len() < 1){ error_msg(2); clean_stack(); return ; } if(*ds_p != 0) *ds_p = 1; return; }
/* ** swap */ void swap( void ) { if(ds_len() < 2) { error_msg(5); clean_stack(); return; } STACK_TYPE tmp; tmp = *ds_p; *ds_p = *(ds_p-1); *(ds_p-1) = tmp; return; }
/* ** rot */ void rot( void ) { STACK_TYPE tmp; if(ds_len() <3){ error_msg(6); clean_stack(); return; } tmp = *(ds_p-2); *(ds_p-2) = *(ds_p-1); *(ds_p-1) = *ds_p; *ds_p = tmp; return; }
/* ** interpret_words */ int interpret_words( char *s ) { int i; int status = INTERPRETER; switch( what_is(s) ) { case 2: case 4: push( atoi(s) ); break; case 5: status = COMPILER; break; case 6: status = COMMENT; break; case 0: case 3: for (i = 0; i <= CODEWORDS_NUM; i++) { if( i == CODEWORDS_NUM ) { printf("Undefine word!\n-->%s<--\n", s); clean_stack(); break; } else if( !strcmp(word_str[i], s) ) { word_pointer[i](); break; } } break; } return status; }
// Push an exception in the canonical position for handlers (stack(0)). void push_ex_oop(Node* ex_oop) { ensure_stack(1); // ensure room to push the exception set_stack(0, ex_oop); set_sp(1); clean_stack(1); }