Implement $MATCH

This commit is contained in:
HAYAMA_Kaoru
2024-12-03 18:16:59 +09:00
parent 5ec19acc0e
commit b9c34297a9
+3 -1
View File
@@ -14,6 +14,7 @@ import (
var ( var (
symTimeout = gmnlisp.NewSymbol("timeout") symTimeout = gmnlisp.NewSymbol("timeout")
symInterval = gmnlisp.NewSymbol("interval") symInterval = gmnlisp.NewSymbol("interval")
symMatch = gmnlisp.NewSymbol("$MATCH")
) )
var ErrCtrlC = errors.New("^C") var ErrCtrlC = errors.New("^C")
@@ -173,7 +174,8 @@ func (g *Global) expectX(ctx context.Context, w *gmnlisp.World, node gmnlisp.Nod
if result == EventCtrlC { if result == EventCtrlC {
return nil, ErrCtrlC return nil, ErrCtrlC
} else if result >= 0 { } else if result >= 0 {
return gmnlisp.Progn(ctx, w, actions[result]) _w := w.Let(&gmnlisp.Pair{Key: symMatch, Value: gmnlisp.String(patterns[result])})
return gmnlisp.Progn(ctx, _w, actions[result])
} else { } else {
return gmnlisp.Progn(ctx, w, timeoutAct) return gmnlisp.Progn(ctx, w, timeoutAct)
} }