2009-07-29 11 views
1

Visual Studioに似た構文の強調表示とドロップダウンの自動補完ができるプログラムを作成する必要があります。また、可能であれば、コードセグメントを折りたたんで展開することができます。Visual Studioのコードアプリケーションに最適な方法

リッチテキストエディタを使用し、reg式を使用して色付けを適用する前に、これをコーディングしてみました。これは非常にプロセッサを大量に使用し、ファイルが大きくなると遅延が発生します。それから、私はこれについて完全に間違っていると思ったかもしれません。

あなたはVB.netまたはC#でのプログラムのような視覚的なスタジオをコーディングしなければならないとしたら私の質問は

です。あなたはどうやってそうするのですか?

+0

*これは週末のプロジェクトではありません。 :) –

答えて

7

ソースコード(IDEエディタ、コンパイラなど)で動作するツールは、実際のところ単純に動作しないため、コードを正規表現で解析されたテキストとして扱わない規模。これらのツールは、コードをツリー構造としてモデル化する抽象構文木(AST)と呼ばれるソースコードのモデル上で動作します。 Cのような言語で書かれたプログラムでは、このツリーのルートノードが実行を開始する主なメソッドであり、このルートの子はmainメソッドに渡される引数です。

操作が実行されるときコード上で(例えば、ハイライトシンタックス、リファクタ)、それらはビジターパターンのようなものを使用してツリー上で実行され、ソースファイルはASTと同期して保持されます。

コードが更新されると、レクサーを使用してトークンに解析され、パーサーを使用して解析され、言語の文法規則に従うと、ASTが更新されます。パーサー、レクサー、文法、ASTの詳細については、ANTLRを参照してください。

+0

+1です。また、質問者がこの答えで議論された概念のなんらかの*について慣れていない場合は、コンパイラの本を取り上げることを検討する必要があります。おそらくドラゴンの本など。 –

1

ビジュアルスタジオ自体にプラグインまたはDSLをビルドします。あるいは、ライセンス/コストが問題だったら、私はメモ帳を使用します。++。なぜホイールを再発明するのですか?

+0

まあ私はこのアプリケーションのカスタム機能が必要です。現在、Textpadとデータをソートするための他のコマンドラインツールを使用しています。私はちょうどよりカスタムホイールをしたい。 –

+0

Visual Studioでその機能を追加できない原因は何ですか? –

1

Actipro's SyntaxHighlighterのような構文ハイライトコンポーネントを使用したことがありますか?

+0

私は現在、このプロジェクトでは、たくさんのお金を持っていません。 idはあなたが知っているかもしれない無料のものに興味を持っています。真実は –

1

は、Visual Studioの言語サービスのルートを移動したい場合は、管理パッケージのフレームワークを開始するには良い場所です:http://msdn.microsoft.com/en-us/library/bb166360.aspx

それは、Visual Studio SDKが付属しています。 Regexベースの例があると思いますが、100%確実ではありません。

Visual Studioシェルは自由に再配布可能ですが、目的に合わせてオーバーヘッドが大きくなることがあります。

5

あなたが本当に最初からこれを実行したい場合、あなたはVisual StudioのようなIDEで見つける機能の同じ種類を提供し、この無料、オープンソースのIDEにソースコードをダウンロードすることができます

#develop (short for SharpDevelop)

必要なコードデザインが含まれている必要があります。

alt text http://static.icsharpcode.net/OpenSource/SD/TeaserSharpDevelop2OnVista.png

私は私が必要な言語をサポートするためのVisual Studioを拡張し、

0

をお楽しみください。私はいくつかのテクニックについて(特に解析サービスにANTLRを使用して)話しているブログを持っています(link)

言語私がサポートされました:

  • UnrealScript(構文強調表示、Visual StudioのでサポートされているほぼすべてのIntelliSenseの操作)
  • ANTLR grammars(構文強調表示、基本的なインテリセンス)
  • StringTemplate機能テンプレート言語(構文ハイライト、基本的なIntelliSense)
  • チャペル(構文強調表示)
どこへ行く210の

場所:

関連する問題