Re: Dúvida na segunda tarefa: o "menos" unário
- Subject: Re: Dúvida na segunda tarefa: o "menos" unário
- From: Leonidas O Brandao <leo@ime.usp.br>
- Date: Tue, 15 Apr 2003 14:40:25 -0300 (EST)
Olá para todos,
Aproveito a pergunta do Tiago para responder a todos:
On Tue, 15 Apr 2003, Tiago Motta Jorge wrote:
> Caro Professor,
>
> Gostaria de saber se podemos exigir do usuário que o sinal "menos"
> unário esteja sempre entre parêntesis, como em: (-1)-(-1), ao invés
> de: -1--1. Isto ajudaria muito.
>
> Atenciosamente,
> Tiago Motta Jorge.
Em alguma aula eu comentei um "truque" para tratar o menos unário em
expressões pós-fixa, sem fornecer muitos detalhes, que vão a seguir. Esta
solução geral não introduz muita dificuldade, por isso eu sugiro que a
utilizem.
Entretanto se não tiverem tempo para fazer a solução geral, usem a
restrição do parênteses, como sugere o Tiago, e indiquem claramente que é
assim q/ o "menos unário" deve ser "admitido".
Minha sugestão de implementação é:
1. Durante a transformação para pós-fixa:
Manter uma variável indicando o "estado", isso serviria para analisar
se a expressão foi inserida corretamente e se não for o caso , indicar
ao usurário o primeiro erro.
No caso do unário resolve assim: "token atual" é <->
se "token anterior" é <operador> ou <(>,
então se trata de "unário", codifique com código especial '@',p.e.,
2 + - 3 -> 2 3 @ +
2. Durante a avaliação:
Como o "menos unário" foi codificado com o caractere '@', ao lê-lo o
avaliador desempilha apenas o topo da pilha de operandos.
Abraços,
Leônidas
--------------------------------------------------------------------------
Leônidas de Oliveira Brandão - Computer Science Dep. of IME-USP (Brazil)
leo@ime.usp.br - http://www.ime.usp.br/~leo - +55 (011) 3091 [6298 | 6135]
Interessado em Matemática? Visite o "iMatica": http://www.matematica.br