From fc2844ae88c85f082b47630b92a55bca3ff285b1 Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Mon, 3 Aug 2026 09:18:06 -0700 Subject: Init --- grammar.txt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 grammar.txt (limited to 'grammar.txt') diff --git a/grammar.txt b/grammar.txt new file mode 100644 index 0000000..84b8123 --- /dev/null +++ b/grammar.txt @@ -0,0 +1,29 @@ +let x = 2; + y = 3; in + (x y) + +let x: (Int) = 2; + y: (Int) = 3; + f: ((Int -> Int) -> Int) = [a, b] { ((plus a) b) }; in + ((f x) y) +--- + + +LetStatement: "let" [Assignment ";"]+ "in" Body +Binding: Ident (":" TypeDecl)? +Assignment: Binding "=" Computation +Computation: Identifier | Application | Abstraction +Application: "(" Computation Computation ")" +Abstraction: "[" UncurriedArguments "]" "{" Computation "}" +UncurriedArguments: Binding ("," Binding)+ + +LetStatement: "let" Ident (":" TypeDecl)? "=" Computation in + +BaseType: Identifier +Arrow: TypeDecl "->" TypeDecl +TypeDecl: "(" BaseType | Arrow ")" + +Binding: Identifier (":" TypeDecl)? +UncurriedArguments: Identifier +Abstraction: UncurriedArguments "{" Binding "=>" Computation "}" + -- cgit v1.3