mirror of
https://github.com/artegoser/ONLang
synced 2024-11-05 20:43:57 +03:00
3.7 KiB
3.7 KiB
Cli
on file.onla
to run file.onla
on file.onla --compress -o compressed.conla
to compress file.onla to messagePack format
on file.onla --convert json -o file.json
to compress file.onla to json (supported formats: json, json5, yaml)
How to
All posibilities in example.json5
How to import modules
[{ import: { path: "examples/assertions.onla", as: "assertions" } }]
How to print
[
"Just string in array", //equally println: "Just string in array"
["array", "of", "strings"], // equally println: ["in Function"]
{
print: ["in Function"],
},
{
println: ["in Function"],
},
]
How to calclulate values
works only with numbers (and variables with number type)
[
{ calc: [2, "*", 3] }, //only 3 arguments
{ calc: [{ var: "some_variable" }, "-", 2] }, //{var:"some_var"} this is a way to get a variable
]
Supported operators
- +
- -
- *
- /
- %
- >>
- <<
- ^
- &
- |
How to compare values
[
{ comp: [true, "!=", false] }, //only 3 arguments
{
comp: [
{
comp: [
{ comp: [{ calc: [1, "+", 1] }, ">", 3] },
"==",
{ var: "var_with_bool_value" },
],
},
"&&",
{ comp: [{ comp: [{ calc: [1, "+", 1] }, ">", 3] }, "==", true] },
],
}, //more complex comparisons: (( 1 + 1 > 3 ) == var_with_bool_value) && (( 1 + 1 > 3 ) == true)
]
Supported operators for compare
- ==
- !=
- >
- <
- >=
- <=
- &&
- ||
How to create a variable
[
{
let: {
str: "A",
num: 2,
arr: ["Array", "in", "variable"],
},
},
{
let: {
calculated: { calc: [{ var: "num" }, "*", 4] }, //result 8
},
},
{
let: {
referenceVar: { ref: "calculated" },
},
//creates a reference variable, when the "calculated"
// is changed, "referenceVar" will also be changed, in the
// future it will be possible to change "referenceVar"
// and the "calculated" will be changed
},
{
let: {
array: { arr: [{ var: "num" }, 4] }, //create calculated array result [2, 4]
},
},
{
let: {
objVar: { obj: { var: "num" } }, //create object (hashmap) variable result {var: "num"}
},
},
{
let: {
wrongObjVar: { var: "num" }, //result 2
},
},
]
How to assign variable
[
{
assign: {
calculated: { calc: [{ var: "calculated" }, "+", 1] }, // calculated = calculated + 1
},
},
]
Loops
[
{
loop: [
{
if: {
condition: { comp: [{ var: "i" }, ">=", 10] }, //if i >= 10 break loop
body: ["break"],
//else: [..commands] also work
},
},
{ assign: { i: { calc: [{ var: "i" }, "+", 1] } } }, // i += 1
{ print: ["\ri = ", { var: "i" }] },
{ sleep: 500 }, //sleep 500 ms
],
},
]
Input from console
[
{
let: {
name: { input: "Your name: " },
},
},
{ print: ["Bye, ", { var: "name" }, "!"] },
]
Delete variable
[
{
let: {
name: { input: "Your name: " },
},
},
{ print: ["Bye, ", { var: "name" }, "!"] },
{ delete: "name" }, //deletes variable from memory
]
Create scope
[
{scope:[..commands]}
]
Create functions
[
"Creating function `sum`",
{
fn: {
name: "sum",
args: ["first", "second"],
body: [
{
return: {
calc: [{ var: "sum.first" }, "+", { var: "sum.second" }],
},
},
],
},
},
"fn sum(first, second){ return first+second};",
"Run function `sum`",
["sum(2, 2) = ", { sum: [2, 2] }],
]