Dirò che la risposta alla tua domanda è "no, non è possibile implementare l'algoritmo dello shunting utilizzando un'espressione regolare". Questo è per lo stesso motivo per cui non è possibile analizzare codice HTML arbitrario utilizzando espressioni regolari. Il che si riduce a questo:
Le espressioni regolari non hanno uno stack. Poiché l'algoritmo dello shunting yard si basa su uno stack (per eseguire il push e il pop degli operandi durante la conversione da infisso a RPN), le espressioni regolari non hanno il "potere" computazionale per eseguire questa attività.
Questo glossa molti dettagli, ma una "espressione regolare" è un modo per definire un linguaggio normale. Quando "usi" un'espressione regolare, chiedi al computer di dire: "Guarda un corpo di testo e dimmi se alcune di queste stringhe sono nella mia lingua, la lingua che ho definito usando un'espressione regolare". Indirizzerò a this most excellent answer which you and everyone reading this should upvote per ulteriori informazioni sulle lingue regolari.
Quindi ora è necessario un concetto matematico per aumentare "lingue regolari" al fine di creare linguaggi più potenti. Se dovessimo caratterizzare l'algoritmo dello shunting yard come una realizzazione di un modello di potenza computazionale, potreste dire che l'algoritmo sarebbe descritto come context-free grammar (ehi, sapete, quel link usa un albero di analisi delle espressioni come esempio.) A push-down automata. Qualcosa con una pila.
Se non hai familiarità con la teoria degli automi e le classi di complessità, allora quegli articoli di Wikipedia non sono probabilmente così utili senza spiegarli da zero.
Il punto è che si può essere in grado di utilizzare regex per aiutare a scrivere lo scalo di smistamento. Ma le regex non sono molto buone nel fare operazioni che hanno una profondità arbitraria, che questo problema ha. Quindi non passerei troppo tempo a percorrere il viale regex per questo problema.
Quando parli di analisi di un'espressione regolare, intendi la tokenizzazione della stringa che descrive il linguaggio normale? O intendi l'esecuzione dell'automa a stati finiti che rappresenta? O qualcos'altro? – Gabe
Intendo costruire un AST che rappresenta l'espressione regolare. La conversione di AST in un automa per far corrispondere la regex è un altro problema, lo so. –