Builtin Types
String
This is compiled as a C string, but differs from a uint8*
or int8*
in that it has utilities for simple string manipulation, and looks more like a class in code.
Creation
"String literals are String \"objects\""
// TODO: add more examples, if they apply later
String literals are String objects.
Concatination
String my_str = "Hello ";
println(my_str + "world!"); // prints "Hello world!"
Use a plus sign like Python or Java!
String Length
#"hello world!" // expression results in 11
Basically Lua: use the number sign on a string.
Substring
String my_str = "Hello World!dfghgfdfghj";
println(my_str[0:12]);
Builtin Functions
Builtin functions are compiled as special symbols before assembly generation, so they can be optimized for the target architecture. They are NOT normal functions (in fact technically they are not functions at all...)
They are:
- Not guaranteed to have a label of any kind; they have no address
- Usually compiled inline, depending on the function
- Are compiled in a special way
- Are usually extra fast :)
print and println
void print(...);
void println(...);
These functions write to stdout and take any type of argument. println will add a newline character at the end, print will not.
With int8
and uint8
, they will print the argument as a character. For all other integer types the argument is printed as a number in base 10.
int8*
s are printed as C strings. Same goes for String
objects.
All other pointers are printed in lowercase hexadecimal, without any preceding '0x' (you can add this yourself very easily).
input
String input();
Gets the next line from stdin.
tostring, toint64, touint64
String tostring(any);
int64 toint64(String num);
int64 toint64(uint8* num);
int64 toint64(int8* num);
int64 touint64(String num);
int64 touint64(uint8* num);
int64 touint64(int8* num);
tostring
will take any primitive type and convert it to a string.
toint64
will parse any string to a signed integer, skipping preceding whitespace and stopping at any non-digit.
touint64
will parse any string to an unsigned integer, skipping preceding whitespace and stopping at any non-digit.
free
void free(uint8* memory);
Functions exactly as the C equivalent.