似たようなタイトルの投稿がいくつかあることは知っています。ほとんどが死んだサイトへのリンクです - とにかく、もっと具体的な質問があります。
Bison 互換の文法ファイルを簡単に作成できるように、XPath 仕様の EBNFをストレート BNFに変換しようとしています。
これを行ってからしばらく経ちましたが、再帰がプロダクションのどちら側に属しているか覚えていません。私はそれが左だと思っていました - しかし、私の「単純な」翻訳は、Bison が生成したパーサーを実行すると、単純なジェーン XPath 式で構文エラーを引き起こします。
だから誰かが私をユーモアを交えて考えてくれるなら - だから私は幽霊を追いかけていない.
以下のExpr
ルールでは:
Expr::=
ExprSingle ("," ExprSingle)*
これは正しい翻訳ですか?(再帰を左に置く):
Expr::=
Expr "," ExprSingle
| ExprSingle