JFlex Ant Task

JFlex can easily be integrated with the Ant build tool. To use JFlex with Ant, simply copy the lib/jflex-version.jar file to the $ANT_HOME/lib/ directory or explicitly set the path to it in the ant task definition (see example below).

Description

The JFlex Ant Task invokes the JFlex lexical analyzer generator on a grammar file.

To use the JFlex task, the following line must be placed in the Ant build file:

<taskdef classname="jflex.anttask.JFlexTask" name="jflex" />

Or, setting the path to the JFlex jar explicitly:

<taskdef classname="jflex.anttask.JFlexTask" name="jflex" classpath="path-to-jflex.jar" />

The JFlex task requires the file attribute to be set to the source grammar file (*.flex). Unless the target directory is specified with the destdir option, the generated class will be saved to the same directory where the grammar file resides. Like javac, the JFlex task creates subdirectories in destdir according to the generated class package.

This task only invokes JFlex if the grammar file is newer than the generated files.

Parameters

Attribute Description Required Default
file="file" The grammar file to process. Yes
destdir="dir" 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, destdir causes the generated file to be written to {destdir}/{package name}. This behaviour is similar to javac -d dir. No
outdir="dir" 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 dir regardless of the package name. No
verbose Display generation process messages. No "off"
dump Dump character classes, NFA and DFA tables. No "off"
time or

timeStatistics

Display generation time statistics. No "off"
nomin or

skipMinimization

Skip minimization step. No "off"
skel="file" or

skeleton="file"

Use external skeleton file. No "off"
dot or

generateDot

Write graphviz .dot files for the generated automata (alpha). No "off"
nobak Do not make a backup if the generated file exists. No "off"
legacydot Dot (.) metacharacter matches [^\n] instead of [^\n\r\u000B\u000C\u0085\u2028\u2029] No "off"
noinputstreamctor Don't include an InputStream constructor in the generated scanner No "true"
unusedwarning Warn about unused macro definitions in the lexer specification. No "true"

Example

<jflex
    file="src/parser/Parser.flex"
    destdir="build/generated/"
/>

JFlex generates the lexical analyzer for src/parser/Parser.flex and saves the result to build/generated/parser/, providing Parser.flex is declared to be in package parser.

<jflex
    file="src/parser/Parser.flex"
    destdir="build/generated/"
/>
<javac
    srcdir="build/generated/"
    destdir="build/classes/"
/>

The same as above plus compile generated classes to build/classes