Tenho um for que percorre todos os tokens do texto, e se achar a palavra “String”, verifica se a próxima palavra não é vazia, mas eu precisaria compara também se a próxima palavra não é uma palavra reservada.
Segue o código:
for(i = 0; i <= pos-1; i++)// percorre token por token até acabar o texto
{
if(token[i].equals("String"))// compara se o token é "String"
{
if(token[i+1] != null)// se o próximo caracter for diferente de vazio, aqui eu também precisaria comparar se o token[i+1] é diferente de todas as palavras reservadas
{
}
}
}
Use um Set para checar se uma palavra é reservada ou não.
Exemplo:
Set<String> reservadas = new HashSet<String>();
reservadas.add ("if");
reservadas.add ("while");
...
reservadas.add ("class");
...
String palavra = "while";
if (reservadas.contains (palavra))
System.out.println ("A palavra-chave " + palavra + " é reservada");
else
System.out.println ("A palavra " + palavra + " não é reservada");
E usando um outro vetor ja definido, não tem como?
variaveis[] = {"String","int","char"},
Nesse caso voce tem que implementar um contains para Arrays.
Dica: aprenda a usar o HashSet. Quando você está escrevendo programas e precisa criar uma tabela de símbolos (ou seja, guardar identificadores novos), o HashSet é excelente para você criar essa tal tabela.
Ele também é excelente para conter a sua lista de palavras reservadas.