AAAAAAA
Prof. Me. Luciano Barco
Organização de um analisador Léxico em JAVA
Dada a Gramática:
G = ({S, L, E}, {if, then, else, begin, end, print, end, num, =}, P, S)
P:
S if E then S else S | begin S L | print E
L end | S L
E num = num
Determinando um algoritmo que faz a validação de uma informação String, com base na gramática acima e determina os Tokens das sentenças encontradas na informação de entrada, sendo estes determinados pela seguinte numeração:
IF=0, THEN=1, ELSE=2, BEGIN=3, END=4, PRINT=5, SEMI=6, NUM=7, EQ=8;
Entenda pelo símbolo EQ como “=”.
package compiladores_lexico; import javax.swing.JOptionPane;
/**
*
* @author Luciano Barco
*/
public class Compiladores_Lexico { public static final int IF=0, THEN=1, ELSE=2, BEGIN=3, END=4, PRINT=5, SEMI=6, NUM=7, EQ=8; public static int token; public static int posicaoInicial; public static String informacao;
//Método que determina qual é o token da setença private static int getToken(String sentenca)
{
//Definimos os terminais válidos
String tokens[] = {"if","then","else","begin","end","print","semi","num","="}; int valor=-1;
String info; for (int x=0; x < 9; x++)
{
info = tokens[x]; if(sentenca.equals(info)) //validação da sentença e token
{
//verificar a validação - criar um if valor = x; break; }
}
System.out.println(valor); return (valor);
}
private static boolean validaToken (int tok)
{
//Verifica se existe token para sentença if (tok>0)
return (false); else return (true);
}
private static void erro()
{
JOptionPane.showMessageDialog(null,"Erro de Organização de Tokens \n Token Não Existe");
System.exit(1);
} private static void verificarToken(int posicao)
{
String sentenca; boolean validacao; int tamanho = informacao.length(); int tok;
// System.out.print(posicao);
//Define os tokens de cada sentença encontrada na String for (