Hello, > On Dec 12, 2008, at 3:46 AM, <[email protected]> > <[email protected]> wrote: > >> Hi Sunil, >> I found some queries posted by you on antlr tasks in ant mail archives.
Why then not ask in the Ant mailing list, as Sunil did for you?
>> I am facing issue while using antlr task inside ant build.xml.
>> could you please give me some insight on how to go about?
>> here are the details:
>> I am trying to build a grammar file inside build.xml
>>
>> <target name="antlrcompile">
>> <antlr target="sample.g;" outputdirectory="." >
>> <classpath>
>> <pathelement location="../../lib/antlr-2.7.7.jar"/>
>> </classpath>
>>
>> </antlr>
>> </target>
>> I am getting an error:
>>
>>
>> build.xml:19: Could not create task or type of type: antlr.
I see you are using ANTLR 2.7, which is rather old. I use ANTLR 3.1, but you
can probably adapt to your needs. I have
the following in my build files:
== build.properties ==
# ANTLR stuff
antlrdir=${srcdir}/ANTLR
grammar.name=fsq
parse.package=de/uni_tuebingen/sfb/lichtenstein/formulas/parsing
tool.options=-lib ${antlrdir} -o ${antlrdir}
== build.properties ==
== build.xml==
<property file="build.properties" />
<path id="ANTLR.classpath">
<pathelement location="libraries/antlr-3.1.1.jar" />
</path>
<target name="antlr"
depends="antlr-parser"
description="Generate Java parser files from the ANTLR
grammars">
<!-- Move generated Java code to the correct package directory.
-->
<move todir="${srcdir}/${parse.package}">
<fileset dir="${antlrdir}" includes="*.java" />
</move>
</target>
<target name="antlr-parser"
depends="antlr-lexer"
unless="lexerGrammarProcessed"
description="Generate Java parser file from the ANTLR parser
grammar">
<!-- does not work, unfortunately
<antlr:antlr3 xmlns:antlr="antlib:org/apache/tools/ant/antlr"
target="${srcdir}/ANTLR/${grammar.name}Parser.g"
outputdirectory="${srcdir}/${parse.package}"
libdirectory="/home/hendrik/Java/antlr-3.1.1/lib"
multithreaded="true" />
-->
<java classname="org.antlr.Tool"
classpathref="ANTLR.classpath"
fork="true">
<!-- The -lib option tells ANTLR where to look for the
.token file
generated by processing the lexer grammar. -->
<arg line="${tool.options}
${srcdir}/ANTLR/${grammar.name}Parser.g" />
</java>
</target>
<target name="antlr-lexer"
depends="prepare-antlr"
unless="lexerGrammarProcessed"
description="Generate Java lexer file from the ANTLR lexer
grammar">
<!-- does not work, unfortunately
<antlr:antlr3 xmlns:antlr="antlib:org/apache/tools/ant/antlr"
target="${srcdir}/ANTLR/${grammar.name}.g"
outputdirectory="${srcdir}/${parse.package}"
libdirectory="/home/hendrik/Java/antlr-3.1.1/lib"
multithreaded="true" />
-->
<java classname="org.antlr.Tool"
classpathref="ANTLR.classpath"
fork="true">
<!-- The -lib option tells ANTLR where to look for the
.token file
generated by processing the lexer/parser grammar. -->
<arg line="${tool.options}
${srcdir}/ANTLR/${grammar.name}Lexer.g" />
</java>
<!-- Move generated Java code to the correct package directory.
-->
<move todir="${srcdir}/${parse.package}">
<fileset dir="${antlrdir}" includes="*.java" />
</move>
</target>
<target name="prepare-antlr">
<uptodate property="lexerGrammarProcessed"
srcfile="${antlrdir}/${grammar.name}Lexer.g">
<mapper type="merge"
to="${srcdir}/${parse.package}/${grammar.name}Lexer.java" />
</uptodate>
<uptodate property="parserGrammarProcessed"
srcfile="${antlrdir}/${grammar.name}Parser.g">
<mapper type="merge"
to="${srcdir}/${parse.package}/${grammar.name}Parser.java" />
</uptodate>
</target>
As you can see, I didn’t manage to use the antlr3 target which can be found on
the internet. The antlr target from
ant-tools should however work with ANTLR 2.7. Adapt the classpath line as
appropriate.
HTH, H.
--
Hendrik Maryns
http://tcl.sfs.uni-tuebingen.de/~hendrik/
==================
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
signature.asc
Description: OpenPGP digital signature
