私のBoostSpirit文法では、これを行うルールが必要です。
rule <...> noCaseLit = no_case [lit( "KEYWORD")];
しかし、私がこれを行うことができるように、カスタムキーワードの場合:
... >> noCaseLit( "SomeSpecialKeyword")>> ... >> noCaseLit( "OtherSpecialKeyword1")
これはブーストスピリットルールで可能ですか?もしそうならどのように?
PS例として大文字と小文字を区別しないものを使用します。私が求めているのは、一般的なルールのパラメーター化です。
編集: コメントの「sehe」によって提供されたリンクを通して、私は私が望んでいたものに近づくことができましたが、私はまだそこにいません。
/* Defining the noCaseLit rule */
rule<Iterator, string(string)> noCaseLit = no_case[lit(_r1)];
/* Using the noCaseLit rule */
rule<...> someRule = ... >> noCaseLit(phx::val("SomeSpecialKeyword")) >> ...
次のようなルールを使用できるように、リテラル文字列をフェニックス値に自動的に変換する方法をまだ理解していません。
rule<...> someRule = ... >> noCaseLit("SomeSpecialKeyword") >> ...