ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hendrik Maryns <qwizv9...@sneakemail.com>
Subject Re: [HELP] problem using antlr in ant
Date Mon, 15 Dec 2008 11:40:50 GMT
Hello,

> On Dec 12, 2008, at 3:46 AM, <kumar.bharath@wipro.com>
> <kumar.bharath@wipro.com> 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


Mime
View raw message