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を実行した場合にも、予期しない動作が発生します。