Analizador Lexico, ajuda!

Oi!

Estamos começando a criar uma compilador na faculdade e primeiramente precisamos de um analizador lexico, eu consegui separar os tokens do texto-fonte e identificar as palavras reservadas, mas não estou conseguindo identificar os outros elementos( inteiros, caracteres, flutuante e lógico ).

De que forma devo fazer? Separar cada token em um array ou existe algum método pra isso?

Agradeço qualquer ajuda. vlw!

[quote=“Rabujo”]Oi!

Estamos começando a criar uma compilador na faculdade e primeiramente precisamos de um analizador lexico, eu consegui separar os tokens do texto-fonte e identificar as palavras reservadas, mas não estou conseguindo identificar os outros elementos( inteiros, caracteres, flutuante e lógico ).

De que forma devo fazer? Separar cada token em um array ou existe algum método pra isso?

Agradeço qualquer ajuda. vlw![/quote]

como vc naum consegue identificar? vc ja tem uma funcao que retorna um token e tal? precisa agora identificar o que eh aquele token? pelo que eu saiba, se vier um ‘+’, ele sera um operador, se vier um int (em c por exemplo, sera uma palavra reservada) e assim vai… eh isso que vc naum consegue fazer?

sobre separar cada token em um array, vc quer dizer oq? guardar cada token em um array?? pelo que eu lembre, vc naum precisa guardar os tokens, porque a analise lexica, sintatica, semantica e geracao de codigo sao feitas ao mesmo tempo (paralelas), entao vc naum precisa saber todos tokens que existem, apenas saber pegar um (ter um getToken que retorna um token) por exemplo:

int variavel = 0;

String getToken() - retorna int
String getToken() - retorna variavel
String getToken() - retorna =
String getToken() - retorna 0
String getToken() - retorna ;

bem, seila, naum devo ter te ajudado muito, mas eh que naum entendi muito o que vc quer hehehe

valeu!

Bom, dê uma olhada na api sobre expressões regulares, pra fazer um analisador lexico deve ajudar:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

flw

A aula dessa semana ajudou a entender a situação.

O professor indicou criar classes responsaveis em identificar cada token do texto-fonte:

  • Palavra Reservada;
  • Simbolos;
  • Operadores;

Em uma linha, cada token e passada a uma classe que a analiza, retornando true ou false e ela pertence ou ñ, caso ñ seja ele é mandado a outra, ex:

“int A = 14;”
1º token int - verifica se é palavra reservada, nesse caso retorna true;
2º token A - verifica se é palavra reservada retorna false e vai tentar identifica-lo como variável e assim sucessivamente ate terminar a linha.

Quem teve duvidas como a minha espero ter minimizado um pouco.

Vlw!