ANTLR文法構文と他のBNF構文を変換するツールはありますか?特定のバックナス - ナウアフォーム(BNF、EBNF、ABNF、W3C-BNF、XBNF ...)がいくつかあります。 see this list。 ANTLR文法構文はdescribed by examplesのように見えます。 ANTLR文法ファイルには文脈自由構文の仕様以上のものが含まれていますが、少なくとも共通部分集合を変換できるはずです。ANTLRと他の形式のBNFを変換するツールはありますか?
8
A
答えて
2
は、ヤコブは書きました:
ANTLR文法構文は単なる例で説明しているようです。
ANTLR(V3)がこの文法で(テレンス・パー自身がそれを置くよう) "独自の言葉で" 書き込み:
http://www.antlr.org/grammar/ANTLR/ANTLRv3.g
ヤコブは書きました:
しかし、あなたは少なくともc ommonサブセット - 誰でもまだ自動的に完了していますか?
これはわかりません。存在していれば、私はこのツールが定期的に読んだANTLRメーリングリストで議論されることはありませんでした。
多くのBNF-variantでは、left-recursiveのルールが許されています.ANTLRのようなLL-パーサ生成器では対応できないルールです。もちろん、左の再帰的なルールはツールで再計算することができますが、それはややこしいかもしれません。手動で行うよりもはるかに「読みやすい」文法になるでしょう。
ANTLR文法をBNFのような形式に変換することは、最も単純な文法では簡単ですが、私は推測しやすいでしょう。さまざまな種類の述語がANTLR文法に入れられるとすぐに、変換がやりにくくなる可能性があります。
5
# Grammar Syntax
| | BNF | ISO EBNF | ABNF | ANTLR |
|:-----------------------------:|:-----------------------------:|:-----------------------------:|:-----------------------------:|:-----------------------------:|
| rule definition | `<name> ::= ...` | `name = ... ;` | `name = ...` | `name : ... ;` |
| terminal items | `...` | `'...'` or `"..."` | integer or `"..."` | `'...'` |
| non-terminal items | `<...>` | `...` | `...` or `<...>` | `...` |
| concatenation | (space) | `,` | (space) | (space) |
| choice | `|` | `|` | `/` | `|` |
| optional | requires choice syntax[^1] | `[...]` | `*1...` or `[...]` | `...?` |
| 0 or more repititions | requires choice syntax[^2] | `{...}` | `*...` | `...*` |
| 1 or more repititions | requires choice syntax[^3] | `{...}-` | `1*...` | `...+` |
| n repititions | | `n*...` | `n*n...` | |
| n to m repititions | | | `n*m...` | |
| grouping | | `(...)` | `(...)` | `(...)` |
| comment | | `(*...*)` | `;...` | `// ...` or `/* ... */` |
[^1]: `optionalb ::= a b c d | a c d`
[^2]: `list ::= | listitem list`
[^3]: `list ::= listitem | listitem list`
関連する問題
- 1. JSONP形式をJSON形式に変換する方法はありますか?
- 2. ファイル形式を他のファイル形式に変換または変換するのに役立つライブラリ
- 3. SQL Server 2005のデータベース図を他の形式に変換する方法はありますか?
- 4. tzdataを他の形式に変換しますか?
- 5. JavaScriptでは、日付形式の値をある形式から別の形式に変換する方法はありますか。
- 6. Jsonの日付形式をdatetime形式(mm/dd/yyyy)に変換する方法はありますか?
- 7. SVGファイルを他の画像形式に変換するには
- 8. 65000を超えるレジスタを持つファイルをDBF形式からCSV形式に変換するツールはありますか?
- 9. 証明書を「DER」形式からpkcs#12形式に変換するjava APIはありますか
- 10. レガシーVMLをSVGに変換するツールはありますか?
- 11. Zephyrをベロシティテンプレートに変換するツールはありますか?
- 12. EDI X12形式をCSVに変換するPythonパッケージはありますか?
- 13. 画像をテキスト形式に変換するiphone Classはありますか?
- 14. C#で日付を他の形式に変換する
- 15. webm(または他の)形式のチャンクをmp4に変換する
- 16. rds形式のデータをR形式のshp形式に変換するには?
- 17. XML形式を別の形式に変換する方法は?
- 18. PHPはテキスト形式の時間形式に変換します
- 19. 日付形式(YYYYMMDD)の形式を変更する必要があります
- 20. BNF文法の形式を理解する問題
- 21. ある形式のXMLから別の形式のXMLへの変換
- 22. vbaで一般的な形式からテキスト形式に変換する必要があります
- 23. BNF文法をJavaに変換する
- 24. EBNFをBNFに変換する
- 25. プログラミング言語を別の言語に変換するツールはありますか?
- 26. Androidのxmlレイアウトを.javaファイルに変換するツールはありますか?
- 27. c/C++のソースコードをhtmlに変換するツールはありますか?
- 28. Microsoft Graphを使用してMSWordドキュメントを他の形式に変換することはできますか?
- 29. MetaStock形式をCSV形式に変換するには?
- 30. 日付形式を別の形式に変換する方法
ありがとう、ANTLRで書かれたANTLR文法は、私が探していたものでした。 ANTLRを理解する限り、左回帰文法を書き留めることはできますが、手動でそれらをリファクタリングする必要があります。他のBNF形式とANTLRからのコンバータは、BNF構文バリエーションの点数やその他のマイナーな側面の違いを手動で取り入れる必要性を、少なくとも軽減するでしょう。 – Jakob
ESC: '\\'(... | 'u' XDIGIT XDIGIT XDIGIT XDIGIT)は、\ uFFFFを超えるコードポイントと一致することはできません。 – Jakob
@Jakob、正しく、サポートされている範囲は '\ u0000'..' \ uFFFF'です。 –