pub fn parse(input: &str) -> Result<Vec<Pattern>, String>
Top-level terms (implicitly ANDed, like mutt).