diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-29 09:44:41 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-29 09:44:41 -0700 |
| commit | e1bba17ff54400a34ede0eaacad863420d021119 (patch) | |
| tree | 99bef5b646f0febf919208e6f4cbce81227811eb /chapter03/README.md | |
| parent | 41be002e89358649da46c33c8245aa786afdad6a (diff) | |
| download | Simple-e1bba17ff54400a34ede0eaacad863420d021119.tar.gz Simple-e1bba17ff54400a34ede0eaacad863420d021119.zip | |
Split ch10
Basic memory introduction in 10a, then precise aliases in 10b.
Diffstat (limited to 'chapter03/README.md')
| -rw-r--r-- | chapter03/README.md | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/chapter03/README.md b/chapter03/README.md index 39baf903..e8944e12 100644 --- a/chapter03/README.md +++ b/chapter03/README.md @@ -72,9 +72,9 @@ A ScopeNode encapsulates the stack of symbol tables that are used to implement l * In [Chapter 5](../chapter05/README.md) when we implement branches, the ScopeNode gets duplicated at a branch point and then gets merged when the branch joins. This allows the names to evolve in each branch independently. At the merge point names that have diverged require a Phi node. * In [Chapter 7](../chapter07/README.md) additional logic is deployed for handling Phis from back edges. -* The ScopeNode is used to track some other values such as the Control token starting from [Chapter 4](../chapter04/README.md), and Aliases starting from [Chapter 10](../chapter10/README.md). Special name bindings are used +* The ScopeNode is used to track some other values such as the Control token starting from [Chapter 4](../chapter04/README.md), and whole memory starting from [Chapter 10a](../chapter10a/README.md). Special name bindings are used for these, and each name is tracked across branches and then merged at merge points. -* In [Chapter 10](../chapter10/README.md) the ScopeNode is enhanced to also maintain the declared type for each name. +* In [Chapter 10a](../chapter10a/README.md) the ScopeNode is enhanced to also maintain the declared type for each name. From an implementation standpoint, each symbol table is represented as a `HashMap<String,Integer>`, where the `String` is the variable name, and the `Integer` is an index into the inputs of the ScopeNode. To access the Node associated with a name, first the symbol table is consulted, and then the ScopeNode's inputs to find the required Node. |
