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") >> ...