Skip to content

dallenng/liom_lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published