From 30af237e8362b4e01b8f3e2ceb04320259d7592e Mon Sep 17 00:00:00 2001 From: shaoying Date: Sun, 6 Jun 2021 22:30:20 +0800 Subject: [PATCH] opt some --- etc/init.shy | 13 +++++++ usr/honor/src/toolkit/shy.go | 67 ------------------------------------ 2 files changed, 13 insertions(+), 67 deletions(-) diff --git a/etc/init.shy b/etc/init.shy index a97a1df0..f70e4e24 100644 --- a/etc/init.shy +++ b/etc/init.shy @@ -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 diff --git a/usr/honor/src/toolkit/shy.go b/usr/honor/src/toolkit/shy.go index cbea01a4..9cead809 100644 --- a/usr/honor/src/toolkit/shy.go +++ b/usr/honor/src/toolkit/shy.go @@ -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 -}