Fórum Análise sintática #224629

06/04/2004

0

Pessoal,

Alguém sabe como fazer análise sintática?
Eu preciso analisar uma fórmula por exemplo (A + B) * C para que não cadastre uma fórmula como + A B (C*) por exemplo.
Obrigada,

Fernanda


Feberaldo

Feberaldo

Responder

Posts

06/04/2004

Rodolfo

... Pelo que entendi

No keypress do edit onde será colocada a fórmula você terá que mapear os caraceres digitados em ASCII e monitorá-los para que a sua sintaxe seja respeitada. Utilize booleanos e loops na rotina.
Que ajuda incrível !!!!!...........Té parece.....

Espero que você consiga, boa sorte !


Responder

Gostei + 0

06/04/2004

Feberaldo

Então... isso que pretendo fazer. Mas esses loops que vc disse é que estou querendo arrumar um jeito prático de fazer. Não quero que fique uma lógica muito grande.


Responder

Gostei + 0

06/04/2004

Ulissesn

Tchê...

Não se preocupe existe uma forma mais fácil de fazer isso mas tu tens que conhecer um pouco mais de analise Léxica ( ´Tokens´) e também de Linguagens Formais. Estou implementado um compilador em delphi só que estou na prte de identificação de expressões que depois virá a sintática, que o que tu queres, mas primeiro de tudo tem que fazer a léxica. Se quiseres posso mandar um email para você, basta me mandar o seu e-mail ....

Até +++
Ulisses


Responder

Gostei + 0

07/04/2004

Paulo_amorim

Pessoal, Alguém sabe como fazer análise sintática? Eu preciso analisar uma fórmula por exemplo (A + B) * C para que não cadastre uma fórmula como + A B (C*) por exemplo. Obrigada, Fernanda


Olá

O que quer fazer realmente pode se tornar complicado para expressões grandes...mas se forem apenas as 4 operaçoes pode-se fazer algo mais ou menos assim:

-Verifique se o primeiro caractere eh um NUMERO...
-Procure pelos sinais (+ , - , * , / ) e, se achá-los, verifique se os campos adjacentes contem numeros (pois nao se pode ter A+*B)...
-se encontrar parenteses, procure pelo final dele...
e etc...va fazendo verificaçoes sucessivas, como sugeriu nosos amigo Rodolfo sugeriu...

mas por que nao quer uma logica muito grande? Ela deve ser adequada ao que se pretende fazer

Até+


Responder

Gostei + 0

07/04/2004

Balceiro

Querida FERNANDINHA...

Essa sua dúvida é CRUEL hein??? bom, mas achei uma solução um pouco interessante... vc quase não precisará usar linha de código.

vamos lá?

É o seguinte...

nessa fórmula: (A + B) * C - provavelmente essas letras serão substi´tuídas por número certo? se for, no evento onExit do EDIT que vc digitou a formulá, mande a mesma ser calculada e passada para uma variável... isso dentro de um try... se der erro.. é porque a formula est´a errada... se não der... está certa... ai vc não deixa o usuário sair do edit enquanto a formulá digitada estiver incorreta.


Se quiser mande-me um e-mail ou me encontre no msn que te passo um exemplo.


Um abraço.



Balceiro


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar