トークンストリームから繰り返しの数が抽出される繰り返しを可能にする、よく知られたパーサー記述言語(Backus-Naurなど)はありますか?ボーナスポイントとして、この構文をサポートするC ++ライブラリはありますか?
例:
「メタトークン」#と呼びましょう。次に、次の形式の生成ルールを処理する記述言語を探しています。
RULE = # EXPRESSION
として:
RULE = '1' EXPRESSION
| '2' EXPRESSION EXPRESSION
| '3' EXPRESSION EXPRESSION EXPRESSION
| '4' EXPRESSION EXPRESSION EXPRESSION EXPRESSION
| ...
カウントは実際の文字リテラルであることに注意してください。これは、次の形式のルールを持つことができる拡張バッカス・ナウア記法とは対照的です。
RULE = 2*3EXPRESSION
これは次と同等です:
RULE = EXPRESSION EXPRESSION
| EXPRESSION EXPRESSION EXPRESSION
dgarantへの応答:
それが私が望んでいることかどうかはわかりません。私は次の線に沿って何かを考えています:
int i;
bool r = phrase_parse(first, last,
(
int_[ phoenix::ref(i) = _1] >> repeat(i)[/*EXPRESSION*/]
)
space );
さらに重要なのは、このアイデアを説明できる形式化されたスキーマを望んでいたことです。サイドノードでは、Spiritはある程度慣れることができますが、かなり素晴らしいです。ファンです。