+ I hope I don't need to explain that ; (SEMICOLON) is an IMMEDIATE flagged word. And
+ all it does is append the codeword for EXIT on to the current definition and switch
+ back to immediate mode (set STATE back to 0). After executing ; we get this:
+
+ +---------+---+---+---+---+---+---+---+---+------------+------------+------------+------------+
+ | LINK | 6 | D | O | U | B | L | E | 0 | DOCOL | DUP | + | EXIT |
+ +---------+---+---+---+---+---+---+---+---+------------+------------+------------+------------+
+ len pad codeword ^
+ |
+ HERE
+
+ And that's it, job done, our new definition is compiled.
+
+ The only last wrinkle in this is that while our word was being compiled, it was in a
+ half-finished state. We certainly wouldn't want DOUBLE to be called somehow during
+ this time. There are several ways to stop this from happening, but in FORTH what we
+ do is flag the word with the HIDDEN flag (F_HIDDEN in this code) just while it is
+ being compiled. This prevents FIND from finding it, and thus in theory stops any
+ chance of it being called.
+
+ Compared to the description above, the actual definition of : (COLON) is comparatively simple: