Skip to content

Latest commit

 

History

109 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Liom Programming Language

Liom is a toy programming language I created as a learning experience. For more information on the syntax, see here.

Features

Parser

  • Variable definition
  • Literal expression
    • Integer
    • Character
    • String
    • Byte
    • Float
    • Boolean
  • Variable reference
  • Binary expression
  • Unary expression

Interpreter

  • Variable definition
  • Literal expression
    • Integer
    • Character
    • String
    • Byte
    • Float
    • Boolean
  • Variable reference
  • Binary expression
  • Unary expression

Installation

Requirements

  • cargo with a recent nightly toolchain
  • (Optional) cargo-fuzz if you want to run the fuzzer

To build the executable :

cargo build --release

The executable will be in target/release/liom_cli

Usage

To run the REPL :

target/release/liom_cli

Contributing

I'm open to contributions, don't hesitate to open issues and submit PR. I try to keep the dependency graph small.

depgraph

To format the code :

./ci/fmt.sh

To lint and test the code :

./ci/check.sh

To fuzz the code for 30min :

./ci/fuzz.sh

Acknowledgment

I want to thank Aramis Razzaghipour for his blog on Eldiro which inspired me to do this project.

I want to thank Aleksey Kladov for his posts from which I learned a lot about parser and Rust.

I want to thank all contributors to rust-analyzer because it helped me for the architecture of this project.

License

This project is licensed under the MIT license.

About

Toy programming language

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages