aboutsummaryrefslogtreecommitdiff
path: root/smali/src
diff options
context:
space:
mode:
authorJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-06-13 20:34:49 +0000
committerJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-06-13 20:34:49 +0000
commit73d1b5d3cbc845e7123f41acd80c8cca4c1a369d (patch)
tree376e32cfe5145507dec4d306ee8f759a48ec6016 /smali/src
parenta377d504954fca0e22d58baac9b24fe092281223 (diff)
downloadsmali-73d1b5d3cbc845e7123f41acd80c8cca4c1a369d.tar.gz
Print out an error message for invalid tokens in the lexer, but add a way to suppress the errors
Suppress the lexer errors for unit tests git-svn-id: https://smali.googlecode.com/svn/trunk@758 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
Diffstat (limited to 'smali/src')
-rw-r--r--smali/src/main/jflex/smaliLexer.flex15
-rw-r--r--smali/src/test/java/LexerTest.java2
2 files changed, 15 insertions, 2 deletions
diff --git a/smali/src/main/jflex/smaliLexer.flex b/smali/src/main/jflex/smaliLexer.flex
index d5269c67..5f027d30 100644
--- a/smali/src/main/jflex/smaliLexer.flex
+++ b/smali/src/main/jflex/smaliLexer.flex
@@ -28,10 +28,17 @@ import static org.jf.smali.smaliParser.*;
private File sourceFile;
+ private boolean suppressErrors;
+
public Token nextToken() {
try {
Token token = yylex();
if (token instanceof InvalidToken) {
+ InvalidToken invalidToken = (InvalidToken)token;
+ if (!suppressErrors) {
+ System.err.println(getErrorHeader(invalidToken) + " Error for input '" +
+ invalidToken.getText() + "': " + invalidToken.getMessage());
+ }
lexerErrors++;
}
return token;
@@ -58,6 +65,10 @@ import static org.jf.smali.smaliParser.*;
return this.yycolumn;
}
+ public void setSuppressErrors(boolean suppressErrors) {
+ this.suppressErrors = suppressErrors;
+ }
+
public void setSourceFile(File sourceFile) {
this.sourceFile = sourceFile;
}
@@ -155,8 +166,8 @@ import static org.jf.smali.smaliParser.*;
return token;
}
- public String getErrorHeader(RecognitionException e) {
- return getSourceName()+"["+ e.line+","+e.charPositionInLine+"]";
+ public String getErrorHeader(InvalidToken token) {
+ return getSourceName()+"["+ token.getLine()+","+token.getCharPositionInLine()+"]";
}
%}
diff --git a/smali/src/test/java/LexerTest.java b/smali/src/test/java/LexerTest.java
index d3cf5ff8..ed28280a 100644
--- a/smali/src/test/java/LexerTest.java
+++ b/smali/src/test/java/LexerTest.java
@@ -154,6 +154,8 @@ public class LexerTest {
Assert.fail("Could not load " + smaliFile);
}
smaliFlexLexer lexer = new smaliFlexLexer(smaliStream);
+ lexer.setSourceFile(new File(test + ".smali"));
+ lexer.setSuppressErrors(true);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
List tokens = tokenStream.getTokens();