From 19eafbc01a492e8f1df25cef52678ed8f76d3e63 Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Tue, 25 Feb 2020 20:35:46 -0500 Subject: fixed bugs with new arg order system also now struct parameters are "officially" part of the language --- docs/00.html | 61 ------------------------------------------------------------ docs/01.html | 18 ------------------ 2 files changed, 79 deletions(-) delete mode 100644 docs/00.html delete mode 100644 docs/01.html (limited to 'docs') diff --git a/docs/00.html b/docs/00.html deleted file mode 100644 index cd0c352..0000000 --- a/docs/00.html +++ /dev/null @@ -1,61 +0,0 @@ -

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.

diff --git a/docs/01.html b/docs/01.html deleted file mode 100644 index 633295b..0000000 --- a/docs/01.html +++ /dev/null @@ -1,18 +0,0 @@ -

A first program

- -

The main function in toc corresponds to the main function in C. This function is called when your program is run. So, this is a valid toc program which does nothing:

- -

-main ::= fn() { -}; -

- -

It declares a constant, main, which is a function with an empty body. Note that the syntax for declaring functions is the same as the syntax for declaring constants (it isn't something like fn main() { ... }).

- -

Assuming you have compiled the compiler (see README.md for instructions about that), you can compile it with

- -

-toc <your filename> -

- -

You will get a file called out.c, which you can then put through your C compiler to get an executable file which does nothing. Congratulations! You've written your first toc program.

-- cgit v1.2.3