JavaCCコンパイラコンパイラのJJTreeプリプロセッサを呼び出します。生成されたJavaCCソースの様々な場所に、構文木構築アクションを挿入します。JJTreeの出力はJavaCCを通して実行され、パーサが作成されます。
jjtreeタスクを使用するには、処理するJJTree文法ファイルの名前にtarget属性を設定します。AntがJavaCCクラスを見つけられるように、javacchome属性を使用してJavaCCインストールを含むディレクトリを指定する必要があります。オプションとして、生成されたJavaCC文法ファイルとノードファイルを特定のディレクトリに書き込むためにoutputdirectoryを設定することもできます。設定しない場合、jjtreeは生成されたJavaCC文法ファイルとノードファイルをJJTree文法ファイルを含むディレクトリに書き込みます。追加オプションとして、生成されたJavaCC文法ファイルを特定の(ディレクトリと)ファイルに書き込むためにoutputfileを設定することもできます。設定しない場合、jjtreeは生成されたJavaCC文法ファイルを、サフィックス.jjを付けたJJTree文法ファイルとして書き込みます。
このタスクは、文法ファイルが生成されたJavaCCファイルよりも新しい場合にのみJJTreeを呼び出します。
| 属性 | 説明 | 必須 |
|---|---|---|
| target | 処理するJJTree文法ファイル。 | はい |
| javacchome | JavaCC配布物を含むディレクトリ。 | はい |
| outputdirectory | 生成されたJavaCC文法ファイルとノードファイルを書き込むディレクトリ。設定しない場合、ファイルは文法ファイルを含むディレクトリに書き込まれます。 | いいえ |
| outputfile | 生成されたJavaCC文法ファイルを書き込むファイル。設定しない場合、ファイルはサフィックス.jjを付けたJJTree文法ファイルと同じ名前で書き込まれます。outputdirectoryが指定されている場合はそのディレクトリに対する、そうでない場合はプロジェクトのbasedirに対する相対ファイル名となります。 |
いいえ |
| buildnodefiles | BUILD_NODE_FILES文法オプションを設定します。これはブール値オプションです。 | いいえ |
| multi | MULTI文法オプションを設定します。これはブール値オプションです。 | いいえ |
| nodedefaultvoid | NODE_DEFAULT_VOID文法オプションを設定します。これはブール値オプションです。 | いいえ |
| nodefactory | NODE_FACTORY文法オプションを設定します。これはブール値オプションです。 | いいえ |
| nodescopehook | NODE_SCOPE_HOOK文法オプションを設定します。これはブール値オプションです。 | いいえ |
| nodeusesparser | NODE_USES_PARSER文法オプションを設定します。これはブール値オプションです。 | いいえ |
| static | STATIC文法オプションを設定します。これはブール値オプションです。 | いいえ |
| visitor | VISITOR文法オプションを設定します。これはブール値オプションです。 | いいえ |
| nodepackage | NODE_PACKAGE文法オプションを設定します。これは文字列オプションです。 | いいえ |
| visitorexception | VISITOR_EXCEPTION文法オプションを設定します。これは文字列オプションです。 | いいえ |
| nodeprefix | NODE_PREFIX文法オプションを設定します。これは文字列オプションです。 | いいえ |
| maxmemory | フォークされたJVMに割り当てる最大メモリ量。Ant 1.8.3以降 | いいえ |
文法ファイルsrc/Parser.jjtでJJTreeを呼び出し、生成された文法ファイルParser.jjをbuild/srcに書き込みます。JJTreeを呼び出す際に、文法オプションNODE_USES_PARSERをtrue
に設定します。
<jjtree target="src/Parser.jjt"
outputdirectory="build/src"
javacchome="c:/program files/JavaCC"
nodeusesparser="true"/>
taskdef バージョン間の出力場所の比較| コマンドラインJJTreeオプションと生成されたファイル(作業ディレクトリ:/tmp) | Ant 1.5.3 対 コマンドライン | Ant 1.6 対 コマンドライン |
|---|---|---|
jjtree grammar.jjt
/tmp/grammar.jj
/tmp/<generated>.java
|
同じ | 同じ |
jjtree relative/grammar.jjt
/tmp/grammar.jj
/tmp/<generated>.java
|
/tmp/relative/grammar.jj /tmp/relative/<generated>.java |
同じ |
jjtree /tmp/absolute/grammar.jjt
/tmp/grammar.jj
/tmp/<generated>.java
|
/tmp/absolute/grammar.jj /tmp/absolute/<generated>.java |
同じ |
jjtree -OUTPUT_DIRECTORY:relative grammar.jjt
/tmp/relative/grammar.jj
/tmp/relative/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_DIRECTORY:relative relative/grammar.jjt
/tmp/relative/grammar.jj
/tmp/relative/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_DIRECTORY:relative /tmp/absolute/grammar.jjt
/tmp/relative/grammar.jj
/tmp/relative/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_DIRECTORY:/tmp/absolute/ grammar.jjt
/tmp/absolute/grammar.jj
/tmp/absolute/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_DIRECTORY:/tmp/absolute/ relative/grammar.jjt
/tmp/absolute/grammar.jj
/tmp/absolute/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_DIRECTORY:/tmp/absolute/ /tmp/absolute/grammar.jjt
/tmp/absolute/grammar.jj
/tmp/absolute/<generated>.java
|
同じ | 同じ |
jjtree -OUTPUT_FILE:output.jj grammar.jjt
/tmp/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj relative/grammar.jjt
/tmp/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj /tmp/absolute/grammar.jjt
/tmp/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:relative grammar.jjt
/tmp/relative/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:relative relative/grammar.jjt
/tmp/relative/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:relative /tmp/absolute/grammar.jjt
/tmp/relative/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ grammar.jjt
/tmp/absolute/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ relative/grammar.jjt
/tmp/absolute/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ /tmp/absolute/grammar.jjt
/tmp/absolute/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj relative/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj /tmp/absolute/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:relative grammar.jjt
/tmp/relative/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:relative relative/grammar.jjt
/tmp/relative/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:relative /tmp/absolute/grammar.jjt
/tmp/relative/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ grammar.jjt
/tmp/absolute/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ relative/grammar.jjt
/tmp/absolute/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ /tmp/absolute/grammar.jjt
/tmp/absolute/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj relative/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj /tmp/absolute/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:D:/tmp/subdir/output.jj grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | サポートされていません* |
jjtree -OUTPUT_FILE:D:/tmp/subdir/output.jj relative/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | サポートされていません* |
jjtree -OUTPUT_FILE:D:/tmp/subdir/output.jj /tmp/absolute/grammar.jjt
/tmp/subdir/output.jj
/tmp/<generated>.java
|
サポートされていません | サポートされていません* |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:relative grammar.jjt
/tmp/relative/tmp/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:relative relative/grammar.jjt
/tmp/relative/tmp/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:relative /tmp/absolute/grammar.jjt
/tmp/relative/tmp/subdir/output.jj
/tmp/relative/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ grammar.jjt
/tmp/absolute/tmp/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ relative/grammar.jjt
/tmp/absolute/tmp/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
jjtree -OUTPUT_FILE:/tmp/subdir/output.jj -OUTPUT_DIRECTORY:/tmp/absolute/ /tmp/absolute/grammar.jjt
/tmp/absolute/tmp/subdir/output.jj
/tmp/absolute/<generated>.java
|
サポートされていません | 同じ |
注記:Ant taskdef jjtreeでJJTreeを実行する場合、プロジェクトのbasedirとAntの作業ディレクトリが異なる可能性があるため、オプション-OUTPUT_DIRECTORYを常に設定する必要があります。そのため、taskdef jjtreeにoutputdirectoryを指定しない場合でも、JJTreeは-OUTPUT_DIRECTORYがプロジェクトのbasedirに設定されて呼び出されます。しかし、-OUTPUT_DIRECTORYが設定されている場合、-OUTPUT_FILEの設定は、この-OUTPUT_DIRECTORYを基準とした相対パスとして扱われます。したがって、-OUTPUT_FILEが絶対パスであるか、ドライブ文字を含む場合、問題が発生します。そのため、絶対的なoutputfile(outputdirectoryが指定されていない場合)はデフォルトディレクトリに対する相対パスになります。このため、ドライブ文字を含むoutputfileはサポートできません。
ちなみに:-OUTPUT_DIRECTORYが設定されている場合に-OUTPUT_FILEにドライブ文字を指定すると、コマンドラインからJJTreeを実行した場合にも、予期しない動作が発生します。