Result
and Option
types
Since the type checker sucks less now, we can think about maybe adding some features to the language. ...At some point I'd like to have the type checker clean up the index map.
Conlang: Expression-Oriented Programming Language
This project began out of a desire to merge Rust-style control flow expressions with Python's fun for-else/while-else syntax. I fully intend to devote my spare time to conlang for the forseeable future.
Immediate Goals:
- Decide on a minimal set of keywords and operators to support
- Lex an entire Rust source file (minus generics, paths, and lifetimes)
- Write expression grammar
- Write AST for expression grammar
- Write parser for AST
- Create tests for parser (and AST)
- Parse
dummy.cl
into a valid AST - Pretty printer, for debugging
- Create minimal statement grammar
- Variable definition statements
- Function definition statements
Short Goals:
for
loops andwhile
loops can be used on the trailing side of an assignment- Tree-walk interpreter for prototyping and debugging
- Data structures and sum-type enums
- Expression type-checker
- Pattern destructuring, to take advantage of sum-type enums
- Three-address bytecode VM for standard library development
- Trait/Interface system
Long Goals:
- Minimize the number of kinds of statements
- Compile to LLVM IR
- Create a standard library for the language, with Rust-like abstractions.
- Port the compiler to Conlang
Description
The Conlang programming language is an expression-based interpreted (todo: compiler) language
Languages
Rust
95.6%
C
4.4%