編集:seheの例を拡張して、別のルールで使用したい場合の問題を示しました:http: //liveworkspace.org/code/22lxL7 $ 17
Boost Spiritパーサーのパフォーマンスを改善しようとしていますが、C ++ 11以降、次のような自動ルールを使用できるようになりました。
auto comment = "/*" >> *(char_ - "*/") >> "*/";
(またはBOOST_AUTOまたはBOOST_SPIRIT_AUTOを使用)。
私はそのようなルール宣言者を持っています:
qi::rule<lexer::Iterator, ast::SimpleType()> simple_type;
そしてそのように定義されます:
simple_type %=
const_
>> lexer.identifier;
autoで宣言するとコンパイルされますが、他のルールではASTとして使用できません。
自動ルールでASTを作成するルールを定義することは可能ですか?BoostSpiritでのAST作成を高速化する他の方法にも興味があります。