From 1507c6c40f944b477e7533fef93e7e4826b7a3b2 Mon Sep 17 00:00:00 2001 From: Yiyun Liu Date: Sat, 24 May 2025 13:21:15 -0400 Subject: [PATCH] Add file for AST --- ast.rkt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 ast.rkt diff --git a/ast.rkt b/ast.rkt new file mode 100644 index 0000000..a0b4aa0 --- /dev/null +++ b/ast.rkt @@ -0,0 +1,19 @@ +#lang typed/racket + +(define-type ConId Integer) +(define-type Arity Integer) +(define-type Let (∪ 'let 'letrec)) +(define-type Name Symbol) + + +(define-type (Bind A) (List A (Expr A))) +(define-type (Alt A) (List 'branch ConId (Listof A) (Expr 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 'λ (Pair Name (Listof Name)) (Expr A))))