-
Notifications
You must be signed in to change notification settings - Fork 1
/
pydesugar2.rkt
55 lines (29 loc) · 1007 Bytes
/
pydesugar2.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#lang racket
(require pywalk)
(require (file "/usr/local/share/python-compiler/pysugarp3_rkt.zo"))
(define (eliminate-with stmt)
(match stmt
[`(With . ,_)
(error "TODO: eliminate with")]
[else (list stmt)]))
(define (eliminate-assert stmt)
(match stmt
[`(Assert . ,_)
(error "TODO: eliminate assert")]
[else (list stmt)]))
(define (canonicalize-exceptions stmt)
(match stmt
[`(Assert . ,_)
(error "TODO: eliminate assert")]
[else (list stmt)]))
(define (normalize stmt)
(error "TODO: normalization not implemented"))
(define prog (read))
(set! prog (walk-module prog #:transform-stmt eliminate-with))
(set! prog (walk-module prog #:transform-stmt eliminate-assert))
(set! prog (walk-module prog #:transform-stmt canonicalize-exceptions))
(set! prog (walk-module/fix prog
#:transform-stmt (compose-transform-stmt
eliminate-for
normalize)))
(pretty-write prog)