From dc10a34f8b9ed7010a5bb8655431bc920919b6ba Mon Sep 17 00:00:00 2001 From: Michael Greenberg Date: Sun, 14 Mar 2021 09:32:50 -0700 Subject: [PATCH 1/3] Clarify grammar Annotation uses `:`, not `ann`. Blame labels are (statically known) strings. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 395bcec3..5030f93c 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Variables, X ::= X Formals, F ::= X | [X : Type] TopLevel, TE ::= (define X E) | (define (X F ...) [: T] E ...) | E | TE ... Expression, E ::= X -Ascription | (ann E T [Blame Label]) +Ascription | (: E T [Blame Label]) Binding | (let ((X [: T] E) ...) [: T] E ...) | (letrec ((X [: T] E) ...) E ...) Functions | (lambda (F ...) [: T] E ...) @@ -73,6 +73,7 @@ ops ::= + | - | * | binary-and | binary-or | ... | fl+ | fl- | fl* | ... | < | <= | = | >= | > | ... | fl< | fl<= | fl= | fl>= | fl> | ... +Blame Label ::= "..." Type, T ::= Dyn | Unit | Bool | Int | Float | (-> T ...) | (Ref T) | (Vect T) | (Tuple T ...) | X | (Rec X T) From 91ddf554e199c8e45cbe42f37f9ff8dee0dc903f Mon Sep 17 00:00:00 2001 From: Michael Greenberg Date: Mon, 15 Mar 2021 09:53:40 -0700 Subject: [PATCH 2/3] add switch, clarify infix functions --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5030f93c..b804dd6d 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ Binding | (let ((X [: T] E) ...) [: T] E ...) Functions | (lambda (F ...) [: T] E ...) Application | (E_rator E_rand ...) Conditionals | (if E_cond E_conseq E_alt) + | (switch E [(E_opt ...) E ...] ... [else E ...]) Iteration | (repeat (x_i E_start E_end) [(x_acc [: T] E_init)] E) Sequencing | (begin E_eff ... E_value) Unit | () @@ -75,7 +76,7 @@ ops ::= + | - | * | binary-and | binary-or | ... | fl< | fl<= | fl= | fl>= | fl> | ... Blame Label ::= "..." Type, T ::= Dyn | Unit | Bool | Int | Float - | (-> T ...) | (Ref T) | (Vect T) | (Tuple T ...) + | (T ... -> T) | (Ref T) | (Vect T) | (Tuple T ...) | X | (Rec X T) ``` From e89f9f85d22285515de56017f27a4991975c160e Mon Sep 17 00:00:00 2001 From: Michael Greenberg Date: Mon, 15 Mar 2021 10:34:50 -0700 Subject: [PATCH 3/3] correct switch syntax --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b804dd6d..41024049 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Binding | (let ((X [: T] E) ...) [: T] E ...) Functions | (lambda (F ...) [: T] E ...) Application | (E_rator E_rand ...) Conditionals | (if E_cond E_conseq E_alt) - | (switch E [(E_opt ...) E ...] ... [else E ...]) + | (switch E [((E_opt ...) E) ...] (else E ...)) Iteration | (repeat (x_i E_start E_end) [(x_acc [: T] E_init)] E) Sequencing | (begin E_eff ... E_value) Unit | ()