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. tzdataを他の形式に変換しますか?
- 4. SQL Server 2005のデータベース図を他の形式に変換する方法はありますか?
- 5. Jsonの日付形式をdatetime形式(mm/dd/yyyy)に変換する方法はありますか?
- 6. JavaScriptでは、日付形式の値をある形式から別の形式に変換する方法はありますか。
- 7. SVGファイルを他の画像形式に変換するには
- 8. 証明書を「DER」形式からpkcs#12形式に変換するjava APIはありますか
- 9. 65000を超えるレジスタを持つファイルをDBF形式からCSV形式に変換するツールはありますか?
- 10. 画像をテキスト形式に変換するiphone Classはありますか?
- 11. レガシーVMLをSVGに変換するツールはありますか?
- 12. C#で日付を他の形式に変換する
- 13. ある形式のXMLから別の形式のXMLへの変換
- 14. MetaStock形式をCSV形式に変換するには?
- 15. Microsoft Graphを使用してMSWordドキュメントを他の形式に変換することはできますか?
- 16. 日付形式を別の形式に変換する方法
- 17. PHPのMYSQL DATE形式をSTRING形式に変換する
- 18. Rのデータ形式を変換する
- 19. 16進形式とバイナリ形式の間の文字列を変換する
- 20. この形式のHTMLを整形式のXHTMLに変える方法はありますか?
- 21. タブファイルのデータをCSV形式に変換するか、Javaを使用して形式を変換する
- 22. c/C++のソースコードをhtmlに変換するツールはありますか?
- 23. プログラミング言語を別の言語に変換するツールはありますか?
- 24. Androidのxmlレイアウトを.javaファイルに変換するツールはありますか?
- 25. GMTからその他(Eastern、Mountain、Pacific、Indian、..)の形式に変換する
- 26. XMLをPerl eval()に適した形式に変換するための既存のXSLTはありますか?
- 27. Twitter API created_atの日付をColdFusion 8+の正しい形式に変換する機能はありますか?
- 28. HTMLテーブルのデータをさまざまな形式に変換できるPHPスクリプトはありますか?
- 29. データをバイトに変換して元の形式に戻すより高速な方法はありますか?
- 30. 他のプラットフォームと最も互換性のある日付と時刻の形式はどれですか?
ありがとう、ANTLRで書かれたANTLR文法は、私が探していたものでした。 ANTLRを理解する限り、左回帰文法を書き留めることはできますが、手動でそれらをリファクタリングする必要があります。他のBNF形式とANTLRからのコンバータは、BNF構文バリエーションの点数やその他のマイナーな側面の違いを手動で取り入れる必要性を、少なくとも軽減するでしょう。 – Jakob
ESC: '\\'(... | 'u' XDIGIT XDIGIT XDIGIT XDIGIT)は、\ uFFFFを超えるコードポイントと一致することはできません。 – Jakob
@Jakob、正しく、サポートされている範囲は '\ u0000'..' \ uFFFF'です。 –