-*- html -*- Syntax Tools overview page @author Richard Carlsson <carlsson.richard@gmail.com> @copyright 1997-2004 Richard Carlsson @version {@version} @title Erlang Syntax Tools @doc This package contains modules for handling abstract Erlang syntax trees, in a way that is compatible with the "parse trees" of the standard library module `erl_parse', together with utilities for reading source files in unusual ways and pretty-printing syntax trees. Also included is an amazing module merger and renamer called Igor, as well as an automatic code-cleaner. <p>The abstract layer (defined in {@link erl_syntax}) is nicely structured and the node types are context-independent. The layer makes it possible to transparently attach source-code comments and user annotations to nodes of the tree. Using the abstract layer makes applications less sensitive to changes in the {@link //stdlib/erl_parse} data structures, only requiring the {@link erl_syntax} module to be up-to-date.</p> <p>The pretty printer {@link erl_prettypr} is implemented on top of the library module {@link prettypr}: this is a powerful and flexible generic pretty printing library, which is also distributed separately.</p> <p>For a short demonstration of parsing and pretty-printing, simply compile the included module <a href="../examples/demo.erl"><code>demo.erl</code></a>, and execute <code>demo:run()</code> from the Erlang shell. It will compile the remaining modules and give you further instructions.</p> <p>Also try the {@link erl_tidy} module, as follows: <pre> erl_tidy:dir("any-erlang-source-dir", [test, old_guard_tests]).</pre> ("<code>test</code>" assures that no files are modified).</p> <p>News in 1.4: <ul> <li>Added support for {@link erl_syntax:cond_expr/1. cond-expressions}, {@link erl_syntax:try_expr/4. try-expressions} and {@link erl_syntax:class_qualifier/2. class-qualifier patterns}.</li> <li>Added support for parameterized modules.</li> <li>{@link igor. Igor} is officially included.</li> <li>Quick-parse functionality added to {@link epp_dodger}.</li> </ul> </p> <p>News in 1.3: <ul> <li>Added support for qualified names (as used by "packages").</li> <li>Various internal changes.</li> </ul> </p> <p>News in 1.2: <ul> <li>HTML Documentation (generated with EDoc).</li> <li>A few bug fixes and some minor interface changes (sorry for any inconvenience).</li> </ul> </p> <p>News in 1.1: <ul> <li>Module {@link erl_tidy}: check or tidy either a single module, or a whole directory tree recursively. Rewrites and reformats the code without losing comments or expanding macros. Safe mode allows generating reports without modifying files.</li> <li>Module {@link erl_syntax_lib}: contains support functions for easier analysis of the source code structure.</li> <li>Module {@link epp_dodger}: Bypasses the Erlang preprocessor - avoids macro expansion, file inclusion, conditional compilation, etc. Allows you to find/modify particular definitions/applications of macros, and other things previously not possible.</li> </ul> </p>