7.2 Language

The Symex DSL allows you to specify traversals. A traversal may be a movement from one part of the tree to another, or it may be an action to take at a particular point in a tree such as “taking” (deleting) an expression or “dropping” (pasting) something, “carefully” checking conditions, or even performing an arbitrary “effect.”

Symex gives you several linguistic forms with which to describe such traversals in precise ways.

Each form of the language has its own syntax, and typically the clauses of these forms are expected to be traversals themselves. For instance, the maneuver form specifies a traversal as a sequence of other traversals to be executed in order.

Typically, if a traversal succeeds, it returns a list of executed moves which if replayed manually from the starting position would have the same effect as running the traversal did. If the traversal fails, it returns nil.