mirror of
https://gitlab.cs.washington.edu/fidelp/frustration.git
synced 2024-12-25 21:58:11 +01:00
Define what "outer interpreter" means
This commit is contained in:
parent
7fd742f0b1
commit
541eddad68
1 changed files with 12 additions and 0 deletions
|
@ -2069,6 +2069,16 @@ fn build_dictionary(c: &mut Core) {
|
||||||
* Forth names this "quit", for the reason that calling "quit" in
|
* Forth names this "quit", for the reason that calling "quit" in
|
||||||
* the middle of a compiled program is a reasonable way to bring
|
* the middle of a compiled program is a reasonable way to bring
|
||||||
* you back to top-level.
|
* you back to top-level.
|
||||||
|
*
|
||||||
|
* "quit" is called the "outer interpreter" because it is the outermost
|
||||||
|
* interpreter loop that Forth uses. Some Forth implementations also
|
||||||
|
* use an "inner interpreter" to execute their threaded code. Our Forth
|
||||||
|
* does not have an inner interpreter because we used subroutine
|
||||||
|
* threading, making our threaded code a list of subroutine calls that
|
||||||
|
* can be directly executed by the CPU.
|
||||||
|
*
|
||||||
|
* Let's look at what "quit" does. We've already done all the hard work
|
||||||
|
* so it can be quite short.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// quit ( -- )
|
// quit ( -- )
|
||||||
|
@ -2076,7 +2086,9 @@ fn build_dictionary(c: &mut Core) {
|
||||||
forth!(
|
forth!(
|
||||||
quote, /* Read a word from the keyboard and look it up in
|
quote, /* Read a word from the keyboard and look it up in
|
||||||
* the dictionary */
|
* the dictionary */
|
||||||
|
|
||||||
dispatch, /* Figure out what to do with the word */
|
dispatch, /* Figure out what to do with the word */
|
||||||
|
|
||||||
quit /* Repeat forever */
|
quit /* Repeat forever */
|
||||||
|
|
||||||
/* You might have noticed that "quit" isn't tail-recursive -- it
|
/* You might have noticed that "quit" isn't tail-recursive -- it
|
||||||
|
|
Loading…
Reference in a new issue