quail 0.1.0

The Quail Programming Language
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROGRAM := ITEM*
ITEM := DEF | IMPORT
DEF := def IDENT = TERM
IMPORT := import IDENT
TERM := TERMPART+ as TYPE | TERMPART+ | match TERM PAT*
TERMPART := VAR | LAMBDA | LET | HOLE | ( TERM )
PAT := with IDENT+ => TERM
HOLE := ? | ?{...} | ?IDENT{...}
IDENT := x, y, z, ...
VAR := IDENT
APP := TERM TERM
LIT := 0, 1, ...
LAMBDA := fun IDENT+ => TERM
LET := let IDENT = TERM in TERM
TYPE := TYPEPART (-> TYPEPART)*
TYPEPART := ATOM | ( ATOM )
COMMENTS := # ... to end of line