Major refactoring. Major problems!

On the right path but it doesn't work yet.
This commit is contained in:
Simon Brooke 2018-12-26 20:30:14 +00:00
parent ae8ba67ed7
commit 9937f344dc
20 changed files with 695 additions and 506 deletions

View file

@ -31,44 +31,64 @@
* Dummy up a Lisp read call with its own stack frame.
*/
struct cons_pointer repl_read( struct cons_pointer stream_pointer ) {
struct stack_frame *frame = make_empty_frame( NULL, oblist );
struct cons_pointer result = NIL;
struct cons_pointer frame_pointer = make_empty_frame( NIL );
if (!nilp(frame_pointer)) {
inc_ref(frame_pointer);
struct stack_frame *frame = get_stack_frame(frame_pointer);
set_reg( frame, 0, stream_pointer );
struct cons_pointer result = lisp_read( frame, oblist );
free_stack_frame( frame );
if (frame != NULL){
return result;
set_reg( frame, 0, stream_pointer );
struct cons_pointer result = lisp_read( frame, frame_pointer, oblist );
}
dec_ref(frame_pointer);
}
return result;
}
/**
* Dummy up a Lisp eval call with its own stack frame.
*/
struct cons_pointer repl_eval( struct cons_pointer input ) {
struct stack_frame *frame = make_empty_frame( NULL, oblist );
struct cons_pointer result = NIL;
struct cons_pointer frame_pointer = make_empty_frame( NIL );
if (!nilp(frame_pointer)) {
inc_ref(frame_pointer);
struct stack_frame *frame = get_stack_frame(frame_pointer);
set_reg( frame, 0, input );
struct cons_pointer result = lisp_eval( frame, oblist );
if ( !exceptionp( result ) ) {
free_stack_frame( frame );
if (frame != NULL){
set_reg( frame, 0, input );
result = lisp_eval( frame, frame_pointer, oblist );
}
return result;
dec_ref(frame_pointer);
}
return result;
}
/**
* Dummy up a Lisp print call with its own stack frame.
*/
struct cons_pointer repl_print( struct cons_pointer stream_pointer,
struct cons_pointer value ) {
struct stack_frame *frame = make_empty_frame( NULL, oblist );
struct cons_pointer value ) {
struct cons_pointer result = NIL;
struct cons_pointer frame_pointer = make_empty_frame( NIL );
if (!nilp(frame_pointer)) {
struct stack_frame *frame = get_stack_frame(frame_pointer);
set_reg( frame, 0, value );
set_reg( frame, 1, stream_pointer );
struct cons_pointer result = lisp_print( frame, oblist );
free_stack_frame( frame );
if (frame != NULL){
set_reg( frame, 0, value );
set_reg( frame, 1, stream_pointer );
result = lisp_print( frame, frame_pointer, oblist );
free_stack_frame( frame );
}
dec_ref(frame_pointer);
}
return result;
return result;
}
/**