From 8a2fee91baa0a5de7d4d47da87afd1de4183c7b9 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 21 May 2003 13:29:55 +0000 Subject: [PATCH] What has been -traceTreeWalker in ANTLR 2.7.0 has become -traceTreeParser in 2.7.2 PR: 20020 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274605 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/taskdefs/optional/ANTLR.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java b/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java index 220ed293e..4ae447abb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java @@ -59,6 +59,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileReader; import java.io.IOException; +import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; @@ -337,7 +338,11 @@ public class ANTLR extends Task { commandline.createArgument().setValue("-traceLexer"); } if (traceTreeWalker) { - commandline.createArgument().setValue("-traceTreeWalker"); + if (is272()) { + commandline.createArgument().setValue("-traceTreeParser"); + } else { + commandline.createArgument().setValue("-traceTreeWalker"); + } } if (debug) { commandline.createArgument().setValue("-debug"); @@ -385,9 +390,9 @@ public class ANTLR extends Task { PumpStreamHandler psh = new PumpStreamHandler(new LogOutputStream(this, Project.MSG_INFO), new TeeOutputStream( - new LogOutputStream(this, - Project.MSG_WARN), - bos) + new LogOutputStream(this, + Project.MSG_WARN), + bos) ); Execute exe = new Execute(psh, null); exe.setAntRun(getProject()); @@ -406,4 +411,20 @@ public class ANTLR extends Task { } } } + + /** + * Whether the antlr version is 2.7.2 (or higher). + * + * @since Ant 1.6 + */ + protected boolean is272() { + try { + AntClassLoader l = new AntClassLoader(getProject(), + commandline.getClasspath()); + l.loadClass("antlr.Version"); + return true; + } catch (ClassNotFoundException e) { + return false; + } // end of try-catch + } }