2009-12-21 30 views
9

Có ai biết về việc thực hiện một trình thông dịch ngôn ngữ kịch bản (một cái gì đó thích hợp cho một trò chơi) trong Erlang không? Một cái gì đó như Javascript hoặc Lua sẽ là tuyệt vời.Erlang Scripting Language Interpreter

+1

Tại sao bạn muốn trình thông dịch Javascript hoặc Lua được viết bằng Erlang? Loại lợi ích nào bạn nghĩ bạn sẽ nhận được từ một cái gì đó như thế này? –

+1

Tôi đang viết một máy chủ trò chơi ở Erlang và tôi muốn người chơi có thể viết kịch bản cho trò chơi chạy trên máy chủ. – Paul

+0

Trong một số trường hợp, có một lý do rất quan trọng là không sử dụng Erlang như một ngôn ngữ kịch bản tiếp xúc. Nếu bạn định cho phép người chơi tạo kịch bản thì bạn cần một cách để cô lập những gì họ có thể làm. Một ví dụ mà bạn có thể làm điều này là trong bùn. Đưa một số loại thông dịch viên vào erlang sẽ là một cách hay để cho phép nội dung do người chơi tạo, nhưng vẫn có thể hạn chế những hành động mà tập lệnh của họ có thể thực hiện. –

Trả lời

5

Bạn có thể thử C/C++ port driver để chạy trình thông dịch ngôn ngữ lua (hoặc khác), erlua có nhiều khả năng bạn cần (nó hoạt động thông qua trình điều khiển cổng, tôi đoán).

3

Bản thân Erlang có thể được sử dụng làm ngôn ngữ kịch bản. Xem escript tại tài liệu Erlang.

+1

Điều này thật tuyệt, nhưng tôi đang tìm kiếm một ngôn ngữ tương tự như hai ngôn ngữ tôi đã đề cập. Tôi có cảm giác bản thân Erlang sẽ không tạo ra một ngôn ngữ kịch bản tuyệt vời như vậy. =/ – Paul

3

Tôi đề nghị thứ hai của Vijay sử dụng chính Erlang. Tuy nhiên, tôi cũng sẽ chỉ ra sự tồn tại của Reia, mà dường như chính xác những gì bạn yêu cầu.

CHỈNH SỬA: Phải, do đó, có erlyjs, trình biên dịch JavaScript nhắm mục tiêu đến máy ảo Erlang. Tôi không có ý tưởng gì nếu giai đoạn phát triển của dự án này là gì, nó tiến triển tốt như thế nào, nhưng bạn có thể kiểm tra nó. Không chắc chắn liệu nó có yêu cầu biên dịch mã JS trước thời hạn hay không, bạn cần phải tự mình xem ...

Here bạn sẽ tìm thấy một trong những nhánh github của cơ sở mã. Tất cả trong Erlang, theo như tôi thấy.

Một lần nữa, đây không phải là sản phẩm trưởng thành. Nhưng sau đó, với sự gia tăng của CouchDB, một cái gì đó như thế này thực sự có thể hữu ích trong một số cách đáng kể ... vì vậy nó có thể hy vọng thực sự trở thành trưởng thành hơi sớm.

+0

Có lẽ tôi không đi qua đủ rõ ràng, nhưng tôi không tìm cách viết các chương trình Erlang (như trong, các chương trình sẽ biên dịch sang bytecode Erlang) bằng ngôn ngữ khác. Những gì tôi đang tìm kiếm là một thông dịch viên được viết * trong * Erlang. – Paul

+0

Vâng, từ trang chủ của Reia: "Reia (phát âm RAY-uh) là một ngôn ngữ kịch bản giống như Ruby/Python". Nó biên dịch chương trình của bạn thành mã byte, nhưng Python cũng vậy - trong cả hai trường hợp nó xảy ra khi đang chạy khi cần. Cú pháp không giống như Erlang IMO. Tôi đoán nó không hoàn toàn giống với JS/Lua, nhưng ít nhất cũng đáng xem. Dù sao, tôi không chắc chắn nếu nó không thể chạy JavaScript trên một động cơ dựa trên Erlang; sẽ nhìn xung quanh và cập nhật nếu tôi tìm thấy thứ gì đó. –

+0

Vâng, erlyjs trông giống như một dự án tuyệt vời, tiếc là phiên bản github có vẻ khá non nớt, và tất cả những gì có sẵn. Mã repo google gốc đã biến mất một cách bí ẩn: http://code.google.com/p/erlyjs/ Tôi cũng đã xem xét cách CouchDB xử lý javascript và tôi thấy rằng nó tạo ra các quy trình SpiderMonkey.Có lẽ tôi có thể tìm cách nhúng V8 vào một mã số Erlang ... Rất tiếc. Cám ơn sự giúp đở cuả bạn! – Paul

0

Câu hỏi này xuất hiện trong tìm kiếm của Google - nhưng các nhận xét không trả lời yêu cầu ban đầu. Câu trả lời áp phích ban đầu đang tìm kiếm là luerl trên github - https://github.com/rvirding/luerl

Luerl là lm 5.3 vm được triển khai tại Erlang và được phát triển bởi Robert Virding - một trong những nhà phát triển Erlang ban đầu.