Cách tạo một IDE?

Em còn là học sinh, đã học được một chút kiến thức về C# và muốn tạo 1 IDE<cụ thể là ide Pasca bằng C#l> có thể compile và xuất kiết quả ra command prompt của windows, hình như đã có một IDE như vậy tên là Olala Pascal.
Compiler đã có của Free Pascal, vấn đề của em ở đây là làm sao để đưa tệp của ta đã viết cho vào Compiler và xuất kết quả ra Command Prompt ạ?
Một cái nữa là cách để đánh dấu các từ highlight và bảng gợi ý ví dụ như ta viết pro thì sẽ xuất hiện bảng chọn các từ program,procedure chẳng hạn?

1 Like

Giả sử Compiler của e là FreePascal.exe và để compile được suorce code, e dùng command line

FreePascal.exe project1.pas -output  project.exe

E có thể dùng Process để chạy command đó

var process = new Process 
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "FreePascal.exe",
        Arguments = filename + " -output  project.exe",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};

process.Start();

process.OutputDataReceived += WriteToRichTextBox;

và lấy kết quả hiện thi từ

void WriteToRichTextBox(object sender, DataReceivedEventArg e) {
    Invoke (new MethodInvoker(() => {
        if (!String.IsNullOrEmpty(e.Data))
        {
            richTextBoxOutput.AppendText(e.Data + Enviroment.NewLine);
        }     
    }));
}

Hàm Invoke sử dụng vì richTextBoxOutput được access cross-threads.

8 Likes

On a side note, nên xác định rõ ràng mục tiêu nha. Bạn muốn thao tác với RichTextBox rồi gọi process ngoài thì @LocNguyenXuan99 đã hướng dẫn đầy đủ rồi đó. Nhưng nếu bạn muốn viết IDE thì sẽ khác, learning curve sẽ khác rất nhiều.

6 Likes

Học chút kiến thức mà tham vọng IDE thì khó đấy vì để làm IDE thì cần phải làm rất nhiều việc gồm có:

  • tích hợp compiler
  • tạo trình soạn thảo
  • tích hợp nhắc lệnh và highlight cú pháp (cái này cần phải phân tích được cú pháp của câu lệnh của mã nguồn)
  • tích hợp quản lí project.

Đấy chỉ mới là những cái core của 1 IDE siêu cơ bản.
Thay vì tham vọng 1 dự án quá sức với người mới như bạn (ngay cả nhiều bạn có nhiều kinh nghiệm trên diễn đàn cũng vẫn là quá sức để làm được) thì bạn có thể nghĩ đến 1 thứ ít phức tạp hơn như làm 1 trình editor tương tự notepad để làm dự án đầu tay thôi chẳng hạn. Đừng xem thường dự án notepad này, ngay cả 1 editor nhỏ như vậy cũng có nhiều việc cho bạn làm đấy

7 Likes

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

Text editor cơ bản nhất nó giống như notepad thôi, dùng một cái textbox với thanh button có mấy chức năng cơ bản như mở, tìm kiếm,… ở trên là xong. Code editor thì khó hơn, phải làm syntax highlighting và code snippet, mà thôi, dùng luôn Monaco Editor luôn cho nhanh :)), ngay cả VSCode cũng dựa trên Monaco Editor mà ra. Cuối cùng là compiler, làm một cái compiler rất rất khó, phải có kiến thức chuyên sâu về hđh, memory, mã máy các thứ mới làm được nên thôi, chôm của người ta vậy :rofl:. Còn nếu quá lười thì tích hợp luôn compiler vào VSCode.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?