Fix grammar produced by explicate-control

This commit is contained in:
Enrico Lumetti 2021-05-01 00:41:08 +02:00
parent 85dbf65800
commit df520e99ca
2 changed files with 23 additions and 18 deletions

View File

@ -7,7 +7,7 @@
(define (explicate-control sexp) (define (explicate-control sexp)
(match sexp (match sexp
[`(program ,info ,exp) [`(program ,info ,exp)
`(program ,info ,(explicate-control-tail exp))])) `(program ,info ((start . ,(explicate-control-tail exp))))]))
; after a remove-complex-opera*, all expressions ; after a remove-complex-opera*, all expressions
; are compatible with C0 ; are compatible with C0

View File

@ -26,34 +26,39 @@
(test-eq (test-eq
(pass (list-ref programs 0)) (pass (list-ref programs 0))
`(program () `(program ()
(return (+ 2 3)))) ((start .
(return (+ 2 3))))))
(test-eq (test-eq
(pass (list-ref programs 1)) (pass (list-ref programs 1))
`(program () `(program ()
((start .
(seq (assign tmp.1 (- 2)) (seq (assign tmp.1 (- 2))
(return (+ tmp.1 3))))) (return (+ tmp.1 3)))))))
(test-eq (test-eq
(pass (list-ref programs 2)) (pass (list-ref programs 2))
`(program () `(program ()
((start .
(seq (assign x.1 20) (seq (assign x.1 20)
(seq (assign x.2 22) (seq (assign x.2 22)
(seq (assign y.1 (+ x.1 x.2)) (seq (assign y.1 (+ x.1 x.2))
(return y.1)))))) (return y.1))))))))
(test-eq (test-eq
(pass (list-ref programs 3)) (pass (list-ref programs 3))
`(program () `(program ()
((start .
(seq (assign a.1 42) (seq (assign a.1 42)
(seq (assign b.1 a.1) (seq (assign b.1 a.1)
(return b.1))))) (return b.1)))))))
(test-eq (test-eq
(pass (list-ref programs 4)) (pass (list-ref programs 4))
`(program () `(program ()
((start .
(seq (assign tmp.1 (- 1)) (seq (assign tmp.1 (- 1))
(seq (assign x.1 (+ tmp.1 2)) (seq (assign x.1 (+ tmp.1 2))
(seq (assign tmp.2 (+ x.1 2)) (seq (assign tmp.2 (+ x.1 2))
(seq (assign tmp.3 (+ 4 5)) (seq (assign tmp.3 (+ 4 5))
(return (+ tmp.2 tmp.3)))))))) (return (+ tmp.2 tmp.3))))))))))