Ich habe eine Arbeits Grammatik ähnlich den folgenden:Was ist der richtige Weg, mit tiefer Rekursion in der boost :: spirit :: qi Grammatik umzugehen?
stock_price = symbol_ >> date_ >> price_;
stock_prices_ = stock_price_ >> stock_prices_ | eps;
grammar_ = lit("PRICES") >> stock_prices_ >> lit("END");
Das Problem ist, wenn die Liste der Lager prices_ zu hoch wird (sagen etwa 1000 Preise), die die Parsen seg-Fehler mit einem EXC_BAD_ACCESS. Ich kann das tatsächlich lösen durch:
stock_prices_ = stock_price_ >> stock_price_ >> stock_price_ >> stock_price >> stock_prices_ |
stock_price_ >> stock_prices_ |
eps;
aber ich sehe das nicht als eine elegante Lösung. Gibt es eine bessere Lösung?
Vielleicht exponentiell auf das Problem gehen. 20 exponentielle Muster würden die Rekursionstiefe auf ungefähr 40 + 1 pro Million beschränken. – Yakk