parsowanie wyrażenia matematycznego w c ++
Mam pytanie dotyczące parsowania drzew:
Mam ciąg znaków (zestawienie wyrażenia matematycznego), na przykład:(a+b)*c-(d-e)*f/g
. Muszę przeanalizować to wyrażenie w drzewie:
class Exp{};
class Term: public Exp{
int n_;
}
class Node: Public Exp{
Exp* loperator_;
Exp* roperator_;
char operation; // +, -, *, /
}
Jakiego algorytmu mogę użyć do zbudowania drzewa, które reprezentuje powyższy ciąg wyrazu?