summaryrefslogtreecommitdiff
path: root/docs/01.md
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2019-12-07 18:21:03 -0500
committerLeo Tenenbaum <pommicket@gmail.com>2019-12-07 18:21:03 -0500
commit390f1e368cfdc5011e9eb9af76d2fb44cd8dc0b2 (patch)
treed299c8e4360a68038f575c16d8083275cb1046f0 /docs/01.md
parent9c44be7b25d61450808e918c14b8dfff49a78a8a (diff)
fixed something weird going on with the tokenizer that might be a bug in clang
Diffstat (limited to 'docs/01.md')
-rw-r--r--docs/01.md18
1 files changed, 18 insertions, 0 deletions
diff --git a/docs/01.md b/docs/01.md
new file mode 100644
index 0000000..816f3e6
--- /dev/null
+++ b/docs/01.md
@@ -0,0 +1,18 @@
+### 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.