diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-08-31 17:53:54 +0200 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-08-31 17:53:54 +0200 |
| commit | 851c793da43be9e4d3319afe440d603c85834045 (patch) | |
| tree | fd4b3d3812f5743213b5849858c459c8196dbf7f /parser | |
| parent | 0f4bfe6e70263fbeb580014b62632f403b29b414 (diff) | |
codegen: fix interpreter re-entrance
So multiple successive incremental Evals function correctly.
Also improve the following:
- Apply the same Eval API to vm0 and vm1
- parser: dot diagram display is now synchronous
- codegen: outsource complex code generation for readability
- vm1: Pop take the number of values to pop as operand
Diffstat (limited to 'parser')
| -rw-r--r-- | parser/dot.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/parser/dot.go b/parser/dot.go index aae5c5f..f486cd5 100644 --- a/parser/dot.go +++ b/parser/dot.go @@ -20,8 +20,11 @@ func (*Parser) Adot(nodes []*Node, c string) { func (n *Node) Dot(c, s string) { dw, cmd := dotWriter(c) n.astDot(dw, s) - if cmd != nil { - cmd.Wait() + if cmd == nil { + return + } + if err := cmd.Wait(); err != nil { + log.Fatal(err) } } |
