da Lawlietz » 11/06/2019, 20:17
Anzitutto grazie mille per avermi risposto =D.
Il problema che sto cercando di risolvere è il seguente (lo descrivo molto brevemente perchè quello che ho chiesto qui è solo una piccola parte):
ho un sistema idraulico fatto da componenti che eseguono una specifica operazione sui flussi (tubi a T che lo dividono, tubi a T che lo dividono in 2/3 e 1/3, tubi normali che lo lasciano passare invariato, ecc) e quindi ho delle classi per i componenti ed una per il sistema idraulico (che è un grafo). La descrizione mi è data nella forma di operazioni tra sorgenti e componenti ove le parentesi sono usate per dare una qualche priorità (altrimenti ha priorità chi sta a sx). Esempio
sorgente1 tubo a T (sorgente2 tubonormale sorgente3) ecc
Sono naturalmente richieste varie cose che però esulano dalla mia domanda.
Vista la formulazione della descrizione del sistema, a me è venuto naturale pensare di scrivere un metodo che crea gli archi lavorando con "espressioni fuori dalle parentesi" e ricorrere qualora mi imbattessi in una in parentesi, che è ciò che farei se avessi qualcosa che ci somiglia vagamente come un'espressione algebrica elementare . Ad esempio
$a + b + ( c - ( c + d*a ))/e $
ove ho degli operatori (+,-,*,/)che fanno una qualche elaborazione dei dati e delle priorità. Quindi svolgo prima la somma fuori, poi la parentesi e ciò che ottengo lo sommo a quanto ottenuto in precedenza e via così.
In sintesi, farei come se dovessi esplorare un albero con operandi e operatori per foglie (se mi passate il paragone).
Per far tutto ciò avevo bisogno di splittare per come ho descritto nei precedenti messaggi. Se, però, trovate questo approccio errato, o "non un granchè" accetto volentieri dei suggerimenti.Grazie in anticipo.
p.s. il linguaggio è C++ e quella regex che funziona a meraviglia sul simulatore che mi hai linkato, non viene eseguita perchè ricorre :/