diff options
| author | Dibyendu Majumdar <dibyendumajumdar@users.noreply.github.com> | 2023-10-01 18:01:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-01 10:01:54 -0700 |
| commit | df5294e88cc409d7adf3e10666bfcb40e34472b9 (patch) | |
| tree | a890d2a65704870a27211613b81f1e950f73a588 /chapter03/docs/03-graph3.gv | |
| parent | 3f2e9e84e137462272ae1bb592f47cecc362bdff (diff) | |
| download | Simple-df5294e88cc409d7adf3e10666bfcb40e34472b9.tar.gz Simple-df5294e88cc409d7adf3e10666bfcb40e34472b9.zip | |
Chapter 3 - add vars and lexical scope. (#7)
* Chapter 3 - add vars and lexical scope.
* Fix typo
* Overhaul graph viz
Makes the scopes pointing into the graph being build more visually appealing.
Constants are a printed with just the constant value.
* Fix control edge color
* Fix missing grouping operator parse
Add a parens test.
Shorten names 'Identifier' to 'Id'
_lexer.match -> match
require() passes a Node thru, so can be flow-coded.
Uniform syntax error messages.
Handy Lexer.toString for debugging.
Drop Optional for null returns; less total code; less objects; less confusion.
camelCase some fcns.
* All parser helpers return Node, not void.
Drop _ret. parseBlock and parseStatement now the same.
* CLosely align chap2 and chap3 parsers
Mostly whitespace aligned; dragged a few functions around to make more sense.
I think the diff from Ch2 and Ch3 is down a few differences about what is a statement, plus all the symbol stuff for scopes and variables.
* Add examples illustrating the symbol table creation.
* Update docs and comments
---------
Co-authored-by: Cliff Click <cliffc@acm.org>
Diffstat (limited to 'chapter03/docs/03-graph3.gv')
| -rw-r--r-- | chapter03/docs/03-graph3.gv | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/chapter03/docs/03-graph3.gv b/chapter03/docs/03-graph3.gv new file mode 100644 index 00000000..da30744b --- /dev/null +++ b/chapter03/docs/03-graph3.gv @@ -0,0 +1,28 @@ +digraph chapter03 { + rankdir=BT; + subgraph cluster_Nodes { + Start1 [ shape=box style=filled fillcolor=yellow label="Start" ]; + Con_2 [ label="#1" ]; + Con_19 [ label="#8" ]; + Con_3 [ label="#2" ]; + Return20 [ shape=box style=filled fillcolor=yellow label="Return" ]; + Con_4 [ label="#3" ]; + Con_5 [ label="#4" ]; + } + node [shape=plaintext]; + subgraph cluster_0 { + scope0 [label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="aqua">0</TD><TD PORT="scope0_y0">y0</TD><TD PORT="scope0_x0">x0</TD><TD PORT="scope0_y1">y1</TD><TD PORT="scope0_x1">x1</TD></TR> + </TABLE>>]; + } + Con_19 -> Start1 [style=dotted]; + Return20 -> Start1 [color=red]; + Return20 -> Con_19; + edge [style=dashed color=cornflowerblue]; + scope0:scope0_y0 -> Con_3; + scope0:scope0_x0 -> Con_2; + scope0:scope0_y1 -> Con_5; + scope0:scope0_x1 -> Con_4; +} + |
