2012-01-15 33 views
11

Tôi biết có một số câu hỏi nổi xung quanh ở đây về chủ đề này, nhưng thật khó để tìm thấy bất cứ điều gì hữu ích cho những gì tôi đang ...hướng dẫn hoặc giới thiệu để viết một ngôn ngữ kịch bản đơn giản?

Tôi cũng biết rằng nó có thể sẽ trở thành công việc khá hoàn thành, nhưng tôi thực sự muốn tạo một ngôn ngữ kịch bản đơn giản cho các công cụ chơi game ... Tôi muốn sử dụng nó trong C++ và các công cụ trò chơi Android Java của tôi ... nhưng tôi không biết bắt đầu từ đâu ... Tôi đã thử tìm kiếm các hướng dẫn trực tuyến, nhưng rất nhiều yêu cầu chuyển đổi mọi thứ sang mã byte, máy ảo và như vậy ...

Tôi thực sự chỉ muốn tạo một ngôn ngữ kịch bản đơn giản có thể đọc từ động cơ, có một số đơn giản "if/else "logic ... các hàm đơn giản có thể được gọi từ các tập lệnh khác và cứ thế ... Thậm chí có thể impler cho các phiên bản đầu ... Tôi thực sự không biết bắt đầu từ đâu, nhưng tôi biết đây là thứ tôi cần để bắt đầu học và hiểu.

Nếu bất cứ ai có thể chỉ cho tôi đúng hướng và chỉ ra một số liên kết đến cách đơn giản "tạo ngôn ngữ kịch bản đơn giản cho trò chơi" hoặc thậm chí chỉ ra một số khái niệm chính mà tôi nên xem xét ... I ' d thực sự biết ơn.

Tôi muốn sử dụng ngôn ngữ kịch bản dựa trên C tối giản, nhưng tôi đoán các chi tiết cụ thể sẽ đi vào nó khi tôi đã thực sự tìm hiểu thêm về nó.

Cảm ơn bất kỳ trợ giúp nào mà bất kỳ ai cũng có thể cung cấp.

+3

Bạn có thực sự muốn tạo một ngôn ngữ * kịch bản mới không? Bạn không thể cung cấp giao diện * kịch bản * cho công cụ trò chơi của mình bằng ngôn ngữ hiện có? – Thilo

+1

Tôi biết nó không phải là "C-based", nhưng kịch bản Lua là một ngôn ngữ đơn giản để học và viết. – Zack

+0

@ Thilo: Về mặt kỹ thuật tôi có lẽ không phải làm, nhưng tôi nghĩ nó sẽ là một thứ rất hữu ích sau này để giữ khả năng tương thích chéo giữa công việc Android và PC của tôi ... Nhưng nếu tôi có thể tìm thấy một ngôn ngữ kịch bản không quá khó để thực hiện cả trình soạn thảo C++ và công cụ Android của tôi, tôi đoán là tôi sẽ xem xét nó. – Kalisme

Trả lời

4

tôi đã cố gắng tìm kiếm hướng dẫn trực tuyến, nhưng rất nhiều yêu cầu chuyển đổi điều cần mã byte, máy ảo và như vậy

Yes. Đây thực sự là cách tiếp cận, ngay cả đối với một ngôn ngữ đơn giản đã chết. Việc thực thi mã nguồn trực tiếp sẽ phức tạp hơn, cách này được thực hiện trước tiên bạn phân tích mã nguồn và phân tích nó thành mã byte, sau đó có một máy ảo giải thích mã byte.

Bạn có thể muốn xem các ngôn ngữ hiện có để tìm hiểu về thiết kế của chúng.

This tutorial từ mã lật xây dựng một ngôn ngữ đơn giản và bao gồm tất cả mã, vì vậy nó có thể hữu ích.

Bạn cũng có thể xem mã nguồn Lua.

4

Một phần công việc của tôi là duy trì ngôn ngữ kịch bản trò chơi độc quyền. Tôi không biết về bất kỳ cuốn sách "Cách thực hiện" nào về chủ đề theo nghĩa hẹp của nó. Có một bài viết thú vị của Bruce Wilcox về viết những ngôn ngữ như vậy. Nó không thảo luận chi tiết thực hiện, nhưng đi vào quá trình thiết kế phần nào.

http://www.gamasutra.com/view/feature/1570/reflections_on_building_three_.php

Viết một ngôn ngữ kịch bản cũng giống như văn bản ngôn ngữ nào và bao gồm tất cả cùng một nguyên tắc và các câu hỏi thiết kế. Bạn cần phải suy nghĩ về những khái niệm ngôn ngữ của bạn nên xoay quanh, bạn cần phải xác định một ngữ pháp, sau đó bạn cần phải viết một trình biên dịch hoặc dịch giả và/hoặc một thông dịch viên. Mà bạn chọn và các chi tiết của việc triển khai của họ hoàn toàn tùy thuộc vào bạn và không có cách nào tốt nhất để thực hiện những điều này.

Có những cách suy nghĩ tiêu chuẩn khi nói đến cú pháp phân tích cú pháp và xác định ngữ pháp ngôn ngữ. Biểu thức chính quy là bạn của bạn ở đây. Rất may, C++ 11 bao gồm thư viện <regex> (ban đầu từ tăng cường).Nó có thể giúp đỡ để lấy một cuốn sách về trình biên dịch để giúp bạn bắt đầu trên các khái niệm quan trọng, nếu bạn thực sự muốn nhận được vào chủ đề trong chiều sâu. Khi tôi đang học đại học lấy một khóa học trình biên dịch, đây là sách giáo khoa của tôi, mà tôi đã giữ với tôi cho đến ngày nay, vì vậy tôi khuyên bạn nên.

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886/ref=sr_1_2?ie=UTF8&qid=1326618572&sr=8-2

Viết một ngôn ngữ là một bài tập tuyệt vời trong khoa học máy tính. Tuy nhiên, nếu điều này là cho một dự án hoặc sản phẩm thực sự, sau đó giống như những người khác đã nhận xét, lời khuyên chuyên nghiệp của tôi là: Đừng làm điều đó nếu bạn không thực sự phải làm vậy. Đây là một khoản đầu tư thời gian tiềm năng rất lớn mà bạn đang cân nhắc và bạn tự hỏi mình: Tôi sẽ nhận được những lợi ích gì từ ngôn ngữ của chính mình mà tôi không thể tìm thấy trong các ngôn ngữ hiện có miễn phí như Lua và Python, và những lợi ích đó đáng giá bao nhiêu tháng mà nó cần phải thực hiện?

Và đừng quên các công cụ. Nếu bạn đang viết một ngôn ngữ mà bạn định sử dụng cho người khác, bạn cần rất nhiều tài liệu và công cụ, công cụ, công cụ. Bạn gần như chắc chắn sẽ muốn một trình gỡ lỗi cấp nguồn ít nhất, và viết một trình gỡ lỗi tốt có thể mất miễn là viết ngôn ngữ chính nó!

Nếu tất cả những gì bạn muốn là ngôn ngữ để tạo mẫu trò chơi nhanh, thì Lua có khả năng phù hợp hơn với nhu cầu của bạn và đi kèm với nhiều tài liệu, tài liệu và công cụ hiện có.

3

Một vài bài báo cũ vẫn còn tốt đọc, nếu bạn có thể tìm thấy chúng:

  • M. Abrash, D. Illowsky, "Cuộn minilanguages ​​của riêng bạn với mini-dịch viên", Tạp chí của Tiến sĩ Dobb 14 (9) (tháng 9 năm 1989) 52–72.
  • J. Bentley, "Lập trình ngọc trai: ít ngôn ngữ", Truyền thông của ACM 29 (1986) 711–721.
  • D. Betz, "Ngôn ngữ được nhúng", Byte 13 # 12 (tháng 11 năm 1988) 409–416.
  • D. Betz, "Ngôn ngữ hướng đối tượng nhỏ bé của riêng bạn", Tạp chí Dr. Dobb 16 (9) (tháng 9 năm 1991) 26–33.
  • N. Franks, "Thêm ngôn ngữ mở rộng cho phần mềm của bạn", Tạp chí Dr. Dobb 16 (9) (tháng 9 năm 1991) 34–43.
  • R. Valdés, "Ít ngôn ngữ, câu hỏi lớn", Tạp chí Dr. Dobb 16 (9) (tháng 9 năm 1991) 16–25.

Xem thêm Bob: A Tiny Object-Oriented Language bởi Betz. Các nguồn mới nhất cho BOB có sẵn tại http://www.xlisp.org/.

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