Tôi sử dụng các lớp Lexer và Parser được tạo bởi công cụ ANTLR (nhắm mục tiêu C#). Giả sử tôi đã phân tích cú pháp một số mã và có một cây AST cho nó. Điều gì xảy ra nếu một phần mã ban đầu của tôi đã thay đổi và tôi muốn cập nhật các phần tương ứng của cây? Có cách nào phổ biến để làm điều đó? Ví dụ: một dòng mã được chèn vào bên trong một số hàm chức năng. Và tôi muốn xây dựng lại chỉ một phần của cây đại diện cho chức năng này và cập nhật vị trí của các mã chức năng tiếp theoCây AST của ANTLR cập nhật
5
A
Trả lời
1
Có một vài dự án ngoài đó thực hiện những gì bạn có thể muốn thực hiện. Nhưng tôi không biết liệu ANTLR có hỗ trợ điều này hay không. Bạn có thể xem: http://en.wikipedia.org/wiki/Incremental_compiler
Để chỉ đề xuất đánh dấu cú pháp, tôi khuyên bạn nên sử dụng cụm từ thông dụng cho mã thông báo khác trong cú pháp của bạn. (Nếu bạn cập nhật chỉ dòng bạn đang làm việc trên bạn sẽ không nhận được bất kỳ vấn đề hiệu suất.)
Các vấn đề liên quan
- 1. quy tắc ANTLR AST thất bại với RewriteEmptyStreamException
- 2. Python: sao chép sâu cây nút ast
- 3. Tìm hiểu các cây trong ANTLR
- 4. cách dễ nhất để cập nhật một AST bất biến là gì?
- 5. C# ANTLR ngữ pháp?
- 6. Tạo một cây cú pháp trừu tượng cho mã nguồn java bằng cách sử dụng ANTLR
- 7. Mô hình khách truy cập cho AST
- 8. Hướng dẫn cho đi bộ AST ASTR trong C#?
- 9. Máy chủ SQL: cập nhật cột trong một cây
- 10. Ngoại lệ xử lý Antlr
- 11. Scala AST trong Scala
- 12. Trình phân tích cú pháp cây trong ANTLR là gì và tôi có bị buộc phải viết một cái không?
- 13. API để so sánh AST?
- 14. Truy cập cây cú pháp trừu tượng của động cơ V8
- 15. Mục tiêu JavaScript ANTLR
- 16. Ghé thăm các nút trong cây cú pháp với mô-đun ast Python
- 17. ANTLR "kết thúc không mong muốn của subtree"
- 18. Làm cho đầu ra YACC là một AST (cây mã thông báo)
- 19. Parse HQL để cấu AST và chuyển đổi AST trở lại HQL
- 20. Dịch mã C# sang AST?
- 21. Clang: AST (cây cú pháp trừu tượng) trông như thế nào?
- 22. Python ast to dot graph
- 23. Cập nhật múi giờ cập nhật PostgreSQL
- 24. Sử dụng AST Eclipse
- 25. ADVANCAGE của JavaCC so với ANTLR
- 26. tập tin cập nhật trong một cái lọ ném ZipException
- 27. NGÀY CẬP NHẬT CẬP NHẬT làm gì?
- 28. ANTLR ClassCastException
- 29. Làm cách nào để cập nhật mô hình cây bập bênh?
- 30. Chuyển đổi cây cú pháp trừu tượng sang mã byte
Sau khi bạn đã thay đổi cây, bạn muốn làm gì tiếp theo? Tôi giả sử, tạo lại văn bản nguồn. Với nhận xét? Bố cục gốc? ...? –
Tôi chỉ muốn có cây AST có liên quan. Hãy nói rằng tôi muốn quản lý intellisense cho một số IDE – Natalia
Làm thế nào bạn sẽ biết những gì các bộ phận của AST của bạn thực sự bị ảnh hưởng bởi sự thay đổi? – stryba