Um caso de uso
Uma aplicação pode permitir filtros como “preço menor que 100 e categoria igual a livros”. Parseie a entrada para uma árvore segura e avalie cada nó com contexto conhecido, em vez de executar texto arbitrário.
Exemplo conceitual em C#
public interface IExpressao
{
bool Avaliar(ContextoFiltro contexto);
}
public sealed record Igual(string Campo, string Valor) : IExpressao
{
public bool Avaliar(ContextoFiltro contexto) =>
contexto.Obter(Campo) == Valor;
}
public sealed record E(IExpressao Esquerda, IExpressao Direita) : IExpressao
{
public bool Avaliar(ContextoFiltro contexto) =>
Esquerda.Avaliar(contexto) && Direita.Avaliar(contexto);
}Limites e alternativas
Valide tokens, campos permitidos, profundidade e tamanho de entrada. Uma gramática crescente torna a implementação e manutenção caras; use parser e ferramentas apropriadas quando a linguagem exigir. Compare com Composite, que também estrutura árvores, e veja o catálogo GoF.