繰り返しの回数をトークンストリームから抽出するためのよく知られたパーサー記述言語(Backus-Naurなど)がありますか?ボーナスポイントについては、この構文をサポートするC++ライブラリがありますか?繰り返しの「メタトークン」を持つパーサーの説明
例:
RULE = # EXPRESSION
として:
は「メタトークン」#を呼び出すことができますし、私は次の形式の生成規則を扱っていました記述言語を探しています
RULE = '1' EXPRESSION
| '2' EXPRESSION EXPRESSION
| '3' EXPRESSION EXPRESSION EXPRESSION
| '4' EXPRESSION EXPRESSION EXPRESSION EXPRESSION
| ...
カウントは実際の文字リテラルであることに注意してください。これは、我々は、フォームのルールを持つことができるaugmented Backus-Naur form、とは対照的である:
に相当しますRULE = 2*3EXPRESSION
:私はそれはかなりだかわからない
:dgarantする
RULE = EXPRESSION EXPRESSION
| EXPRESSION EXPRESSION EXPRESSION
レスポンス私が望むもの
int i;
bool r = phrase_parse(first, last,
(
int_[ phoenix::ref(i) = _1] >> repeat(i)[/*EXPRESSION*/]
)
space);
さらに重要なことに、このアイデアを説明できる形式化されたスキーマをいくつか期待していました。サイド・ノードでは、Spiritは使い慣れていますが、かなり素晴らしいです。ファンです。
私は上記のコメントを追加しました。 – tgoodhart
@tgoodhart私は自分の答えを更新しました。私はあなたが探しているものとまったく同じ言語標準を考えることはできません。 –