commit b28303433f177811a5b813bd59cd08b1be1f2415
parent 8d7e8de76bed4a06c122ca79269d460b9bb5dc99
Author: lash <dev@holbrook.no>
Date: Thu, 19 Dec 2024 09:59:16 +0000
Add mprev, mnext
Diffstat:
M | vm/debug.go | | | 46 | ++++++++++++++++++++++++++-------------------- |
1 file changed, 26 insertions(+), 20 deletions(-)
diff --git a/vm/debug.go b/vm/debug.go
@@ -43,8 +43,8 @@ func (ph *ParseHandler) WithDefaultHandlers() *ParseHandler {
ph.InCmp = ph.incmp
ph.MOut = ph.mout
ph.MSink = ph.msink
-// ph.MNext = ph.mnext
-// ph.MPrev = ph.mprev
+ ph.MNext = ph.mnext
+ ph.MPrev = ph.mprev
return ph
}
@@ -136,6 +136,18 @@ func (ph *ParseHandler) mout(sym string, sel string) error {
return nil
}
+func (ph *ParseHandler) mnext(sym string, sel string) error {
+ s := OpcodeString[MNEXT]
+ ph.cur = fmt.Sprintf("%s %s %s\n", s, sym, sel)
+ return nil
+}
+
+func (ph *ParseHandler) mprev(sym string, sel string) error {
+ s := OpcodeString[MPREV]
+ ph.cur = fmt.Sprintf("%s %s %s\n", s, sym, sel)
+ return nil
+}
+
// ToString verifies all instructions in bytecode and returns an assmebly code instruction for it.
func (ph *ParseHandler) ToString(b []byte) (string, error) {
buf := bytes.NewBuffer(nil)
@@ -228,24 +240,18 @@ func (ph *ParseHandler) ParseAll(b []byte) (int, error) {
if err == nil {
err = ph.MOut(r, v)
}
-// case MNEXT:
-// r, v, bb, err := ParseMNext(b)
-// b = bb
-// if err == nil {
-// if w != nil {
-// //rs = fmt.Sprintf("%s %s \"%s\"\n", s, r, v)
-// rs = fmt.Sprintf("%s %s %s\n", s, r, v)
-// }
-// }
-// case MPREV:
-// r, v, bb, err := ParseMPrev(b)
-// b = bb
-// if err == nil {
-// if w != nil {
-// //rs = fmt.Sprintf("%s %s \"%s\"\n", s, r, v)
-// rs = fmt.Sprintf("%s %s %s\n", s, r, v)
-// }
-// }
+ case MNEXT:
+ r, v, bb, err := ParseMNext(b)
+ b = bb
+ if err == nil {
+ err = ph.MNext(r, v)
+ }
+ case MPREV:
+ r, v, bb, err := ParseMPrev(b)
+ b = bb
+ if err == nil {
+ err = ph.MPrev(r, v)
+ }
}
if err != nil {
return ph.Length(), err