diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/00.md | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/docs/00.md b/docs/00.md new file mode 100644 index 0000000..e4e8d41 --- /dev/null +++ b/docs/00.md @@ -0,0 +1,50 @@ +## Declarations in toc + +Declarations have the following syntax: +``` +<name> : [type] [= expression]; +``` + +The square brackets (`[]`) indicate something optional. + +All of the following statements +declare an new variable `x` which is an integer, and has a value of 0: +``` +x : int; +x : int = 0; +x := 0; +``` +Note that in the first of those statements, although no expression +is specified, it defaults to 0. This is not true in C, +and there will eventually probably be an option to +leave `x` uninitialized. + +If you wanted x to be a floating-point number, you could use: +``` +x : float; +x : float = 0; +x := 0.0; +``` + +Note that `0` can be used as both a `float` and an `int`eger, but +when no type is specified, it defaults to an `int`, whereas `0.0` +defaults to a `float`. + +Here are all of toc's builtin types and their ranges of values: + +- `int` - A 64-bit signed integer (always), -9223372036854775808 to 9223372036854775807 +- `i8` - An 8-bit signed integer, -128 to 128 +- `i16` - 16-bit signed integer, -32768 to 32767 +- `i32` - 32-bit signed integer, -2147483648 to 2147483647 +- `i64` - 64-bit signed integer (same as `int`, but more explicit about the size), -9223372036854775808 to 9223372036854775807 +- `u8` - An 8-bit unsigned integer, 0 to 255 +- `u16` - 16-bit unsigned integer, 0 to 65535 +- `u32` - 32-bit unsigned integer, 0 to 4294967295 +- `u64` - 64-bit unsigned integer, 0 to 18446744073709551615 +- `float` - A 32-bit floating-point number, +- `f32` +- `f64` +- `bool` +- `char` + +At the moment, it is not technically guaranteed that `f32`/`float` is actually 32-bit and that `f64` is actually 64-bit; they are platform dependent. Perhaps someday there will be a version of toc which does not compile to C, where that could be guaranteed. |