You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Sunil Mishra <sm...@AI.SRI.COM> on 2008/12/12 20:27:53 UTC

Re: [HELP] problem using antlr in ant

It's been a while since I've worked on this, so I'm afraid I won't be  
able to give you much precise help. Make sure you have the required  
antlr jar files in your ant installation, the task AFAIK should work  
correctly from there on.

Sunil

On Dec 12, 2008, at 3:46 AM, <ku...@wipro.com> <kumar.bharath@wipro.com 
 > wrote:

> Hi Sunil,
>  I found some queries posted by you on antlr tasks in ant mail  
> archives.
> I am facing issue while using antlr task inside ant build.xml.
> could you please give me some insight on how to go about?
>
> Thanks in advance
> Regards
> Bharath
>
> 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.
>
> Ant could not find the task or a class this task relies upon.
>
> This is common and has a number of causes; the usual
> solutions are to read the manual pages then download and
> install needed JAR files, or fix the build file:
>  - You have misspelt 'antlr'.
>    Fix: check your spelling.
>  - The task needs an external JAR file to execute
>      and this is not found at the right place in the classpath.
>    Fix: check the documentation for dependencies.
>    Fix: declare the task.
>  - The task is an Ant optional task and the JAR file and/or libraries
>      implementing the functionality were not found at the time you
>      yourself built your installation of Ant from the Ant sources.
>    Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to  
> the
>      task and make sure it contains more than merely a META-INF/ 
> MANIFEST.MF.
>      If all it contains is the manifest, then rebuild Ant with the  
> needed
>      libraries present in ${ant.home}/lib/optional/ , or  
> alternatively,
>      download a pre-built release version from apache.org
>  - The build file was written for a later version of Ant
>    Fix: upgrade to at least the latest release version of Ant
>  - The task is not an Ant core or optional task
>      and needs to be declared using <taskdef>.
>  - You are attempting to use a task defined using
>     <presetdef> or <macrodef> but have spelt wrong or not
>    defined it at the point of use
>
> Remember that for JAR files to be visible to Ant tasks implemented
> in ANT_HOME/lib, the files must be in the same directory or on the
> classpath
>
> Please neither file bug reports on this problem, nor email the
> Ant mailing lists, until all of these causes have been explored,
> as this is not an Ant bug.
> Please do not print this email unless it is absolutely necessary.
>
> The information contained in this electronic message and any  
> attachments to this message are intended for the exclusive use of  
> the addressee(s) and may contain proprietary, confidential or  
> privileged information. If you are not the intended recipient, you  
> should not disseminate, distribute or copy this e-mail. Please  
> notify the sender immediately and destroy all copies of this message  
> and any attachments.
>
> WARNING: Computer viruses can be transmitted via email. The  
> recipient should check this email and any attachments for the  
> presence of viruses. The company accepts no liability for any damage  
> caused by any virus transmitted by this email.
>
> www.wipro.com
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


RE: [HELP] problem using antlr in ant

Posted by ku...@wipro.com.
HI Sunil,
 I was able to resolve the error. The problem as indicated because of
classpath issue itself. Now I am able to build grammar file using antlr
target inside ant.

Regards
Bharath

-----Original Message-----
From: Sunil Mishra [mailto:smishra@AI.SRI.COM] 
Sent: Saturday, December 13, 2008 12:58 AM
To: Bharath Kumar(WT01 - Computing and Storage IPG)
Cc: user@ant.apache.org
Subject: Re: [HELP] problem using antlr in ant

It's been a while since I've worked on this, so I'm afraid I won't be
able to give you much precise help. Make sure you have the required
antlr jar files in your ant installation, the task AFAIK should work
correctly from there on.

Sunil

On Dec 12, 2008, at 3:46 AM, <ku...@wipro.com>
<kumar.bharath@wipro.com 
 > wrote:

> Hi Sunil,
>  I found some queries posted by you on antlr tasks in ant mail  
> archives.
> I am facing issue while using antlr task inside ant build.xml.
> could you please give me some insight on how to go about?
>
> Thanks in advance
> Regards
> Bharath
>
> 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.
>
> Ant could not find the task or a class this task relies upon.
>
> This is common and has a number of causes; the usual
> solutions are to read the manual pages then download and
> install needed JAR files, or fix the build file:
>  - You have misspelt 'antlr'.
>    Fix: check your spelling.
>  - The task needs an external JAR file to execute
>      and this is not found at the right place in the classpath.
>    Fix: check the documentation for dependencies.
>    Fix: declare the task.
>  - The task is an Ant optional task and the JAR file and/or libraries
>      implementing the functionality were not found at the time you
>      yourself built your installation of Ant from the Ant sources.
>    Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to  
> the
>      task and make sure it contains more than merely a META-INF/ 
> MANIFEST.MF.
>      If all it contains is the manifest, then rebuild Ant with the  
> needed
>      libraries present in ${ant.home}/lib/optional/ , or  
> alternatively,
>      download a pre-built release version from apache.org
>  - The build file was written for a later version of Ant
>    Fix: upgrade to at least the latest release version of Ant
>  - The task is not an Ant core or optional task
>      and needs to be declared using <taskdef>.
>  - You are attempting to use a task defined using
>     <presetdef> or <macrodef> but have spelt wrong or not
>    defined it at the point of use
>
> Remember that for JAR files to be visible to Ant tasks implemented
> in ANT_HOME/lib, the files must be in the same directory or on the
> classpath
>
> Please neither file bug reports on this problem, nor email the
> Ant mailing lists, until all of these causes have been explored,
> as this is not an Ant bug.
> Please do not print this email unless it is absolutely necessary.
>
> The information contained in this electronic message and any  
> attachments to this message are intended for the exclusive use of  
> the addressee(s) and may contain proprietary, confidential or  
> privileged information. If you are not the intended recipient, you  
> should not disseminate, distribute or copy this e-mail. Please  
> notify the sender immediately and destroy all copies of this message  
> and any attachments.
>
> WARNING: Computer viruses can be transmitted via email. The  
> recipient should check this email and any attachments for the  
> presence of viruses. The company accepts no liability for any damage  
> caused by any virus transmitted by this email.
>
> www.wipro.com
>


Please do not print this email unless it is absolutely necessary. 

The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. 

WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. 

www.wipro.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Re: [HELP] problem using antlr in ant

Posted by Hendrik Maryns <qw...@sneakemail.com>.
Hello,

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