A Lisplike domain-specific language could do what you specify, although the ordering in point 1 wouldn't hold. It'd be prefix notation. If that's acceptable though, Lisp is already known to be easy to parse, transform, compose, and work with functionally.