https://github.com/abiriadev/dyn
Highly dynamic and powerful scripting language
https://github.com/abiriadev/dyn
programming-language scripting-language
Last synced: 6 months ago
JSON representation
Highly dynamic and powerful scripting language
- Host: GitHub
- URL: https://github.com/abiriadev/dyn
- Owner: abiriadev
- Created: 2023-10-16T08:08:19.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-04T18:36:57.000Z (about 1 year ago)
- Last Synced: 2025-07-19T03:32:33.062Z (6 months ago)
- Topics: programming-language, scripting-language
- Language: Rust
- Homepage: https://abiriadev.github.io/dyn/
- Size: 696 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
dyn
Highly dynamic and powerful scripting language
## Example
```dyn
print("Hello, world!")
```
## Syntax Overview
### Comments
```dyn
// single line comment
/* block comment */
```
### Arithmetics
You can perform basic arithmetics like addition, subtraction, multiplication, etc.
```dyn
1 + 2
5 - 10
3 * 4
50 / 7
36 % 5
```
### Variable declaration
Use `let` keyword to declare an immutable variable.
```dyn
let x = 5
let y = x + 10
print(y) // 15
```
You can add `!` to make the variable mutable.
```dyn
let! a = 0
a = 5
print(a) // 5
a += 2
print(a) // 7
```
### Conditional statements
Use `if` expression to execute a block based on conditions.
```dyn
let x = 10
if x > 5 {
print("x is greater than 5")
}
```
You can use `else` to handle the other case.
```dyn
let today = "Monday"
if today == "Saturday" || today == "Sunday" {
print("It's weekend!")
} else {
print("It's weekday :(")
}
```
### Loop
Use `iter` and `of` keywords to iterate over an array.
```dyn
let friends = [
"abiria"
"andjsrk"
"kangjun"
"ensuta"
]
iter friends of person {
print("Hello, " + person + "!")
}
```
## Build
```sh
$ git clone https://github.com/abiriadev/dyn && cd dyn
$ cargo install --path ./crates/cli
```
### Run REPL
```sh
$ dyn
# if you want to execute a script, pass the file path as an argument
$ dyn ./examples/hello.dyn
```
## TODO
- [x] REPL
- [x] Closure
- [ ] LSP