quinta-feira, 21 de setembro de 2017

Construindo um PARSER em javascript - III

Já vimos, nesta série sobre a construção de um Parser de expressões, a colocação dos valores em variáveis e o esquema da resolução da expressão.

Neste post, vamos mostrar o fluxograma da resolução da equação dentro de um nível, ou seja, considerando o conteúdo englobado por um nível de parênteses.

Fluxograma do equate

O princípio do equate é achar, de acordo com as regras do nosso segundo artigo da série, as operações em ordem decrescente de prioridades, e ir resolvendo asm mesmas de duas em duas, sem nenhuma árvore binária, sem ramos e nem folhas.

Como a expressão não apresenta o operador de exponenciação, iniciamos pelo operador de multiplicação.



Por este Fluxograma de processos e dados fica claro o uso dos próprios recursos de memória onde ficam alocados os operandos e operadores ao invés de se utilizar a técnica de colocação dos mesmos em árvores binárias, para o tradicional trajeto de cima para baixo e da esquerda para a direita.

Os próprios dados mínimos para a resolução da expressão servem, do jeito que estão, ao nosso objetivo. O processo é bem simples. Acha-se o operador da prioridade da hora, resolve-se o par e monta-se a expressão resultante, repetindo o processo até o fim das operações de multiplicação. Depois utiliza-se a mesma lógica para o operador de divisão, seguido da mesma lógica para o operador de soma.

O mesmo diagrama pode ser repetido para os operadores de divisão e soma.

No próximo post mostraremos como lidar com os níveis de parênteses.

Conclusão

A lógica utilizada, favorecida pelo parser que dividiu convenientemente os operandos e operadores, normalizando os sinais negativos, é a da resolução por pares, da maior prioridade até a menor prioridade.


Nenhum comentário:

Postar um comentário