commit 0e7f17311c5e2ffa00a77fafdcfd37d9e9a64923 Author: Peter Hart Date: Fri Feb 21 17:43:54 2020 -0500 1st section - stacker diff --git a/stacker/compiled/drracket/errortrace/stacker_rkt.dep b/stacker/compiled/drracket/errortrace/stacker_rkt.dep new file mode 100644 index 0000000..5b503af --- /dev/null +++ b/stacker/compiled/drracket/errortrace/stacker_rkt.dep @@ -0,0 +1 @@ +("7.5" racket ("7f677926d966a8cec92cb8a8b1e1bd44f09f4aab" . "f00a81ce44a6ee4c31b492d8e2e91c13a4a1e5aa") (collects #"br" #"quicklang.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"runtime-config.rkt")) diff --git a/stacker/compiled/drracket/errortrace/stacker_rkt.zo b/stacker/compiled/drracket/errortrace/stacker_rkt.zo new file mode 100644 index 0000000..accb392 Binary files /dev/null and b/stacker/compiled/drracket/errortrace/stacker_rkt.zo differ diff --git a/stacker/stacker-test.rkt b/stacker/stacker-test.rkt new file mode 100644 index 0000000..4b957b0 --- /dev/null +++ b/stacker/stacker-test.rkt @@ -0,0 +1,6 @@ +#lang reader "stacker.rkt" +4 +8 ++ +3 +* diff --git a/stacker/stacker-test.rkt~ b/stacker/stacker-test.rkt~ new file mode 100644 index 0000000..55184b7 --- /dev/null +++ b/stacker/stacker-test.rkt~ @@ -0,0 +1,6 @@ +#lang reader "stacker.rkt" +4 +8 ++ +4 +* diff --git a/stacker/stacker.rkt b/stacker/stacker.rkt new file mode 100644 index 0000000..bdd5c02 --- /dev/null +++ b/stacker/stacker.rkt @@ -0,0 +1,37 @@ +#lang br/quicklang + +(define (read-syntax path port) + (define src-lines (port->lines port)) + (define src-datums (format-datums '(handle ~a) src-lines)) + (define module-datum `(module stacker-mod "stacker.rkt" + ,@src-datums)) + (datum->syntax #f module-datum)) + +(provide read-syntax) + +(define-macro (stacker-module-begin HANDLE-EXPR ...) + #'(#%module-begin + HANDLE-EXPR ... + (display (first stack)))) + +(provide (rename-out [stacker-module-begin #%module-begin])) + +(define stack empty) + +(define (pop-stack!) + (define arg (first stack)) + (set! stack (rest stack)) + arg) + +(define (push-stack! arg) + (set! stack (cons arg stack))) + +(define (handle [arg #f]) + (cond + [(number? arg) (push-stack! arg)] + [(or (equal? + arg) (equal? * arg)) + (define op-result (arg (pop-stack!) (pop-stack!))) + (push-stack! op-result)])) + +(provide handle) +(provide + *) \ No newline at end of file diff --git a/stacker/stacker.rkt~ b/stacker/stacker.rkt~ new file mode 100644 index 0000000..9dcd734 --- /dev/null +++ b/stacker/stacker.rkt~ @@ -0,0 +1,2 @@ +#lang br/quicklang +42