<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>