Index: branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java
===================================================================
--- branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java	(revision 16)
+++ branches/t3e-tools/t3q/src/org/etsi/t3q/T3Q.java	(revision 25)
@@ -7,4 +7,6 @@
 import java.util.HashMap;
 import java.util.List;
+
+import javax.sound.midi.SysexMessage;
 
 import org.apache.commons.cli.CommandLine;
@@ -169,7 +171,7 @@
 						+ analyzer.getFilename(); 
 					//TODO: adapt to T3D as well
-					String tree = "";
-					tree = LocationAST.dumpTree((LocationAST)analyzer.getParser().getAST(),1,tree);
 					if (getLogLevel().equals(LogLevel.DEBUG)) {
+						String tree = "";
+						tree = LocationAST.dumpTree((LocationAST)analyzer.getParser().getAST(),1,tree);
 						exceptionMessage+="\n" +
 								"Parse-tree trace:\n" +
@@ -183,14 +185,5 @@
 						} catch (TTCN3ParserException e) {
 							System.err.println(e.getLocalizedMessage());
-							for (int i1 = 0; i1 < analyzer.getExceptions()
-									.size(); i1++) {
-								System.err.println("Line "
-										+ analyzer.getExceptions().get(i1)
-												.getLine()
-										+ ": "
-										+ analyzer.getExceptions().get(i1)
-												.getMessage());
-							}
-							// e.printStackTrace();
+							dumpParserExceptions(analyzer);
 						}
 					}
@@ -260,13 +253,24 @@
 			// parsing error
 			System.err.println(e.getLocalizedMessage());
-			for (int i = 0; i < analyzer.getExceptions().size(); i++) {
-				System.err.println("Line "
-						+ analyzer.getExceptions().get(i).getLine() + ": "
-						+ analyzer.getExceptions().get(i).getMessage());
-			}
+			dumpParserExceptions(analyzer);
 			// TODO: Isolate different steps and implement a recovery mechanism:
 
 		}
 
+	}
+
+	private void dumpParserExceptions(TTCN3Analyzer analyzer) {
+		for (RecognitionException re : analyzer.getExceptions()) {
+			System.err.println("  Cause:\tLine "
+					+ re.getLine() 
+					+ ": "
+					+ re.getMessage());
+			
+			String className = re.getStackTrace()[0].getClassName();
+			System.err.println("    Parser:\t"
+					+ className.substring(className.lastIndexOf(".")+1));
+			System.err.println("    Rule: \t"
+					+ re.getStackTrace()[0].getMethodName());
+		}
 	}
 
@@ -342,12 +346,22 @@
 //					System.out.println("OutputPath: \t\t"+outputPath);
 //					System.out.println("****************************");
-//					System.out.println(formatted);
+					System.out.println(formatted);
 //					System.out.println(outputPath);
-					MiscTools.writeFile(outputPath, formatted);
+//					MiscTools.writeFile(outputPath, formatted);
 					System.out.println("File \""+outputPath+"\" written successfully!");
 
 				} catch (RecognitionException e1) {
-					System.err.println("Recognition exception:");
-					System.err.println(e1.getLocalizedMessage());
+					System.err.println("TTCN-3 Recognition exception: "+e1.getLocalizedMessage());
+					System.err.println("  Cause:\tLine "
+							+ e1.getLine() 
+							+ ": "
+							+ e1.getMessage());
+					
+					String className = e1.getStackTrace()[0].getClassName();
+					System.err.println("    Parser:\t"
+							+ className.substring(className.lastIndexOf(".")+1));
+					System.err.println("    Rule/Method: \t"
+							+ e1.getStackTrace()[0].getMethodName());
+					
 				} catch (TokenStreamException e) {
 					System.err.println("Token stream exception:");
