-
Notifications
You must be signed in to change notification settings - Fork 0
Basic Tutorial
A variable name in wardscript can contain letters a-z, A-Z , numbers: 0-9, and a few special symbols: _ $ '.
a := 12;
b := a, c := b;
There is only 4 data types in wardscript:
- Byte
- Nil
- Node
- Function
A byte is an unsigned integer lesser than 256
b1 := 0,
b2 := 255;
The Nil datatype represents the absence of value and is useful in data-structure implementation.
root := nil;
Note: nil is not a keyword, it's only a variable predefined in all programs
In dynamic data structures, a node is a record that contains a data of interest and at least one pointer to reference to another node.
A node in wardscript is similar to a structure in c, but dynamically typed as in python or lua (dictionary and table), it differs from these by being immutable; which means that once a node is created, it can not have new members or eliminate those that already exist, only modify its content.
To create a node write a list of assignments (members) between curly brackets { }.
root := {
data := 0,
next := nil
};
To modify a member value
root.data := 1;
Functions in wardscript are first-class values (wikipedia). To declare a function we must assign it to a variable. The syntax to declare a function is the following:
func arg1, arg2, arg3: result:
? Block of code ?
end
More examples:
f := func x, y: x:
x := x + y;
end;
f2 := func x, y: nil:
if x > y then
present(x);
else
if y > x then
present(y);
else
present(x, y);
end
end
end,
f2' := func x, y: nil:
if x > y then
present(x);
exit;
end
if y > x then
present(y);
exit;
end
if x == y then
present(x, y);
exit;
end;
end;
hello := func : nil:
? A function does not necessarily have to have arguments. ?
print("Hello World!",10);
end;
Notes
- The argument list may be empty so the argument list won't take any argument at moment of call.
- The 'return variable' may not be declared inside the function body, but it has to exist in the scope at the momento of call. (an example is function f2)
- The 'exit' keyword it's like a return in the sense it breaks the flow of the function and the function return whatever the return variable has in that moment. (example of use in f2')
A loop is equivalent to a while True or a while (1)