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-13 13:12:44 +07:00
crates hole span 2022-03-13 12:41:23 +07:00
example hole span 2022-03-13 12:41:23 +07:00
lib read and write file 2022-03-13 07:17:12 +07:00
.gitignore generate comment 2022-03-12 10:38:18 +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
hazure.toml hades is already taken 2022-03-12 09:52:24 +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
Makefile makefile executable 2022-03-13 12:49:00 +07:00
README.md box drawing :trollface: 2022-03-13 13:12:44 +07:00

Hazure

Programming language that compiles to C++!

fun main: int = do
    @write("Hello, World!\n");
    return 69;
end;

or with the pipe operator:

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

The return 69 is the exit code (like C++), try running echo $? to see it!

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)

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
              
         Diagnostic(Lowering)
                    crates/diagnostic
                    Fail -> Print error -> Exit
             Pass
              
              
 Command   Codegen produce C++
 (spawn)       crates/codegen
             
             
 clang++ ─────┴───── Executable
(Command)

Prerequistie

  • clang++(preferred, default) or any C++ compiler
  • make for Makefile
  • Rust (if you're going to build from source)

Configuration

You can also configurate Hades compiler (currently you can only change the C++ compiler). Make a new file called hades.toml in the current working directory and the compiler will look for it! if there isn't one then it will use the default configuration:

[compiler]
compiler = "clang++"

License

Hades is licensed under both MIT license and Apache License