Expresión de validación de patio de maniobras

Usamos el algoritmo Shunting-Yard para evaluar expresiones. Podemos validar la expresión simplemente aplicando el algoritmo. Falla si faltan operandos, paréntesis incorrectos y otras cosas. Sin embargo, el algoritmo Shunting-Yard tiene una sintaxis compatible más grande que solo el infijo legible por humanos. Por ejemplo,

1 + 2
+ 1 2
1 2 +

son formas aceptables de proporcionar '1 + 2' como entrada al algoritmo Shunting-Yard. '+ 1 2' y '1 2 +' no son infijos válidos, pero el algoritmo estándar Shunting-Yard puede manejarlos. El algoritmo realmente no se preocupa por el orden, aplica operadores por orden de precedencia tomando los operandos 'más cercanos'.

Nos gustaría restringir nuestra entrada a infijo legible humano válido. Estoy buscando una manera de modificar el algoritmo Shunting-Yard para que falle con infijo no válido o proporcionar una validación infix antes de usar Shunting-Yard.

¿Alguien sabe de alguna técnica publicada para hacer esto? Debemos admitir operadores básicos, operadores personalizados, corchetes y funciones (con múltiples argumentos). No he visto nada que funcione más que los operadores básicos en línea.

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta