Analisador Lexico? Interpretador? Do que Preciso?

2 respostas
C

Ola a Todos!! Sou novo no forum e estou com uma duvida. Estou desenvolvendo uma classe em java que implementa um STD (Sistema de Tablo Direto). Esse sistema tem o objetivo de dizer se dada expressao em Logica Proposicional classica é verdadeira ou falsa. O meu problema é criar um desmembrador de expressao.
Eu criei um mas achu que nao é nem de longe a melhor solucao. Ele faz o seguinte: pega uma expressao, por exemplo (PvQ)<->(P^R), e separa os 2 membros da equivalencia, o (PvQ) e o (P^R) e adiciona no Tablo. Para isso ele le posicao por posicao da string contando parenteses abertos, fechados, comparando o caractere encontrado com o de maior importancia na expressao (que no caso é a equivalencia <->). Essa porrada de comparacoes que ele faz, nao é uma boa em caso de expressoes imensas… Um professor meu disse que eu poderia usar analise lexica, mas tem um problema: estou na graduacao de Tecnologia em Sistemas… num tenho a minima ideia por onde comecar e nem sei se é isso que eu realmente preciso… Alguem tem ideia de como eu posso resolver esse problema? E se for realmente com analise lexica, fikei sabendo que existe uma ferramenta que chama Flex, ela funciona para Java tb?

Desde ja agradeco a galera ae!!!
Abracos

2 Respostas

bland

Canon,

Eu fiz um trabalho pra faculdade que era para escolher uma linguagem e desenvolver a análise léxica e sintática de qualquer linguagem. Escolhi HTML. Funcionou perfeitamente, e acho que é disso que você precisa.

A ferramenta que eu usei foi o JavaCC. Achei muito mais simples que o Flex. Inclusive em termos de documentação. No JavaCC você precisa apenas informar um analisador léxico e criar um arquivo (que não me lembro a extensão no momento) e mandar o JavaCC gerar todas as outras classes pra você.

Assim, o “compilador” (ou interpretador) já estará pronto para o uso.

Não vejo uma melhor solução do que essa não.

Se alguém ae tiver uma outra solução…

Canon, eu vou procurar pelos fontes, assim poderei te explicar melhor.

Faz assim, anota meu e-mail: [email removido]

Abraço.

O

Canon,

A análise léxica consiste na análise léxicográfica de uma entrada para uma linguagem definida. Ela reconhece os simbolos válidos de uma linguagem. Por exemplo, qualquer compilador qdo vai compilar um programa faz um parsing no codigo fonte e identifica o que é ou não válido como (identificadores, simbolos, etc) e transforma isso em Tokens que são analisados pela análise sintática.

Acho interessante vc estudar um pouco sobre isso, sobre como um compilador funciona… é muito interessante!

Pelo que eu entendi o seu problema é mais pra fazer um parsing de uma entrada e depois passar isso para uma tabela. Meu conselho é que vc utiliza expressões regulares para isso. Com a expressão regular, vc pode extrair padrões de um texto. E é uma ferramenta poderosíssima.

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/package-summary.html

Existem diversas APIs que implementam RegExp tem uma no projeto Jakarta que tbm é muito boa.

É isso,

boa sorte!

Criado 8 de junho de 2006
Ultima resposta 9 de jun. de 2006
Respostas 2
Participantes 3