2011-12-31 35 views
5

Tôi biết cách nhúng Lua bằng các ngôn ngữ khác, nhưng tôi muốn chỉ sử dụng lại trình phân tích cú pháp để phân tích mã và cho tôi kết quả như AST chẳng hạn. Cách dễ nhất để làm điều đó với nền tảng Lua là gì?Cách tốt nhất để tái sử dụng trình phân tích cú pháp Lua là gì?

Cảm ơn!

+2

Trình phân tích cú pháp lua không tạo AST - mã nguồn chuyển một lần từ văn bản sang bytecode –

+0

Điều đó có nghĩa là điều tôi muốn là không thể? Không thể sử dụng lại trình phân tích cú pháp? – CharlesS

+1

Bạn muốn làm gì với AST? – lhf

Trả lời

3

Có người đã thực hiện một ngữ pháp ANTLR cho ngôn ngữ Lua:

http://www.antlr3.org/grammar/1178608849736/Lua.g

Hoặc nếu bạn đang sử dụng ANTLR v4:

https://github.com/antlr/grammars-v4/blob/master/lua/Lua.g4

Tôi đã sử dụng ANTLR về một cặp vợ chồng dự án có kết quả tốt. Nó sẽ tạo một trình phân tích cú pháp C (ANTLR v3) hoặc C++ (ANTLR v2) bao gồm tạo ra AST nếu bạn yêu cầu nó.

+1

Tại sao v2 tạo C++ trong khi v3 tạo C? –

+2

Và câu hỏi thú vị. v2 có một số mục tiêu, bao gồm C++, Java và C#. v3 hỗ trợ C, Java, C#, Python và Objective C. Trong khi nó có thể được rõ ràng lý do tại sao họ thêm Python và Objective C, nó không phải như vậy rõ ràng lý do tại sao họ bị bỏ rơi C + +. Một người bảo trì ANTLR đã nói vài lần rằng anh ta viết một mục tiêu C++ cho ANTLR v3, nhưng chưa bao giờ. Có thể những người khác chưa thử vì cookie bị ướt (http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx). Làm thế nào mà mục tiêu C++ từ v2 "biến mất" từ v3? Đó là vì họ đã thiết kế lại API mục tiêu để giúp dễ dàng thêm ngôn ngữ. –

+0

@JohnZwinck Liên kết dường như không hoạt động. –

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