annotate samples/fib.tp @ 19:132c7756860e

Use populateSymbols to generate symbol tables during compilation rather than populating them as we go. This change allows us to refer to symbols defined later in the input stream and also gives the symbol table logic a single home that can be used both by the compiler and editor.
author Mike Pavone <pavone@retrodev.com>
date Sun, 25 Mar 2012 16:11:19 -0700
parents 02b20292f187
children 9dd370530f69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 console <- foreign: #{
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 log <- foreign: :val {}
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 true <- #{
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 if:else <- :self trueblock :elseblock {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 trueblock:
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 false <- #{
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 if:else <- :self trueblock :elseblock {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 elseblock:
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 fib <- :n {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 if: n < 2 {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 1
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 } else: {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 (fib: n-1) + (fib: n-2)
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 main <- {
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 console log: (fib: 30)
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 }
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30
02b20292f187 Added fib sample
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 }