Như câu trả lời khác đã nói, bạn không thể tạo ra một nhà điều hành mới - ít nhất, không phải không có thay đổi lexer và phân tích cú pháp mà được tích hợp vào trình biên dịch. Về cơ bản, trình biên dịch được xây dựng để nhận ra rằng một ký tự riêng lẻ như <
hoặc ?
hoặc một cặp như >>
hoặc <=
, là một toán tử và để xử lý nó một cách đặc biệt; nó biết rằng i<5
là một biểu thức chứ không phải là một tên biến, ví dụ. Việc nhận biết toán tử là toán tử là một quá trình riêng biệt khi quyết định toán tử thực sự làm gì, và được tích hợp chặt chẽ hơn vào trình biên dịch - đó là lý do tại sao bạn có thể tùy chỉnh sau này chứ không phải tùy chọn cũ.
Đối với các ngôn ngữ có trình biên dịch mã nguồn mở (như GCC), bạn có thể, về mặt lý thuyết, sửa đổi trình biên dịch để nhận dạng toán tử mới. Nhưng nó sẽ không được đặc biệt dễ dàng, và bên cạnh đó, tất cả mọi người sẽ cần trình biên dịch tùy chỉnh của bạn để sử dụng mã của bạn.
Nguồn
2009-06-24 18:47:53
không có ngôn ngữ nào có khả năng này ... – AminM
@JesonPark - Không đúng. F # có nó như những người khác đã chỉ ra, và [C + + có nó là tốt.] (Http: // stackoverflow.com/questions/1515399/can-you-make-custom-operator-in-c) [CoffeeScript] (http://coffeescript.org/) cung cấp một số toán tử mới làm đường cú pháp cho các thành ngữ JavaScript và bạn có thể tùy chỉnh có thể mô tả nó như cho phép các toán tử tùy chỉnh. Người cuối cùng là một chút khéo léo, vì bạn về mặt kỹ thuật sẽ mở rộng ngôn ngữ. –
@JustinMorgan: như đã đề cập trong bài viết CodeProject _ "C++ hỗ trợ quá tải toán tử, nhưng bạn không được phép tạo toán tử của riêng bạn" _ đây là mô phỏng !! – AminM