Hej, eine andere Frage:boost: Geist Wiederverwendung Regeln
ich eine Reihe von sehr ähnlichen Parser geschrieben haben, die eine Reihe von gemeinsamen Regeln verwenden. Kann ich diese Regeln <> Objekte an einem Ort speichern, an dem sie von mehreren Parsern bearbeitet werden können? Es sieht irgendwie wie folgt aus:
rule<> nmeaStart = ch_p('$');
rule<> nmeaAddress = alnum_p() >> alnum_p() >> !alnum_p() >> !alnum_p();
rule<> nmeaDelim = ch_p(',');
rule<> nmeaHead = nmeaStart >> nmeaAddress >> nmeaDelim;
...
/* other rules. Different for each parser*/
...
rule<> nmeaChkSumStart = ch_p('*');
rule<> nmeaChkSum = int_parser<unsigned int,16,2,2>();
rule<> nmeaTail = nmeaChkSumStart >> nmeaChkSum >> eol_p;
Ich mag würde alle Regeln nmea ... in einen gemeinsamen Ort namens setzen, vorzugsweise in eine geschützte statische Variable einer Klasse. Ich nehme an, das Ding Grammatik in der Geist-Dokumentation ist der Schlüssel, aber ehrlich gesagt verstehe ich noch nicht viel darüber.
Vielen Dank! Prost!