https://github.com/tejasag/hera
🌬️ A programming language with minimal and simple syntax
https://github.com/tejasag/hera
hacktoberfest language rust
Last synced: about 1 year ago
JSON representation
🌬️ A programming language with minimal and simple syntax
- Host: GitHub
- URL: https://github.com/tejasag/hera
- Owner: tejasag
- License: mit
- Created: 2021-08-07T17:59:10.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-03-05T15:06:02.000Z (over 4 years ago)
- Last Synced: 2025-04-14T02:12:15.991Z (about 1 year ago)
- Topics: hacktoberfest, language, rust
- Language: Rust
- Homepage:
- Size: 179 KB
- Stars: 32
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `hera`
Hera is a simple programming language made to learn more about interpreters and compilers.


## Usage
```sh
# To run a .hera file
hera run .hera
# To open the REPL
hera
```
## Syntax
### Variable declaration
> **All declaration statements should end with a `;`!**
```
let name = value;
```
```
# strings
let a = "hi";
# boolean
let b = true;
# integer
let c = 10;
```
### Updating variables
```
update name = value;
```
```
let a = 10;
update a = 15;
```
### Arrays
```
# declaration
let arr = [1,2,3,4];
# Accessing elements
arr[0] # --> 1
arr[1] # --> 2
arr[-1] # --> 4
```
### Hashes
```
let hash = {
"one": "Hello",
"two": "World!",
3: "number as key",
3+4: "my key is 7",
true: "my key is a boolean"
};
hash["one"] # "Hello"
hash[3] # "number as key"
hash[7] # "my key is 7"
hash[true] # "my key is boolean"
```
### Functions
```
let name = fn() {
};
```
```
let double = fn(x) {
x * 2
};
double(10) # 20
```
You can directly put the expression or value to return **without any keyword or semicolon** or use `return x * 2;`
### Conditions
```
if () {
}
else {
}
else if () {
}
```
```
if (3 > 4) {
print("wtf");
} else if (4 > 3) {
print("correct lol");
} else {
print("idk man");
}
```
### Imports
The only library currently available is `std`
```
import ;
```
```
import std;
```
## BuiltIn Functions
`print(argument)` - Prints the argument on the screen
`push(array, value)` - Inserts a value in an array
`tail(array)` - Returns a new array without the first element of the given array
`len(argument)` - Returns the length of a string or an array
## `std` library
`map(array, function)` - Runs the function on all elements of the given array and returns a new array with the returned values from the function
Example:
```
let array = [2,3,4,5];
let double = fn(x) {
x \* 2
};
let new = map(array, double);
# new = [4,6,8,10]
```
`while(condition, body)` - A while loop that runs the body till the condition is true
Example:
```
let i = 1;
let condition = fn() { i < 15 };
while(condition, fn() {
print(i);
update i = i+1;
});
```
`range(limit)` - Returns an array with numbers from 1 to limit
`abs(num)` - Returns a positive variant of the given negative or postive number
`first(array)` - Returns the first element of an array
`last(array)` - Returns the last element of an array