Một cách để làm điều này là sử dụng cơ sở hạ tầng được thiết kế để xây dựng người dịch.
Nhiều người nghĩ điều này có nghĩa là "trình tạo trình phân tích cú pháp"; điều đó thật ngây thơ. Một dịch giả tốt phải phân tích ngôn ngữ, chắc chắn, nhưng bản dịch cũng cần theo dõi ý nghĩa của các biểu tượng, xác minh rằng những gì được cho là không vô nghĩa, tạo và tối ưu hóa mã. Bạn cần nhiều máy móc hơn chỉ là một trình phân tích cú pháp (trình tạo) để làm điều này tốt. Xem Life After Parsing.
DMS Software Reengineering Toolkit là bộ công cụ để xây dựng các trình phân tích và dịch giả chương trình, bao gồm chỉ một phần tử là trình tạo trình phân tích cú pháp rất mạnh.
DMS cũng bao gồm program transformation engine, cho phép một người viết các quy tắc dịch về ngôn ngữ đang được dịch, if you see this, transform it to that. Viết các quy tắc dịch trực tiếp bằng cú pháp bề mặt của các ngôn ngữ yêu thích giúp chúng dễ dàng viết, kiểm tra, gỡ lỗi và bảo trì hơn.
Điều đó nói rằng, viết như một dịch giả không phải là một nhiệm vụ dễ dàng; bạn phải liệt kê toàn bộ các cấu trúc cú pháp với ngữ nghĩa ngụ ý, và tìm ra cách ánh xạ tới một sự kết hợp cú pháp ngôn ngữ đích cộng với các thư viện phụ mà bạn có thể tùy chỉnh xây dựng ở phía đích. Điều này mất nhiều tháng, số nhiều, ngay cả đối với các chuyên gia, mỗi phiên dịch.
DMS bất khả tri về ngôn ngữ lập trình nào có liên quan. Bạn phải định nghĩa các ngôn ngữ mà bạn quan tâm; nó có một định nghĩa lớn về ngôn ngữ (hữu ích như các nguồn hoặc các mục tiêu, sự lựa chọn của bạn) cho các ngôn ngữ chuẩn như Java và JavaScript. Ổn định có sẵn này giúp rút ngắn chu kỳ phát triển, nhưng nó không phải là chi phí chủ yếu.
Có một chén thánh xây dựng một "phiên dịch phổ quát" trong đó người ta viết một bộ quy tắc và mọi thứ đều là đào sau đó. Ý tưởng đó là một tưởng tượng. Nó là giá trị hiểu rằng một bộ quy tắc dịch từ ngôn ngữ A đến B, không thực sự hữu ích cho việc dịch ngôn ngữ C sang D, bởi vì các quy tắc kết hợp kiến thức về cú pháp cụ thể và ngữ nghĩa ngụ ý. Tuy nhiên, nếu bạn sẽ xây dựng nhiều "transpilers", làm nó trên một nền tảng chung là một chiến thắng to lớn về đường cong học tập và khả năng bảo trì lâu dài.
Sử dụng các công cụ như DMS, người ta có thể viết extremely accurate translators..
Bạn viết trình chuyển đổi bằng cách tạo trình phân tích cú pháp cho ngôn ngữ nguồn, tạo cây cú pháp và sau đó chuyển đổi thành mã bằng ngôn ngữ đích. Tùy thuộc vào nhiệm vụ của bạn, nó có thể dễ dàng hơn để viết một trình chuyển đổi, nhưng chỉ đơn giản là sử dụng tạo mã dựa trên mẫu để tạo mã cho nhiều nền tảng. – yole
Xin chào, bạn có thể vui lòng cung cấp liên kết đến ví dụ hoạt động của nó cho một số ngôn ngữ không? –
[CoffeeScript] (http://coffeescript.org/) là trình biên dịch tạo JavaScript. Kiểm tra nguồn chú thích của nó; điều này khá dễ hiểu. – yole