From 390f1e368cfdc5011e9eb9af76d2fb44cd8dc0b2 Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Sat, 7 Dec 2019 18:21:03 -0500 Subject: fixed something weird going on with the tokenizer that might be a bug in clang --- docs/00.html | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/00.html (limited to 'docs/00.html') diff --git a/docs/00.html b/docs/00.html new file mode 100644 index 0000000..cd0c352 --- /dev/null +++ b/docs/00.html @@ -0,0 +1,61 @@ +

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 integer, 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:

+ + + +

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.

+ +

To make declarations constant, use :: instead of :. e.g.

+ +

+x ::= 5+3;
+y :: float = 5.123; +

+ +

Here, "constant" means constant at compile time, not read-only as it does in C. One interesting thing about toc is that normal functions can run at compile time, so pretty much any expression is a valid initializer for a constant, e.g. doing x ::= some_function(); runs some_function at compile time, not at run time.

-- cgit v1.2.3