1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
shaoying 2021-06-06 22:30:20 +08:00
parent de72a7d0ed
commit 30af237e83
2 changed files with 13 additions and 67 deletions

View File

@ -85,3 +85,16 @@
~gdb
event action listen event dream.create cmd web.code.tmux.session
~yac
matrix create shy 32 32
matrix insert shy num num "[0-9]*"
matrix insert shy key key "[a-z0-9]*"
matrix insert shy stm stm "if key < num"
return
matrix insert shy num num [0-9]*
matrix insert shy str str \"[a-h]*\"
matrix insert shy op2 op2 >
matrix insert shy op2 op2 >=
matrix insert shy exp exp num op2 num

View File

@ -4,70 +4,3 @@ import (
"fmt"
"strings"
)
type Frame struct {
Key string
Run bool
Pos int
deep int
Done bool
Data interface{}
Hash map[string]interface{}
Label map[string]int
}
func (f *Frame) String(meta string) string {
return fmt.Sprintf("%s%s%d %s %t", strings.Repeat("#", f.deep), meta, f.deep, f.Key, f.Run)
}
var bottom = &Frame{}
type Stack struct {
Target interface{}
FS []*Frame
}
func (s *Stack) Push(key string, run bool, pos int) *Frame {
s.FS = append(s.FS, &Frame{Key: key, Run: run, Pos: pos, deep: len(s.FS), Hash: map[string]interface{}{}})
return s.FS[len(s.FS)-1]
}
func (s *Stack) Peek() *Frame {
if len(s.FS) == 0 {
return bottom
}
return s.FS[len(s.FS)-1]
}
func (s *Stack) Pop() *Frame {
if len(s.FS) == 0 {
return bottom
}
f := s.FS[len(s.FS)-1]
s.FS = s.FS[:len(s.FS)-1]
return f
}
func (s *Stack) Hash(key string, val ...interface{}) (interface{}, bool) {
for i := len(s.FS) - 1; i >= 0; i-- {
if v, ok := s.FS[i].Hash[key]; ok {
if len(val) > 0 {
s.FS[i].Hash[key] = val[0]
}
return v, ok
}
}
if len(val) > 0 {
s.FS[len(s.FS)-1].Hash[key] = val[0]
return val[0], true
}
return nil, false
}
func (s *Stack) Label(key string) (int, bool) {
for i := len(s.FS) - 1; i >= 0; i-- {
if v, ok := s.FS[i].Label[key]; ok {
s.FS = s.FS[:i+1]
return v, ok
}
}
return -1, false
}