2009-03-28 25 views
5

Tôi muốn phân tích cú pháp nguồn REXX để tôi có thể phân tích cấu trúc của chương trình từ Java.Làm cách nào để phân tích cú pháp mã REXX trong Java?

Tôi cần làm những việc như bình thường hóa cấu trúc logic tương đương trong nguồn khác biệt về cú pháp, tìm các khai báo biến trùng lặp, v.v ... và tôi đã có nền Java.

Bất kỳ cách nào dễ dàng hơn để thực hiện việc này hơn là viết một tải mã?

Trả lời

5

Nếu bạn có BNF Rexx ngữ pháp, sau đó javacc có thể giúp bạn xây dựng một AST (Abstract Syntax Tree) đại diện của mã Rexx.

Chính xác hơn, javacc sẽ xây dựng lớp Java đó sẽ:

  • phân tích cú pháp Rexx mã và
  • thực sự xây dựng AST.

Vẫn sẽ có "tải mã", nhưng bạn sẽ không phải là người thực hiện việc viết các lớp cho trình phân tích cú pháp mã Rexx đó. Chỉ thế hệ của nó.

1

Có một cái nhìn tại ANTLR, nó thực sự làm một công việc tốt đẹp của việc xây dựng một AST, chuyển đổi nó ... Nó có một trình soạn thảo đẹp (ANTLRWorks), được xây dựng trên Java, và có thể gỡ lỗi trình phân tích cú pháp/cây của bạn trong khi chúng chạy trong ứng dụng của bạn. Thực sự đáng nghiên cứu cho bất kỳ loại công việc phân tích cú pháp nào.

8

REXX không phải là một ngôn ngữ dễ dàng để phân tích cú pháp với các công cụ phổ biến, đặc biệt là những công cụ mong đợi ngữ pháp BNF. Không giống như hầu hết các ngôn ngữ được thiết kế bởi những người tiếp xúc với C, REXX không có bất kỳ từ dành riêng, làm cho nhiệm vụ hơi phức tạp. Mỗi cụm từ trông giống như một từ dành riêng thực sự chỉ được giải quyết trong ngữ cảnh cụ thể của nó (ví dụ:, "PULL" chỉ được đặt làm từ đầu tiên của lệnh PULL hoặc từ thứ hai của lệnh PARSE PULL - bạn cũng có thể có biến được gọi là PULL ("PULL = 1 + 2")). Ngoài ra còn có một số hiệu ứng rất đáng ngạc nhiên của các bình luận. Nhưng ANSI REXX standard có cú pháp đầy đủ và tất cả các quy tắc.

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