diff --git a/smali/src/main/antlr3/smaliTreeWalker.g b/smali/src/main/antlr3/smaliTreeWalker.g index 326d5bd1..66110645 100644 --- a/smali/src/main/antlr3/smaliTreeWalker.g +++ b/smali/src/main/antlr3/smaliTreeWalker.g @@ -52,6 +52,11 @@ import org.jf.dexlib.Code.Format.*; @members { public DexFile dexFile; public TypeIdItem classType; + private boolean verboseErrors = false; + + public void setVerboseErrors(boolean verboseErrors) { + this.verboseErrors = verboseErrors; + } private byte parseRegister_nibble(String register, int totalMethodRegisters, int methodParameterRegisters) throws SemanticException { @@ -141,11 +146,13 @@ smali_file classDataItem, $fields.staticFieldInitialValues); }; catch [Exception ex] { + if (verboseErrors) { + ex.printStackTrace(System.err); + } reportError(new SemanticException(input, ex)); } - header returns[TypeIdItem classType, int accessFlags, TypeIdItem superType, TypeListItem implementsList, StringIdItem sourceSpec] : class_spec super_spec? implements_list source_spec { diff --git a/smali/src/main/java/org/jf/smali/main.java b/smali/src/main/java/org/jf/smali/main.java index 773c08a4..ecd9cf99 100644 --- a/smali/src/main/java/org/jf/smali/main.java +++ b/smali/src/main/java/org/jf/smali/main.java @@ -318,7 +318,7 @@ public class main { treeStream.setTokenStream(tokens); smaliTreeWalker dexGen = new smaliTreeWalker(treeStream); - + dexGen.setVerboseErrors(verboseErrors); dexGen.dexFile = dexFile; dexGen.smali_file();