2012-03-04 6 views
7

Tôi muốn viết một trình biên dịch đơn giản cho các mục đích giáo dục trong Delphi. Tôi đã đọc về Coco/R và tìm thấy việc thực hiện này cho Delphi: http://code.google.com/p/dcocor/. Từ những gì tôi đã đọc, đây là một trình phân tích cú pháp cho cú pháp Delphi 2009.Coco/R có thể chuyển tệp được phân tích cú pháp thành bytecode không?

Tôi phải làm gì để chuyển tệp được phân tích cú pháp thành mã bytecode? Coco/R có thể làm được điều này không?

Tôi biết về các ngôn ngữ kịch bản như FastScript hoặc DWS, nhưng tôi muốn thử và viết ngôn ngữ của riêng mình cho mục đích của riêng tôi.

Vui lòng cho tôi một số lời khuyên hoặc làm rõ mọi thứ một chút.

+2

Bạn đã đọc hướng dẫn sử dụng Coco/R chưa? Tôi muốn nói để bắt đầu ở đó. http://ssw.jku.at/Coco/Doc/UserManual.pdf –

Trả lời

7

Tôi phải làm gì để chuyển tệp được phân tích cú pháp thành mã bytecode?

Trước tiên, hãy quyết định loại bytecode nào bạn muốn có: JVM? LLVM? MSIL? Phát minh của riêng bạn?

Coco/R có thể thực hiện việc này không?

Coco/R là một trình tạo trình phân tích cú pháp, nó chỉ tạo trình phân tích cú pháp lexer cho ngôn ngữ bạn xác định và cấp nguồn cho trình tạo. Các bước sau đó là trách nhiệm của bạn. Mặc dù có thể có các dự án ngoài kia có thể giúp tạo mã số mục tiêu/mã mục tiêu (nhưng tôi không tìm thấy bất kỳ mã nào cho Coco/R).

+1

Tôi muốn chỉ đơn giản là chuyển đổi các tập lệnh của tôi thành một mã thực thi - x86 EXE hoàn toàn ổn. Tôi tìm thấy một trình phân tích cú pháp LLVM cho Delphi (http://code.google.com/p/llvm-pascal/), nhưng nó dường như không tạo ra bytecode. Tui bỏ lỡ điều gì vậy? – Pateman

+0

Câu trả lời này cho bạn biết là bạn sẽ cần phải viết trình tạo mã của riêng bạn. –

+0

@Pateman: dự án đó là trình biên dịch Pascal với chương trình phụ trợ LLVM, không phải là một tập lệnh tùy ý để thực thi/bytecode. Không có điều như vậy tồn tại tuy nhiên. Đọc tài liệu Coco/R nếu bạn muốn sử dụng nó, trình phân tích cú pháp tạo ra, và sau khi quyết định lược đồ mục tiêu của bạn, ánh xạ những gì trình phân tích cú pháp tạo ra cho ngôn ngữ mẹ đẻ mục tiêu của bạn (tức là x86 asm, llvm ir, v.v.) – LeleDumbo