From 6aa7c6121a2ecbe78f14f8c3d7ddb55b8ddb10bd Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 7 Aug 2014 00:55:43 -0400 Subject: 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 --- src/cuchaz/enigma/analysis/Lexer.java | 42 +++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'src/cuchaz/enigma/analysis/Lexer.java') 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; import jsyntaxpane.SyntaxDocument; import jsyntaxpane.Token; +import jsyntaxpane.TokenType; import jsyntaxpane.lexers.JavaLexer; public class Lexer implements Iterable @@ -21,10 +22,10 @@ public class Lexer implements Iterable private SyntaxDocument m_doc; private Iterator m_iter; - public Lexer( String source ) + public Lexer( CharSequence source ) { m_doc = new SyntaxDocument( new JavaLexer() ); - m_doc.append( source ); + m_doc.append( source.toString() ); m_iter = m_doc.getTokens( 0, m_doc.getLength() ); } @@ -38,4 +39,41 @@ public class Lexer implements Iterable { return token.getString( m_doc ); } + + public Token getFirstIdentifier( ) + { + for( Token token : this ) + { + if( token.type == TokenType.IDENTIFIER ) + { + return token; + } + } + return null; + } + + public Token getFirstIdentifierMatching( CharSequence val ) + { + for( Token token : this ) + { + if( token.type == TokenType.IDENTIFIER && getText( token ).equals( val.toString() ) ) + { + return token; + } + } + return null; + } + + public Token getLastIdentifier( ) + { + Token lastToken = null; + for( Token token : this ) + { + if( token.type == TokenType.IDENTIFIER ) + { + lastToken = token; + } + } + return lastToken; + } } -- cgit v1.2.3