Dans ma grammaire Esprit Boost Je voudrais avoir une règle qui fait cela:Spirit peut stimuler les règles paramétrables
règle < ...> noCaseLit = NO_CASE [allumé ("KEYWORD")];
mais pour un mot-clé personnalisé afin que je puisse le faire:
... >> noCaseLit ("SomeSpecialKeyword") >> ... >> noCaseLit ("OtherSpecialKeyword1")
Est-ce possible avec les règles Boost Spirit et si oui, comment?
P.S. J'utilise la chose insensible à la casse comme un exemple, ce que je suis après est le paramétrage de la règle en général.
: Edits A travers le lien fourni par « sehe » dans les commentaires que j'ai pu se rapprocher de ce que je voulais, mais je ne suis pas encore tout à fait.
/* Defining the noCaseLit rule */
rule<Iterator, string(string)> noCaseLit = no_case[lit(_r1)];
/* Using the noCaseLit rule */
rule<...> someRule = ... >> noCaseLit(phx::val("SomeSpecialKeyword")) >> ...
Je ne l'ai pas encore trouvé un moyen de convertir automatiquement la chaîne littérale à la valeur Phoenix afin que je puisse utiliser la règle comme ceci:
rule<...> someRule = ... >> noCaseLit("SomeSpecialKeyword") >> ...
double possible de [des parties communes Affacturage des règles de Spirit] (http://stackoverflow.com/questions/13388227/factoring-out-common-parts-of-spirit-rules) – sehe
Thx sehe pour fournir ce lien, il m'a aidé à apprendre sur l'utilisation de l'attribut hérité. – Halt