A toy recursive-descent parser in Scala (and yes, I could've used parser combinators but I didn't want to)