Bom, estou desenvolvendo um Analisador Léxico em JAVA, mas estou tendo dificuldades na implementação. A minha duvida é qto a separação dos tokens (lexemas)… Terei que separar caracter por caracter e ir armazenando os caracteres para fazer após o termino da palavra a verificação se é indetificador, delimitador ou palavra reservada.
Como que eu poderia fazer?
Se alguém puder me ajudar ficarei agradecida :lol:
Uma dica, estudar expressões regulares para os testes:
“Um amigo meu fez um na cadeira de compiladores e ele usou nos testes expressões regulares, economizou muitas linhas de código.”
Olha, acho que você vai ter que percorrer todos os caracteres e ficar verificando junto ao seu autômato.
Ex.: vai percorrendo os caracteres até tu conseguir formar uma das possibilidades de criação do seu autômato. Quando você encontrar, cria um token e depois recomeça o processo até encontrar outro token.
Deu pra entender?
[quote=paulo.marcelo]Uma dica, estudar expressões regulares para os testes:
“Um amigo meu fez um na cadeira de compiladores e ele usou nos testes expressões regulares, economizou muitas linhas de código.”[/quote]
Isso varia muito de faculdade pra faculdade. Na minha, por exemplo, o professor da cadeira de compiladores não deixa usar expressões regulares. Ele quer que as coisas sejam feitas “na unha” mermo…
vc pode fazer da seguinte maneira… primeiro varer o codigo em busca de caracteres invalidos depois ir separando os caracteres em tokiens como nas linguagens as variaveis e os comandos são separados por espaços ou virgula ou sinais aritimeticos ou logicos vc pode usar estes delimitadores… vc pode usar um objeto tokien e a cada tokien que encontrar gerar um objeto tokien e guardar na lista de tokiens junto coloque informações como linha e coluna pois elas serao uteis mais tarde no analisador sintatico e semantico coloque tbm os operadores dentro destes objetos e ao final veja qual o tipo deles se são identificadores, comandos, operadores aritimeticos, logicos basicamente um tokien tera alem da informação do proprio tokien tbm tera sa linha, coluna e seu tipo… coloque todos em uma lista apos classificados seus tipos e depois no semantico e sintatico trabalhe com esta lista…
Quando fiz na faculdade usamos o C++ para desenvolver, lembro que tinhamos uma base de dados, chamada base de tokens, assim ficamos pegando caracter por caracter e verificando seu codigo nesta base…acho que vc também pode fazer isso em java usando o comando charArt, vc informar o indice e ele pega o caracter ai vc ira conseguir ir na base ver se existe…faça um laço para percorrer a String e pegar o caracter…