- wrote debugger macro
svn: r125
This commit is contained in:
parent
1b25e0a121
commit
fa9459d08d
|
@ -1,46 +1,48 @@
|
||||||
#|
|
#|
|
||||||
(debugger
|
(debugger
|
||||||
(processes (p ["sine.ss" (sin/x 5 8 bind '(sin-x x)))
|
(processes (p ("sine.ss" [sin/x 5 8 bind '(sin-x x)]
|
||||||
(foo 10 20 bind '(sin-x x)))]
|
[foo 10 20 bind '(sin-x x)])
|
||||||
["sine-extra.ss"]))
|
("sine-extra.ss")))
|
||||||
|
|
||||||
(define sin/x (hold sin/x))
|
(define sin/x (hold sin/x))
|
||||||
(define x (+ 200 (second sin/x)))
|
(define x (+ 200 (second sin/x)))
|
||||||
(print-b "x:" x))
|
(print-b "x:" x))
|
||||||
|
|
||||||
*** translates to ***
|
*** translates to ***
|
||||||
|
|
||||||
(define p (create-debug-process))
|
(define p (create-debug-process))
|
||||||
(define <temp2> (create-debug-client p "sine.ss"))
|
(define-values (sin/x foo ...)(
|
||||||
(define sin/x (trace/bind <temp2> 5 8 '(sin-x x)))
|
(let ([tmp (create-debug-client p "sine.ss")])
|
||||||
...
|
(values (create-trace tmp 5 8 'bind '(sin-x x))))
|
||||||
(start/resume <temp1>)
|
...
|
||||||
...
|
(start/resume <temp1>)
|
||||||
|#
|
...
|
||||||
|
|#
|
||||||
(module mztake-syntax (lib "frtime-big.ss" "frtime")
|
|
||||||
|
(module mztake-syntax (lib "frtime-big.ss" "frtime")
|
||||||
(require (lib "mztake.ss" "mztake"))
|
|
||||||
(require-for-syntax (lib "list.ss"))
|
(define-syntax debugger-module-begin
|
||||||
|
(syntax-rules (debugger)
|
||||||
(define-syntax (debugger stx)
|
[(_ (debugger . clauses))
|
||||||
(syntax-case stx (processes)
|
(#%module-begin (debugger . clauses))]))
|
||||||
[(debugger
|
|
||||||
(processes (clause ...))
|
(define-syntax debugger
|
||||||
expr ...)
|
(syntax-rules (processes)
|
||||||
(foldl
|
[(_ (processes (proc-id (client (trace line col cmd . args) ...))
|
||||||
(lambda (cls prev)
|
...)
|
||||||
(syntax-case prev ()
|
expr ...)
|
||||||
[(begin transformed-expr ...)
|
(begin
|
||||||
(syntax-case cls ()
|
(define proc-id (create-debug-process))
|
||||||
[(proc-id (client trace-clause ...) ...)
|
...
|
||||||
(with-syntax ([(client-name ...)
|
(define-values (trace ...)
|
||||||
(generate-temporaries #'(client ...))])
|
(let ([tmp (create-debug-client proc-id client)])
|
||||||
(begin
|
(values
|
||||||
transformed-expr ...
|
(create-trace line col 'cmd . args)
|
||||||
(define proc-id (create-debug-process))
|
...)))
|
||||||
(define-values (client-name trace ...)
|
...
|
||||||
(let ([tmp (create-debug-client proc-id)])
|
expr
|
||||||
) ...
|
...)]))
|
||||||
|
|
||||||
)
|
(provide debugger
|
||||||
|
(rename debugger-module-begin #%module-begin)
|
||||||
|
(all-from-except (lib "frtime-big.ss" "frtime") #%module-begin)))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user