packageast// Stack is a stack of Node.typeStackstruct{stack[]Node}func(s*Stack)Len()int{returnlen(s.stack)}func(s*Stack)Push(nNode){s.stack=append(s.stack,n)}func(s*Stack)Pop()Node{x:=s.stack[len(s.stack)-1]s.stack[len(s.stack)-1]=nils.stack=s.stack[:len(s.stack)-1]returnx}func(s*Stack)Reset(){s.stack=nil}