1
1
Fork 0
mirror of https://github.com/azur1s/bobbylisp.git synced 2024-10-16 02:37:40 -05:00
Another lisp dialect (mirror)
Find a file
2022-03-19 08:56:06 +07:00
crates use delimited_by instead 2022-03-19 08:56:06 +07:00
example one or more holes in piping, (almost) mutable variable 2022-03-19 08:44:43 +07:00
std use module from github 2022-03-16 08:01:12 +07:00
.gitignore cpp -> typescript 2022-03-16 07:36:39 +07:00
Cargo.lock lowering error report 2022-03-12 20:46:43 +07:00
Cargo.toml diagnostic crate 2022-03-12 06:35:14 +07:00
FUNDING.yml update misc stuff 2022-03-07 03:53:44 +07:00
LICENSE-APACHE rename (again) 2022-03-06 23:51:03 +07:00
LICENSE-MIT rename (again) 2022-03-06 23:51:03 +07:00
README.md io function 2022-03-16 07:57:28 +07:00

Hazure

Programming language that compiles to Typescript!

fun main: void = do
    @write("Hello, World!");
end;

or with the pipe operator:

fun main: void = do
    "Hello, World!\n"
    |> @write(_);
end;

Note: Everything in this project can be changed at anytime! (I'm still finding out what work best for lots of thing) if you have an idea, feel free to create an issues about it, or even create a PR! (I'd be very happy)

Prerequistie

  • deno
  • Rust (if you're going to build from source)

Contributing

Found a bug? Found a better way to do something? Make a pull request or tell me in the issues tab! Anything contributions helps :D

Wanna see how it works under the hood? see the How it works tab, you should probably understand it a bit more.

Steps to build:

  1. Clone this repo https://github.com/azur1s/hazure.git
  2. Build executable cargo build
  3. Try running some examples! path/to/executable compile path/to/file.hz

How it works

           Source (.hz)
              │ crates/main
              │
            Lexer produce Token
              │ crates/lexer
              │
           Parser produce AST
              │ crates/parser
              │
         Diagnostic(Parsing)
              │     │ crates/diagnostic
              │     ╰ Fail -> Print error -> Exit
             Pass
              │
              │
          Lowerer(?) produce HIR
              │ crates/hir
              │
          Type Checker (TODO)
              │   │
              │   ╰ Fail -> Print error -> Exit
             Pass
              │
              │
         Diagnostic(Lowering)
              │     │ crates/diagnostic
              │     ╰ Fail -> Print error -> Exit
             Pass
              │
              │
        Codegen produce Typescript
              │ crates/codegen
              │
             Done
         (filename.ts)

License

Hazure is licensed under both MIT license and Apache License