2019-11-28 08:57:12 -08:00
|
|
|
package shsh
|
|
|
|
|
|
|
|
|
|
type TokenStack struct {
|
|
|
|
|
buffer []*Token
|
2019-11-28 20:07:28 -08:00
|
|
|
capacity int
|
2019-11-28 08:57:12 -08:00
|
|
|
}
|
|
|
|
|
|
2019-11-28 20:07:28 -08:00
|
|
|
func (s *TokenStack) Push(v *Token) {
|
2019-11-28 08:57:12 -08:00
|
|
|
s.capacity++
|
2019-11-28 20:07:28 -08:00
|
|
|
s.buffer = append(s.buffer, v)
|
2019-11-28 08:57:12 -08:00
|
|
|
}
|
|
|
|
|
|
2019-11-28 20:07:28 -08:00
|
|
|
func (s *TokenStack) Pop() *Token {
|
2019-11-28 08:57:12 -08:00
|
|
|
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
|
2019-11-28 08:57:12 -08:00
|
|
|
}
|