SHS/pkg/shsh/stack.go

23 lines
376 B
Go
Raw Normal View History

package shsh
type TokenStack struct {
buffer []*Token
2019-11-28 20:07:28 -08:00
capacity int
}
2019-11-28 20:07:28 -08:00
func (s *TokenStack) Push(v *Token) {
s.capacity++
2019-11-28 20:07:28 -08:00
s.buffer = append(s.buffer, v)
}
2019-11-28 20:07:28 -08:00
func (s *TokenStack) Pop() *Token {
if s.capacity <= 0 {
return nil
}
s.capacity--
2019-11-28 20:07:28 -08:00
res := s.buffer[len(s.buffer) - 1]
s.buffer = s.buffer[:len(s.buffer) - 1]
return res
}