22 lines
360 B
Go
22 lines
360 B
Go
package shsh
|
|
|
|
type TokenStack struct {
|
|
buffer []*Token
|
|
int capacity
|
|
}
|
|
|
|
func (s *Stack) Push(v *Token) {
|
|
s.capacity++
|
|
*s.buffer = append(*s.buffer, v)
|
|
}
|
|
|
|
func (s *Stack) Pop() *Token {
|
|
if s.capacity <= 0 {
|
|
return nil
|
|
}
|
|
|
|
s.capacity--
|
|
res := *s.buffer[len(*s.buffer) - 1]
|
|
*s = *s.buffer[ :len(*s) - 1]
|
|
return ret
|
|
}
|