You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Avery bea0783a17
Grammar updates
3 weeks ago
src Grammar updates 3 weeks ago
.gitignore Grammar updates 3 weeks ago
Cargo.lock New parser and grammar 4 weeks ago
Cargo.toml New parser and grammar 4 weeks ago
README.md New parser and grammar 4 weeks ago
build.rs New parser and grammar 4 weeks ago
grammar.ebnf Grammar updates 3 weeks ago

README.md

Language syntax

Abstractions:

\x:T.e

Where x is an identifier, T a type, and e an expression

Aplication:

lhs rhs

Where lhs and rhs are expressions

Variable:

x

Where x is an identifier

Constants:

n

where n is an number

or

true

or

false

Types

The language has the primitive types Bool and Nat, and arrow types of the form T1 -> T2, where multiple of these can be composed, and parentesis can be used to specify associativity, ex: (Nat -> Nat) -> Nat -> Nat

Using the repl

When entering a valid expression into the repl, it will be type checked, and if well typed, its beta reduced form and type is printed.

The repl offers additional commands starting with :, the following commands are availaibe

  • :t expr: get the type of expr, but do not beta reduce
  • :ctx ident : T: add a variable identfied by ident of type T to the type checking context, arrow types need to be in parentesis