1
ポストスキップを行うための最も慣用的な方法は何ですか?より具体的には、トップルールにマッチした後、入力に「スキップ不可能な」(ガベージ)文字がないことを確認します。ポストスキップによる慣用的な完全一致
auto const blankOrComment
= ascii::space
| x3::lexeme ['#' >> *(x3::char_ - x3::eol) >> -x3::eol ]
;
auto const program = rule<AstProgram>("program")
= *(as<AstDefinition> (definition > ";"))
;
auto const programEntry = x3::skip(blankOrComment) [program];
ひとつのアイデア、私は非常に醜い考慮すると、メインのイテレータの位置がエンドイテレータでない場合は、その後blankOrComment
のための独立した解析コールを行うことでした。私が持っている現在の良いアイデアは、ルートルールを変更することです:
auto const programEntry = x3::skip(blankOrComment) [program >> x3::omit[*blankOrComment]];
もっと慣用的な方法がありますか?