SYA é um Shunting Yard Algorithm implementado em Rust, com um Lexer/Tokenizador incluído.
Shunting Yard Algorithm
O algoritmo pode ser usado para avaliar e calcular expressões matemáticas e é extremamente útil para desenvolver interpretadores e compiladores simples.
Basicamente, o algoritmo primeiro converte a expressão matemática para Notação Polonesa Reversa (RPN):
( A + B * C → ABC * +)
O que é muito estranho de ler e leva algum tempo para se acostumar, mas será útil para resolver corretamente as expressões na ordem de precedência certa. Após isso, o algoritmo percorre a RPN empurrando números para a pilha. Quando um operador é encontrado, ele é aplicado aos dois últimos números da pilha.
Você pode conferir o código fonte aqui.