を解析するスピリットを使用しようとすると、スタックオーバーフローを取得し続ける;私はブーストスピリットの権利を使用する方法を学習しようとしている)私は、私は、スタックオーバーフローを取得し始めたとき、頼むためにここに来る時間だった考え出しもの
今。私は基本的なものを考え出した。私はK & R便利な(これはCの文法を含んでいた)ので、私は言語のアクセプタを作ることができるかどうかを見極めることにしました。とにかく私は最終的にこれをプリプロセッサとして使用して、データ構造やものからいくつかの情報を収集したいので、これは私の元々の目標でした。
私は定数と文字列を解析できますが、これを解析しようとすると問題が発生します。
postfix_expression =
primary_expression
// omitting some other rules for simplicity's sake
| (postfix_expression >> chseq+p("++"))
| (postfix_expression >> chseq_p("--"));
primary_expression =
identifier
| constant
| string_literal;
// The parsers for constants and strings are
// pretty trivial so I'm not going to C+P them here.
i++
のようなものを渡すと失敗します。これは、i
が有効なprimary_expression
であるためです。したがって、++
または--
を確認することはできません。私は一番下に置いてみましたが、スタックオーバーフローが発生しました。私はここでいくつかの無限左回帰を得ているが、私はそれを解決する方法を知らない。