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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to