2017-10-03 25 views
2

Visual Studio 2017(および2015)には、対話型C#, F#, R, PythonなどのためのREPLが追加されました。 View -> Other Windows ->とインストールされているものはすべて表示する必要があります。Visual Studioにカスタム言語REPLを追加する方法

C# Interactive menu item

C# REPL

そのREPLは、その他のWindowsで、メニュー項目をクリックすることで開始されることなのVisual Studioに言語(ドメイン固有の既存の)私は自分自身を統合することを望んでいたとします。私は、Visual Studioの組み込みのREPLサービスを使用して、既存の言語との対話を行い、言語を設計したり、.NETやMicrosoftが提供するDSM機能を使用したりすることには興味がありません。今日は少なくとも。

どこから始めますか? Interactive Rの実装は適切な出発点ですか? (RインタプリタはC#というよりも私のDSMに似ています)

ここでの魅力は、Visual Studioとの統合と既存のコンポーネントの再利用です。あなたのDSLの限られた情報に基づいて

答えて

0

同様に良好な要件として処理することができるという仮定を行う必要がある。

  1. 部分構文木を生成することが可能であり、それらをコンパイルDSL用のコンパイラがあります部分的なバイナリ、メソッド本体、コンパイラベースの式評価プログラムがあります。

  2. DSLを部分バイナリとして実行することができるランタイムがあります(コンパイルの結果が中間言語の場合は、システム固有のランタイムライブラリが必要です)。

  3. 入出力インタラクティブウィンドウ、ランタイム、コンパイラ間の配管作業は、Visual Studioとの間で多くの作業があります。

従来技術について分析することができるいくつかの例があります。

Roslynのコンパイラは

スクリプティングhttps://github.com/dotnet/roslyn/tree/master/src/Scripting

インタラクティブサービスhttps://github.com/dotnet/roslyn/tree/master/src/VisualStudio/InteractiveServices

に直接使用のものであってもよいワンREPLプロジェクトは:

ReplHTMLプロジェクト

DSLを高速に開発するため、または任意のプログラミング言語を開発するための原則として、多数のツールキットが用意されています。彼がそうしていたTiark Rompfのいくつかの論文をチェックし、Graal VMに基づくクロスランゲージ仮想マシンと効率的なDSL /プログラミング言語開発に取り組んでいます。彼は現在パデュー大学に在籍していますが、その前にScalaのSwitzeralndのEPFLでMartin Oderskyとプログラミング言語開発フレームワークと仮想マシンとの統合を担当していました。

Rを使用することをお勧めします。これは、プログラミング言語の使い方や開発方法を習得してはならない例の1つです。

最終的な警告:これは正常に完了するためにエンジニアが1年以上必要な大きなプロジェクトです。

+0

包括的な回答をいただきありがとうございます。このように、私はVSに既存の言語を統合し、VSによって提供されるREPL関連のサービスをどのように使用するかを学ぶだけに興味があります。私はうまくいけば少なくとも私の質問を少し改善しました。私はGitHubでRoslynのものをちょっと見て回りましたが、RTVSパッケージは、少なくともかなりはるかに有望であることを率直に見ています。このように、私はR言語そのものについてのあなたのコメントに同意します(以前の人生ではSを大いに利用しました)が、VS REPLサービスへのインターフェイスがそれに値するものかどうかを発見する必要があります。 –

関連する問題