# Package com.oracle.truffle.api.instrument

Interface Summary
ASTPrinter: Access to AST-based debugging support, which is could be language implementation specific in the details chosen to be presented.
ASTProber: Enables instrumentation by attaching Probes to some nodes in a (newly created, not yet executed) AST.
InstrumentationNode: A marker interface for Truffle nodes that support Instrumentation and are should not be part of any Guest Language execution semantics.
Probe.ProbeListener: An observer of events related to `Probe`s: creating and tagging.
ProbeNode.Instrumentable: Any Truffle node implementing this interface can be "instrumented" by installing a `Probe` that intercepts execution events at the node and routes them to any `Instrument`s that have been attached to the `Probe`.
ProbeNode.WrapperNode: A node that can be inserted into a Truffle AST, and which enables instrumentation at a particular Guest Language (GL) node.
SyntaxTag: Program element "tags", presumed to be singletons (best implemented as enums) that define user-visible behavior for debugging and other simple tools.
SyntaxTagged: Information about a guest language program element in a Truffle AST that can be marked as belonging to 0 or more tags.
TruffleEventReceiver: A receiver of Truffle AST runtime execution events that can collect information and possibly intervene on behalf of an external tool.
Visualizer: Visualization services for the benefit of instrumentation-based tools, possibly specialized for each guest language and possibly specialized for relevant information from the underlying Truffle implementation.

Class Summary
Instrument: A dynamically added/removed binding between a `Probe`, which provides notification of execution events taking place at a `Node` in a Guest Language (GL) Truffle AST, and a receiver, which consumes notifications on behalf of an external tool.
Probe: A binding between a particular location in the Truffle AST representation of a running Guest Language (GL) program (i.e.
ProbeNode: Implementation interfaces and classes for attaching `Probe`s to `ProbeNode.WrapperNode`s.
SyntaxTagTrap: A trap that can be set to interrupt execution at probed nodes carrying a specific tag.

Enum Summary
StandardSyntaxTag: A somewhat language-agnostic set of user-sensible syntactic categories, suitable for conventional imperative languages, and is being developed incrementally.

Exception Summary
KillException: Controls breaking out of an execution context, such as a shell or eval.
QuitException: Controls breaking out of all executions and ending Truffle execution.