From 0fa3e2ed212e780c52c14818bbc6e6fd1eca7b62 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sun, 9 Mar 2025 12:13:00 +0100 Subject: Misc: Add README --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a6e18d3 --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Programming Language + +Simple statically typed and compiled programming language implemented in Zig, with support for variables, control flow, functions, and code generation using LLVM. + +## Building and Running + +1. Ensure you have Zig and LLVM installed on your system. +2. Run the compiler on an example file: + ``` + zig build run -- examples/8.src compile + ``` +3. Link the generated object file to create an executable: + ``` + cc output.o + ``` +4. Run the executable: + ``` + ./a.out + ``` + +## Language Features + +- **Variables and Declarations**: Uses `let` for variable declaration. +- **Control Flow**: Supports `if` and `while` statements. +- **Functions**: Supports function declarations with parameters and return types. +- **Expressions**: Includes additive, multiplicative, equality, and unary expressions. +- **Code Generation with LLVM**: Translates AST to LLVM IR and generates object files for native execution. + +## Example Program + +```js +let main = () => i64 { + let fib = (n: i64) => i64 { + if n == 0 { + return 0; + }; + if n == 1 { + return 1; + }; + return fib(n-2) + fib(n-1); + }; + + let result = fib(30); + print(result); + return result; +}; +``` +``` +Output: 832040 +``` -- cgit 1.4.1