Analisador Lexico

Pessoal estou desenvolvendo um analisador lexico e estou com um problema na hora de separa os tokens.

Estou lendo um arquivo txt e separando os tokens pelo metodo split, só que, eu só consigo separar quando tiver espaços.
EX: if ( x > 2)
Tokens: “if”, “(”, “x”, “>”, “2”, “)”

Se essa expressao fosse toda unida, sem espaços eu não conseguiria separar os tokens.

Alguém conhece algum modo, ou tem um pronto para eu estudar?