2010-05-05 3 views
2

Скажите, что я хочу создать редактор исходного кода для языка программирования ocaml, с чего начать? Я хочу создать редактор для платформы Windows в качестве хобби проекта. Мое основное умение - в веб-разработке. Я давно разработал приложения для Windows. Я понятия не имею, как это делается с сегодняшними доступными инструментами. У меня есть визуальная студия 2008, а C# - мой язык выбора.Что мне нужно знать для создания редактора исходного кода?

+0

Редактор исходного кода просто блокнота, это все дополнительные функции, такие как IntelliSense, подсветку кода и т.д. и т.д., что сделать IDE (который, я думаю, действительно то, что вы хотите?) – PostMan

+0

Да, IDE, но на самом деле не очень тяжелый, например, затмение или визуальная студия. Что-то похожее на блокнот, но может компилировать и выполнять код. – Animesh

+0

они не могут скомпилировать и выполнить код. Компилятор (например, GCC) компилируется, ваш процессор выполняет. IDE запускает только компилятор. – 2010-05-05 01:00:43

ответ

2

Вы должны знать:

  • OCAML Синтаксис функции, ключевые слова, функции и т.д. ...
  • C#, как это ваш родной язык, я думаю,
  • Вы должны знать, какие функции вы хотите реализовать
  • ... если он использует графический интерфейс или просто из терминала, как нано/Vim
  • как подсветка синтаксиса работает
  • как открыть и сохранение файлов
  • как автодополнение работает
  • и т.д ..

Вы могли бы хотеть смотреть на некоторые редакторы с открытым исходным кодом, как Dev-C++ или Gedit

Кроме того, как вы лично больше веб -devvy, вы можете захотеть создать тот, который работает в веб-браузере. Это часто бывает проще и помогает понять основы создания редактора кода. Позже вы всегда можете написать один для настольных компьютеров.

+0

Спасибо Koning. Я ценю ваш ответ. Это то, что я точно ищу. Мне нужно было где-то начать. Это оно. Спасибо. – Animesh

+0

Нет проблем. То, что большинство людей не знает, это то, что Конинг является голландским для короля. Все здесь называют меня королем, даже не зная. BTW, THX у меня почти есть 2000rep сейчас ^^^ – 2010-05-05 01:19:52

+0

ха-ха .. ну теперь мы знаем .. cheers .. – Animesh

2

Если вы наиболее удобны в Visual Studio, то вы можете использовать среду Visual Studio для создания собственной среды разработки на основе этого фундамента.

Вот подкаст, который дает хороший обзор: http://www.code-magazine.com/codecast/index.aspx?messageid=32b9401a-140d-4acb-95bb-6accd3a3dafc

Кроме того, в качестве справки, IronPython студия была создана с помощью Visual Studio 2008 Shell: http://ironpythonstudio.codeplex.com/

Сидя, что исходный код должен дать вы хорошая отправная точка.

+0

Большое спасибо за ответ Ben. Я обязательно рассмотрю обзор vs shell, а также студию ironpython. – Animesh

1

Вы можете использовать Scintilla. Он имеет подсветку синтаксиса и некоторые другие функции. Кроме того, он имеет версию .NET версии here.

Еще один хороший инструмент Alsing Syntax Box:

Мощный подсветка синтаксиса для Windows Формы управления для Microsoft.NET Platform. Написан на 100% управляемом C#. Поддерживает подсветку синтаксиса и код складной для любого программирования язык.

С Alsing Синтаксис Box, вы можете определить синтаксис файла (так же, как this one for C#), а затем имеют intellisense like feature.

Вы можете начать с одного из них для своего редактора.

+0

SciTE - мой второй любимый редактор. Я посмотрю на оба упомянутых вами инструмента. Благодаря! – Animesh

2

зажигалку веса альтернативой является использование RichEdit control

пример:
http://www.codeproject.com/Messages/3401956/NET-Richedit-Control.aspx

// http://www.codeproject.com/Messages/3401956/NET-Richedit-Control.aspx 

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

namespace RichEditor 
{ 
    public class RichTextBoxEx : RichTextBox  
    { 
     IntPtr mHandle = IntPtr.Zero; 

     protected override CreateParams CreateParams   
     { 
      get 
      { 
       // Prevent module being loaded multiple times. 
       if (this.mHandle == IntPtr.Zero)     
       { 
        // load the library to obtain an instance of the RichEdit50 class. 
        this.mHandle = LoadLibrary("msftedit.dll");     
       } 
       // If module loaded, reset ClassName. 
       if (this.mHandle != IntPtr.Zero)     
       { 
        CreateParams cParams = base.CreateParams; 
        // Check Unicode or ANSI system and set appropriate ClassName. 
        if (Marshal.SystemDefaultCharSize == 1)      
        { 
         cParams.ClassName = "RichEdit50A";      
        } 
        else 
        { 
         cParams.ClassName = "RichEdit50W";      
        } 
        return cParams;     
       } 
       else // Module wasnt loaded, return default .NET RichEdit20 CreateParams.     
       { 
        return base.CreateParams;     
       } 
      } 
     } 

     ~RichTextBoxEx()   
     { 
      //Free loaded Library. 
      if (mHandle != IntPtr.Zero)    
      { 
       FreeLibrary(mHandle);    
      } 
     } 

     [DllImport("kernel32.dll", SetLastError = true)] 
     private static extern IntPtr LoadLibrary(String lpFileName); 

     [DllImport("kernel32.dll", SetLastError = true)] 
     private static extern bool FreeLibrary(IntPtr hModule);  
    } 

} 
+0

Это выглядит из моей лиги. Но я посмотрю на него, как только мне станет удобно. Благодаря! – Animesh