Attribute.ParseThe interface to the abstract parse tree.
The parse tree is a functionally an s-expression.
val atom : tree -> string optionatom tree is Some atom if tree is an atom.
tree ~atom:f ~list:g tree parses tree.
Calls f x if atom tree is not None, otherwise calls g x.
fail problem tree reports an ill-formed attribute declaration.
The passed tree is used to properly report error that references the original source code and its location.
It could be an empty if the problem is somewhat generic and doesn't reference any particular tree or source.