Impulsionar Regras Espirituais pode ser parametrizado
Na minha gramática Boost Spirit, gostaria de ter uma regra que faça isso:
regra <...> noCaseLit = no_case [lit ("KEYWORD")];
mas para uma palavra-chave personalizada para que eu possa fazer isso:
... >> noCaseLit ("SomeSpecialKeyword") >> ... >> noCaseLit ("OtherSpecialKeyword1")
Isso é possível com as regras do Boost Spirit e, em caso afirmativo, como?
P.S. Eu uso o caso insensível como um exemplo, o que eu estou procurando é a parametrização de regras em geral.
Edições: Através do link fornecido por 'sehe' nos comentários, consegui chegar perto do que queria, mas ainda não cheguei lá.
/* Defining the noCaseLit rule */
rule<Iterator, string(string)> noCaseLit = no_case[lit(_r1)];
/* Using the noCaseLit rule */
rule<...> someRule = ... >> noCaseLit(phx::val("SomeSpecialKeyword")) >> ...
Eu ainda não descobri uma maneira de converter automaticamente a string literal para o valor de Phoenix para que eu possa usar a regra assim:
rule<...> someRule = ... >> noCaseLit("SomeSpecialKeyword") >> ...