Można sparametryzować zasady wzmocnienia ducha

W mojej gramatyce Ducha Boosta chciałbym mieć regułę, która to robi:

rule <...> noCaseLit = no_case [lit ("KEYWORD")];

ale dla niestandardowego słowa kluczowego, dzięki czemu mogę to zrobić:

... >> noCaseLit ("SomeSpecialKeyword") >> ... >> noCaseLit ("OtherSpecialKeyword1")

Czy jest to możliwe z zasadami Ducha Boost, a jeśli tak, to w jaki sposób?

P.S. Jako przykładu używam rzeczy niewrażliwej na wielkość liter. Ogólnie rzecz biorąc, jestem po parametryzacji reguł.

Edytuje: Poprzez link „sehe” w komentarzach udało mi się zbliżyć do tego, co chciałem, ale jeszcze nie jestem.

/* Defining the noCaseLit rule */
rule<Iterator, string(string)> noCaseLit = no_case[lit(_r1)];
/* Using the noCaseLit rule */
rule<...> someRule = ... >> noCaseLit(phx::val("SomeSpecialKeyword")) >> ...

Jeszcze nie wymyśliłem sposobu, aby automatycznie przekonwertować ciąg literalny na wartość Phoenix, dzięki czemu mogę użyć reguły takiej jak ta:

rule<...> someRule = ... >> noCaseLit("SomeSpecialKeyword") >> ...

questionAnswers(1)

yourAnswerToTheQuestion