diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2020-02-25 20:35:46 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2020-02-25 20:35:46 -0500 |
commit | 19eafbc01a492e8f1df25cef52678ed8f76d3e63 (patch) | |
tree | e818784215d9f7873e9495f003dd4cdaa09d5b63 /docs | |
parent | b1c2b4bcabfd3ff01921e2601d41a33b40ec1f3b (diff) |
fixed bugs with new arg order system
also now struct parameters are "officially" part of the language
Diffstat (limited to 'docs')
-rw-r--r-- | docs/00.html | 61 | ||||
-rw-r--r-- | docs/01.html | 18 |
2 files changed, 0 insertions, 79 deletions
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 @@ -<h2>Declarations</h2> - -<p>In toc, declarations have the following syntax: -<code> -<name> :[:] [type] [= expression]; -</code></p> - -<p>The square brackets (<code>[]</code>) indicate something optional.</p> - -<p>All of the following statements -declare an new variable <code>x</code> which is an integer, and has a value of 0: -<code> -x : int; -x : int = 0; -x := 0; -</code> -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 <code>x</code> uninitialized.</p> - -<p>If you wanted x to be a floating-point number, you could use: -<code> -x : float; -x : float = 0; -x := 0.0; -</code></p> - -<p>Note that <code>0</code> can be used as both a <code>float</code> and an <code>int</code>eger, but -when no type is specified, it defaults to an <code>int</code>, whereas <code>0.0</code> -defaults to a <code>float</code>.</p> - -<p>Here are all of toc's builtin types and their ranges of values:</p> - -<ul> -<li><code>int</code> - A 64-bit signed integer (always), -9223372036854775808 to 9223372036854775807</li> -<li><code>i8</code> - An 8-bit signed integer, -128 to 128</li> -<li><code>i16</code> - 16-bit signed integer, -32768 to 32767</li> -<li><code>i32</code> - 32-bit signed integer, -2147483648 to 2147483647</li> -<li><code>i64</code> - 64-bit signed integer (same as <code>int</code>, but more explicit about the size), -9223372036854775808 to 9223372036854775807</li> -<li><code>u8</code> - An 8-bit unsigned integer, 0 to 255</li> -<li><code>u16</code> - 16-bit unsigned integer, 0 to 65535</li> -<li><code>u32</code> - 32-bit unsigned integer, 0 to 4294967295</li> -<li><code>u64</code> - 64-bit unsigned integer, 0 to 18446744073709551615</li> -<li><code>float</code> - A 32-bit floating-point number, -3.40282347e+38 to 3.40282347e+38</li> -<li><code>f32</code> - A 32-bit floating-point number (same as <code>float</code>, but more explicit about the size)</li> -<li><code>f64</code> - A 64-bit floating-point number, -1.7976931348623157e+308 to 1.7976931348623157e+308</li> -<li><code>bool</code> - A boolean value, either <code>false</code> or <code>true</code>.</li> -<li><code>char</code> - A character. The specific values are technically platform-dependent, but usually there are 256 of them.</li> -</ul> - -<p>At the moment, it is not technically guaranteed that <code>f32</code>/<code>float</code> is actually 32-bit and that <code>f64</code> 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.</p> - -<p>To make declarations constant, use <code>::</code> instead of <code>:</code>. e.g.</p> - -<p><code> -x ::= 5+3; <br /> -y :: float = 5.123; -</code></p> - -<p>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 <code>x ::= some_function();</code> runs <code>some_function</code> at compile time, not at run time.</p> 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 @@ -<h3>A first program</h3> - -<p>The <code>main</code> function in toc corresponds to the <code>main</code> function in C. This function is called when your program is run. So, this is a valid toc program which does nothing:</p> - -<p><code> -main ::= fn() { -}; -</code></p> - -<p>It declares a constant, <code>main</code>, 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 <code>fn main() { ... }</code>).</p> - -<p>Assuming you have compiled the compiler (see <code>README.md</code> for instructions about that), you can compile it with</p> - -<p><code> -toc <your filename> -</code></p> - -<p>You will get a file called <code>out.c</code>, 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.</p> |