2013-02-01 34 views
8

Tôi đang chơi và học hỏi rất ít với ANTLR xây dựng một DSL đơn giản cho .NET, chuyển đổi tập lệnh thành chuỗi thành Phương thức động. Ý tưởng đầu tiên của tôi là dịch sang các mã opcodes của IL, nhưng bây giờ tôi đang đọc về các cây biểu hiện để tạo DM. Có vẻ như tôi có thể sản xuất bất kỳ phương pháp nào bằng cách sử dụng các cây biểu thức, giống như mã IL?C# Phương pháp động - IL vs cây biểu hiện

cảm ơn!

Code: https://github.com/ricardoborges/NPortugol2

+0

Bạn sẽ không thể xác định loại mới với cây biểu thức. IL là một cách linh hoạt hơn nhiều (nhưng rất dễ tạo). –

Trả lời

9

IL Mã mang đến cho bạn một chút quyền lực hơn. Ví dụ, bạn có thể sử dụng nó để phát ra mã chính xác cho .NET CLR nhưng không nhất thiết phải là thứ bạn có thể đã viết trong C# hoặc VB.NET.

Nhưng nói chung có, bạn sẽ có thể làm bất cứ điều gì bạn muốn làm với cây biểu thức, và chúng đơn giản hơn nhiều để quấn quanh đầu bạn.

Phát ra mã IL có thể sẽ chạy nhanh hơn một chút so với biên dịch một cây biểu thức. Tôi sẽ không lo lắng về điều này (tối ưu hóa sớm), nhưng nó đáng chú ý. Xem How does having a dynamic variable affect performance? để biết một số thông số hiệu suất.

+0

Tuyệt! Cảm ơn bạn đã giải thích nó! Tôi sẽ đọc liên kết! – Ricardo

+2

Một sự khác biệt đáng kể giữa hai là IL có thể được sử dụng để tạo ra toàn bộ các lớp và các hội đồng. Biểu thức chỉ có thể được sử dụng để tạo các phương thức. – svick

Các vấn đề liên quan