From 7d0135ed252bc5a6168a74bd91e49604dc26102c Mon Sep 17 00:00:00 2001 From: Yiyun Liu Date: Sat, 24 May 2025 20:20:30 -0400 Subject: [PATCH] Add pretty printer (still wip) --- ast.rkt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ast.rkt b/ast.rkt index dcb2020..9a42334 100644 --- a/ast.rkt +++ b/ast.rkt @@ -6,15 +6,17 @@ (define-type (Bind A) (List A (Expr A))) +(define-type (Binds A) (Pair (Bind A) (Listof (Bind A)))) (define-type (Alt A) (List 'branch ConId (Listof A) (Expr A))) +(define-type (Alts A) (Pair (Alt A) (Listof (Alt A)))) (define-type (Expr A) (∪ Name Integer (List 'pack ConId Arity) (List (Expr A) (Expr A)) - (List Let (Pair (Bind A) (Listof (Bind A))) (Expr A)) - (List 'case (Expr A) (Pair (Alt A) (Listof (Alt A)))) + (List Let (Binds A) (Expr A)) + (List 'case (Expr A) (Alts A)) (List 'λ (Pair Name (Listof Name)) (Expr A)))) (define-type (ScDefn A) (List 'define (Pair Name (Listof A)) (Expr A))) @@ -24,5 +26,7 @@ (define-type CoreProgram (Program Name)) (define-type CoreBind (Bind Name)) (define-type CoreAlt (Alt Name)) +(define-type CoreBinds (Binds Name)) +(define-type CoreAlts (Alts Name)) -(provide CoreExpr CoreScDefn CoreProgram CoreBind CoreAlt Expr Bind Alt Name Let Arity ConId) +(provide CoreExpr CoreScDefn CoreProgram CoreBind CoreAlt Expr Bind Alt Name Let Arity ConId CoreAlts CoreBinds)