LV8 (pronounced "levieight") is interpreted dynamically typed programming language. The language is heavily inspired by Lua, Python and Elixir.
-
Variables -
Functions -
Function calls -
Math expressions -
Comments -
Modules -
Imports - Flow control (if, else, while, for) (Currently only
if
statement is available) - Standard library (Currently only
print
function is available) - Garbage collection
- Error handling
This language is not meant to be used in production, it is just a fun project to learn how to make a programming language.
If you would like to contribute to this project, feel free to fork the repository and make a pull request. I am open to any suggestions or improvements.
Currently, the project is not published to any package manager, so you will need to clone the repository and build the project yourself.
- Rust (1.76.0)
- Clone the repository
git clone https://github.com/peeeuzin/lv8
- Build LV8
cd lv8
cargo install --path lv8
- Run the project
lv8 examples/hello_world.lv
fun main() do
print("Hello, World!")
end
main()
run: lv8 examples/hello_world.lv
fun calculate_math(a, b, c) do
return a * (b + c)
end
print("2 * (3 + 4) =", calculate_math(2, 3, 4))
run: lv8 examples/math_expression.lv
Variables in LV8 are dynamically typed, which means you don't need to specify the type of the variable when declaring it.
my_variable = 10
my_variable = "Hello, World!"
# You can also declare multiple variables in one line
value1, value2 = "Hello!"
Functions in LV8 are defined using the fun
keyword, followed by the function name and the parameters. The function body is defined using the do
keyword, and ended with the end
keyword.
fun my_function() do
print("Hello, World!")
end
my_function()
# You can also pass parameters to the function
fun calculate_sum(a, b) do
return a + b
end
print(calculate_sum(2, 3))
You can declare a module using module
keyword, followed by the module name. The module body is defined using the do
keyword, and ended with the end
keyword.
module Human do
my_name = ""
age = 0
fun declare_name(new_name) do
my_name = new_name
end
fun increase_age() do
age = age + 1
end
end
Human.increase_age()
Human.declare_name("Pedro")
# or
Human.my_name = "John"
To import another file you can use import
, followed by file path and the module name.
# math.lv8
fun complex_calculation(num1, num2) do
return num1 + num2
end
import "math.lv8" as Math
Math.complex_calculation(1, 2)
This project is licensed under the MIT License. For more information, please read the LICENSE file.