| <html> |
| |
| <head> |
| <meta http-equiv="Content-Language" content="en-us"> |
| <title>JFlex Ant Task</title> |
| </head> |
| |
| <body> |
| |
| <h2><a name="JFlex">JFlex Ant Task</a></h2> |
| <p> |
| JFlex can be easily integrated with <a HREF="http://ant.apache.org/" |
| target="_top">Ant</a> build tool. |
| To use JFlex with Ant, simply copy JFlex.jar to <i>$ANT_HOME/lib/</i> directory. |
| </p> |
| <h3>Description</h3> |
| <p> |
| The JFlex Ant Task invokes the <a HREF="http://jflex.de/" target="_top">JFlex</a> lexical |
| analyzer generator on a grammar file. |
| </p> |
| <p> |
| To use the JFlex task, the following line must be placed in the Ant build file: |
| </p> |
| <pre><taskdef classname="JFlex.anttask.JFlexTask" name="jflex" /></pre> |
| |
| <p> |
| The JFlex task requires the <i>file</i> attribute to be set to the source grammar file (*.flex). |
| Unless the target directory is specified with the <i>destdir</i> option, |
| the generated class will be saved to the same directory where grammar file resides. |
| Like javac, the JFlex task creates subdirectories in <i>destdir</i> according to the |
| generated class package. |
| </p> |
| <p> |
| This task only invokes JFlex if the grammar file is newer than the generated |
| files. |
| </p> |
| |
| <h3>Parameters</h3> |
| <table border="1" cellpadding="2" cellspacing="0" width="80%"> |
| <tr> |
| <td valign="top"><b>Attribute</b></td> |
| <td valign="top"><b>Description</b></td> |
| <td align="center" valign="top"><b>Required</b></td> |
| <td align="center" valign="top"><b>Default</b></td> |
| </tr> |
| <tr> |
| <td valign="top">file="file"</td> |
| <td valign="top">The grammar file to process.</td> |
| <td valign="top" align="center">Yes</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td valign="top">destdir="dir"</td> |
| <td valign="top"> |
| The directory to write the generated files to. If not set, the files |
| are written to the directory containing the grammar file. Note that unlike |
| JFlex's "-d" command line option, <i>destdir</i> causes the generated file to be written to |
| {destdir}/<b>{package name}</b>. This behaviour is similar to <i>javac -d dir</i>. |
| </td> |
| <td valign="top" align="center">No</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td valign="top">outdir="dir"</td> |
| <td valign="top"> |
| The directory to write the generated files to. If not set, the files |
| are written to the directory containing the grammar file. This options works |
| exactly like JFlex's "-d" command line option, it causes the output file to |
| be written to <i>dir</i> regardless of the package name. |
| </td> |
| <td valign="top" align="center">No</td> |
| <td></td> |
| </tr> |
| <tr> |
| <td valign="top">verbose</td> |
| <td valign="top">Display generation process messages.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">dump</td> |
| <td valign="top">Dump character classes, NFA and DFA tables.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">time or<p>timeStatistics</td> |
| <td valign="top">Display generation time statistics.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">nomin or<p>skipMinimization</td> |
| <td valign="top">Skip minimization step.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">skel="file" or<p>skeleton="file"</td> |
| <td valign="top">Use external skeleton file.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">dot or<p>generateDot</td> |
| <td valign="top">Write graphviz .dot files for the generated automata (alpha).</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">nobak</td> |
| <td valign="top">Do not make a backup if the generated file exists.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">switch</td> |
| <td valign="top">Use code generation method <i>switch</t>.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">table</td> |
| <td valign="top">Use code generation method <i>table</t>.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"off"</td> |
| </tr> |
| <tr> |
| <td valign="top">pack</td> |
| <td valign="top">Use code generation method <i>pack</t>.</td> |
| <td align="center" valign="top">No</td> |
| <td align="center" valign="top">"on"</td> |
| </tr> |
| |
| </table> |
| <h3>Example</h3> |
| <blockquote><pre> |
| <jflex |
| file="src/parser/Parser.flex" |
| destdir="build/generated/" |
| /> |
| </pre></blockquote> |
| <p> |
| JFlex generates the lexical analyzer for <tt>src/parser/Parser.flex</tt> and saves the result |
| to <tt>build/generated/parser/</tt>, providing <tt>Parser.flex</tt> declares to be in package <tt>parser</tt>. |
| </p> |
| |
| <blockquote><pre> |
| <jflex |
| file="src/parser/Parser.flex" |
| destdir="build/generated/" |
| /> |
| <javac |
| srcdir="build/generated/" |
| destdir="build/classes/" |
| /> |
| </pre></blockquote> |
| <p> |
| The same as above plus compile generated classes to <i>build/classes</i> |
| </p> |
| <hr> |
| |
| </body> |
| </html> |
| |