summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/Lexer.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-07 00:55:43 -0400
committerGravatar jeff2014-08-07 00:55:43 -0400
commit6aa7c6121a2ecbe78f14f8c3d7ddb55b8ddb10bd (patch)
tree0b97553e42e2e3a52a1aab30914d885d143d5bf0 /src/cuchaz/enigma/analysis/Lexer.java
parentadded un-obfuscated classes to the deobfuscated classes list (diff)
downloadenigma-fork-6aa7c6121a2ecbe78f14f8c3d7ddb55b8ddb10bd.tar.gz
enigma-fork-6aa7c6121a2ecbe78f14f8c3d7ddb55b8ddb10bd.tar.xz
enigma-fork-6aa7c6121a2ecbe78f14f8c3d7ddb55b8ddb10bd.zip
started working on recognition of non-class member identifiers in the source
got class extends,implements working and argument,field types added filtering to make sure highlighted class names are actually classes in the jar
Diffstat (limited to 'src/cuchaz/enigma/analysis/Lexer.java')
-rw-r--r--src/cuchaz/enigma/analysis/Lexer.java42
1 files changed, 40 insertions, 2 deletions
diff --git a/src/cuchaz/enigma/analysis/Lexer.java b/src/cuchaz/enigma/analysis/Lexer.java
index acb52bf..602e3a9 100644
--- a/src/cuchaz/enigma/analysis/Lexer.java
+++ b/src/cuchaz/enigma/analysis/Lexer.java
@@ -14,6 +14,7 @@ import java.util.Iterator;
14 14
15import jsyntaxpane.SyntaxDocument; 15import jsyntaxpane.SyntaxDocument;
16import jsyntaxpane.Token; 16import jsyntaxpane.Token;
17import jsyntaxpane.TokenType;
17import jsyntaxpane.lexers.JavaLexer; 18import jsyntaxpane.lexers.JavaLexer;
18 19
19public class Lexer implements Iterable<Token> 20public class Lexer implements Iterable<Token>
@@ -21,10 +22,10 @@ public class Lexer implements Iterable<Token>
21 private SyntaxDocument m_doc; 22 private SyntaxDocument m_doc;
22 private Iterator<Token> m_iter; 23 private Iterator<Token> m_iter;
23 24
24 public Lexer( String source ) 25 public Lexer( CharSequence source )
25 { 26 {
26 m_doc = new SyntaxDocument( new JavaLexer() ); 27 m_doc = new SyntaxDocument( new JavaLexer() );
27 m_doc.append( source ); 28 m_doc.append( source.toString() );
28 m_iter = m_doc.getTokens( 0, m_doc.getLength() ); 29 m_iter = m_doc.getTokens( 0, m_doc.getLength() );
29 } 30 }
30 31
@@ -38,4 +39,41 @@ public class Lexer implements Iterable<Token>
38 { 39 {
39 return token.getString( m_doc ); 40 return token.getString( m_doc );
40 } 41 }
42
43 public Token getFirstIdentifier( )
44 {
45 for( Token token : this )
46 {
47 if( token.type == TokenType.IDENTIFIER )
48 {
49 return token;
50 }
51 }
52 return null;
53 }
54
55 public Token getFirstIdentifierMatching( CharSequence val )
56 {
57 for( Token token : this )
58 {
59 if( token.type == TokenType.IDENTIFIER && getText( token ).equals( val.toString() ) )
60 {
61 return token;
62 }
63 }
64 return null;
65 }
66
67 public Token getLastIdentifier( )
68 {
69 Token lastToken = null;
70 for( Token token : this )
71 {
72 if( token.type == TokenType.IDENTIFIER )
73 {
74 lastToken = token;
75 }
76 }
77 return lastToken;
78 }
41} 79}