私はSQLに変換できるドメイン固有の言語を持っています。私自身のレクサー、パーサー、コードジェネレーターを書く必要がありますか、それとも私に役立つツールがありますか?DSLをSQLに変換するための正しいツールですか?
答えて
それはあなたが仕様を受け入れ、そこから翻訳者を生成することを目的とイーライのようなもの、を探しているように聞こえる:一方
http://eli-project.sourceforge.net/
、あなただけのように幸せになるかもしれませんパーサーにANTLRのような素敵な世代のツールを書いて、ASTとコードジェネレータを自分でコーディングしてください。
おそらくSQLのような高水準言語を記述するコード生成は、DSLからの変換が簡単であると仮定すると、実装するのが難しくありません。
私がいたら、ocamllexとocamlyaccを使ってOCamlに書きますが、まずはOCamlを知る必要があります。
これは、使用する言語に大きく依存しますが、Groovy、Ruby、Scala、F#およびHaskellはこれを行うのに適した言語です。
どの言語を使用すると、どのツールを使用するかに影響します。
たとえば、Cでこれを行うことができますが、それはもっとうまくいくでしょうし、ユーザーにとっては見た目が悪いかもしれません。
一部の言語では、パーサーを支援するためにツールを使用する必要がありますが、ツールを使用しない方が優れています。
DSL件名のDSLをに掲載しています。
あなたのDSLは、DSLコーダによる可読性のために設計されている場合は、[はい、あなたはレクサー、パーサとコードジェネレータを必要としています。
(あなたの「メタ言語」の構文でDSLをコーディングすると、これらのメカシャンは必要ありませんが、それは真実かもしれませんが、メタデータにDSLの埋め込み性を最適化し、エンドユーザーにとっての読みやすさよりもむしろ言語に頼っています。
いいえ、最初から書き込む必要はありません。
あなたのDSLの文法規則のコーディングに集中するのに役立つ、野生のパーサジェネレータ(YACC、Bison、ANTLR、JavaCC)がたくさんあります。解析エンジンとしての文法規則を処理/実行するために、多くの低レベルの構文解析機構を提供しています。 ANTLR/Bison/Yaccは、あなたが概念的な文法を特定のパーサジェネレータ(LALR(1)、LL(k)、...)の制限に縛る努力を費やす必要があります。これを行うには明示的な作業が必要です。その後、伝統的なパーサであなたは自分自身になります。
Life After Parsingがたくさんあるので、それはシンボルテーブル、コード解析(コード解析)です。ほとんどの人がそこに着くと驚くばかりになってしまいます(実際の言語のパーサーは、私たちのDMS Software Reengineering Toolkitは、文法エンジンの制約を最小限に抑えて構文解析ルールを構築するのに役立つように設計されています;自動的にツリーを作成したり、さまざまな方法でコード変換をサポートしています。さらに、DMSは、ソース/ターゲットパターンのペアを使用してマッピングを指定することで、構造化された方法でDSL(「自分の言語」)フラグメントとターゲットの間の変換をサポートするための視点とツールを提供します。 OPの特定の目的のために、SQL2011文法でDMSを得ることができ、ターゲットパターンを書くための素敵なベースラインを提供します。
ツールによる自動変換の詳細については、SO discussion on translating between languagesをご覧ください。
適切なメタ言語(Lispなど)を使用している場合は、レクサー、パーサー、コードジェネレータは必要ありません。すべてが既に含まれています - あなたはDSLをS式の上に構築することができます。あなたはLisp自身のコードのホスト部分を生成することができます。
あなたのDSLに特別な構文が必要な場合でも、パーサーをメタ言語に埋め込むのは非常に簡単です。
「The Pragmatic Programmers」シリーズのTerence Parr氏がこの本を読むことをお勧めします。Language Implementation Patternsそれは、構文解析、翻訳、コンパイルの徹底的な紹介です。例としてはANTLR by Terence Parrに大きく依存していますが、他の言語やシステムで利用できるように一般的です。
私はあなたに類似したプロジェクトを持っています。私はあなたがEclipseで直接使用できるので、XtextとXtendをチェックアウトすべきだと思います。あなたはintellisense、grammer、lexerを簡単に手に入れることができます。私はSQLコードを作成しようとしましたが、今までは成功したプロジェクトでした。
- 1. FetchXMLをSQLクエリに変換するためのガイドまたはツール
- 2. mssqlクエリをmysqlクエリに変換するための良いツール
- 3. DSLツールでぼんやりしたアイコンデコレータを修正するには?
- 4. T-SQLをグラフィカルモデルに変換するツールですか?
- 5. t-sql(SQL Server)のストアドプロシージャをpgsql(postgre sql)に変換するツール
- 6. OOPコードをAOPに変換するためのツール
- 7. 変換する方法SQL `エクトDSLにas`キャスト?
- 8. CをGoに変換(変換)するツールですか?
- 9. SQL Server 2012からキューブを作成するための正しいツールは何ですか?
- 10. SQL ServerのストアドプロシージャをOracleに変換するためのツールはありますか?
- 11. CのヘッダーをXMLに変換するための良いツール/ライブラリ
- 12. コアデータで使用するためにsql文を変換する
- 13. 「DSLツール」と「オスロ」の違いは何ですか?
- 14. svgからttfに変換するツール
- 15. SQLステートメントに変数を含める正しい方法は何ですか
- 16. JavascriptをテストするためにSeleniumのツールを置換してください。
- 17. struts1ロジックタグをStruts2に変換するための正しい構文タグ
- 18. CSVファイルをSQLデータテーブルに変換するためのJavaライブラリ
- 19. ASPからASP.NETに変換するための良いリファレンスやツールはありますか?
- 20. Solrスキーマ正規表現変換ツール
- 21. ASPをPHPに変換するツール
- 22. MATLABコードをPythonに変換するツール
- 23. イメージをbase64に変換するツール
- 24. pMathMLをcMathMLに変換するアルゴリズム/ツールですか?
- 25. Cヘッダファイル(.h)をVBに変換するツールですか?
- 26. PDFをHTMLに変換するオープンソースライブラリ/ツールですか?
- 27. ラクダのjava dslからxml dslに変換するものはありますか?
- 28. SQLデータベースで使用するためにDATEをTEXTに変換する
- 29. Perl正規表現をSQL正規表現に変換する
- 30. Web/App.configなしでEntity Framework migrate.exeツールを実行するための正しい形式は何ですか?
ドメイン固有の言語構文もSQLで解析する予定ですか? – alexm
言い換えると、SQLの生成を行うホスト言語は何ですか? – alexm
これは実際にあなたが使っている言語とあなたのDSLの複雑さに依存します。 –