Skip to content

Commit 99db851

Browse files
committed
Make rendering AST better
1 parent 98c77f1 commit 99db851

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

www/notes/knock/render-ast.rkt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,25 @@
2929
[(var-e v) (cons i (list (label (symbol->string v) i)))]
3030
[(char-e c) (cons i (list (label (~a c) i)))]
3131
[(fun-e f) (cons i (list (label (~a "fun " f) i)))]
32-
[(call-e f es) (cons i (render-subs i (~a "(call " f " ...)") es))]
33-
[(app-e f es) (cons i (render-subs i (~a "(" f " ...)") es))]
34-
[(prim-e p es) (cons i (render-subs i (~a "(" (symbol->string p) " ...)") es))]
35-
[(if-e e t f) (cons i (render-subs i "if" (list e t f)))]
32+
[(call-e f es)
33+
(cons i (let ((l (label (~a "(call " (fname f) " ...)") i)))
34+
(render-subs i l es)))]
35+
[(app-e f es)
36+
(cons i (let ((l (label (~a "(" f " ...)") i)))
37+
(render-subs i l es)))]
38+
[(prim-e p es)
39+
(cons i (let* ((l (label (~a "(" (symbol->string p) " ...)") i))
40+
(l2 (color "red" l)))
41+
(render-subs i l2 es)))]
42+
[(if-e e t f)
43+
(cons i (let ((l (label "if" i)))
44+
(render-subs i l (list e t f))))]
3645
[(let-e bs b) (cons i (render-let i "let" bs b))])))
3746

3847
; On big programs this will be bad (it's n^2, I think)
39-
(define (render-subs pid str es)
48+
(define (render-subs pid parent es)
4049
(let* ((subps (map render-expr es))
4150
(subs (append* (map cdr subps)))
42-
(parent (label str pid))
4351
(ids (map car subps)))
4452
`(,@subs
4553
,parent
@@ -63,3 +71,8 @@
6371
(bn (render-expr body))
6472
(cid (car bn)))
6573
(cons i `(,@(cdr bn) ,vn ,(color "deeppink2" (e i cid)))))]))
74+
75+
(define (fname f)
76+
(match f
77+
[(fun-e f) f]
78+
[_ f]))

0 commit comments

Comments
 (0)