func (p *parser) parseExpr() (expr Expr, err error) {
	defer p.recover(&err)

	for p.peek().typ != ItemEOF {
		if p.peek().typ == ItemComment {
			continue
		}
		if expr != nil {
			p.errorf("could not parse remaining input %.15q...", p.lex.input[p.lex.lastPos:])
		}
		expr = p.expr()
	}

	if expr == nil {
		p.errorf("no expression found in input")
	}
	return
}
func (p *parser) parseExpr() (expr Expr, err error) {
	defer p.recover(&err)

	for p.peek().typ != ItemEOF {
		if p.peek().typ == ItemComment {
			continue
		}
		if expr != nil {
			p.errorf("could not parse remaining input %.15q...", p.lex.input[p.lex.lastPos:])
		}
		expr = p.expr()
	}

	if expr == nil {
		p.errorf("no expression found in input")
	}
	return
}
func ( p * parser ) parseExpr ( ) ( expr Expr , err error ) { defer p . recover ( & err ) for p . peek ( ) . typ != ItemEOF { if p . peek ( ) . typ == ItemComment { continue } if expr != nil { p . errorf ( " " , p . lex . input [ p . lex . lastPos : ] ) } expr = p . expr ( ) } if expr == nil { p . errorf ( " " ) } return }
// parseExpr parses a single expression from the input.
parseExpr parses a single expression from the input .