Análise sintática
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
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
Curtidas 0
Respostas
Rodolfo
06/04/2004
... 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 !
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 !
GOSTEI 0
Feberaldo
06/04/2004
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.
GOSTEI 0
Ulissesn
06/04/2004
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
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
GOSTEI 0
Paulo_amorim
06/04/2004
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é+
GOSTEI 0
Balceiro
06/04/2004
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
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
GOSTEI 0