diff options
| author | Baitinq <[email protected]> | 2025-03-09 12:13:00 +0100 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-03-09 12:14:18 +0100 |
| commit | 0fa3e2ed212e780c52c14818bbc6e6fd1eca7b62 (patch) | |
| tree | 96bef14ed50b22c49da927f347a465f2b1c571a9 /README.md | |
| parent | Examples: Add new more complex examples (diff) | |
| download | pry-lang-0fa3e2ed212e780c52c14818bbc6e6fd1eca7b62.tar.gz pry-lang-0fa3e2ed212e780c52c14818bbc6e6fd1eca7b62.tar.bz2 pry-lang-0fa3e2ed212e780c52c14818bbc6e6fd1eca7b62.zip | |
Misc: Add README
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 50 |
1 files changed, 50 insertions, 0 deletions
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 +``` |