diff options
author | JesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a> | 2010-06-13 20:34:49 +0000 |
---|---|---|
committer | JesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a> | 2010-06-13 20:34:49 +0000 |
commit | 73d1b5d3cbc845e7123f41acd80c8cca4c1a369d (patch) | |
tree | 376e32cfe5145507dec4d306ee8f759a48ec6016 /smali/src | |
parent | a377d504954fca0e22d58baac9b24fe092281223 (diff) | |
download | smali-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.flex | 15 | ||||
-rw-r--r-- | smali/src/test/java/LexerTest.java | 2 |
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(); |