func (p *parser) recover(errp *error) {
	e := recover()
	if _, ok := e.(runtime.Error); ok {
		// Print the stack trace but do not inhibit the running application.
		buf := make([]byte, 64<<10)
		buf = buf[:runtime.Stack(buf, false)]

		fmt.Fprintf(os.Stderr, "parser panic: %v\n%s", e, buf)
		*errp = errUnexpected
	} else if e != nil {
		*errp = e.(error)
	}
	p.lex.close()
}
func (p *parser) recover(errp *error) {
	e := recover()
	if _, ok := e.(runtime.Error); ok {
		
		buf := make([]byte, 64<<10)
		buf = buf[:runtime.Stack(buf, false)]

		fmt.Fprintf(os.Stderr, "parser panic: %v\n%s", e, buf)
		*errp = errUnexpected
	} else if e != nil {
		*errp = e.(error)
	}
	p.lex.close()
}
func ( p * parser ) recover ( errp * error ) { e := recover ( ) if _ , ok := e . ( runtime . Error ) ; ok { // Print the stack trace but do not inhibit the running application. buf := make ( [ ] byte , 64 << 10 ) buf = buf [ : runtime . Stack ( buf , false ) ] fmt . Fprintf ( os . Stderr , " \n " , e , buf ) * errp = errUnexpected } else if e != nil { * errp = e . ( error ) } p . lex . close ( ) }
// recover is the handler that turns panics into returns from the top level of Parse.
recover is the handler that turns panics into returns from the top level of Parse .