2010-06-25 36 views
5

Tôi muốn nhận tệp .java, nhận ra lớp đầu tiên trong tệp và nhận thông tin về chú thích, phương thức và thuộc tính từ lớp này.Phân tích lớp Java từ Perl hoặc Python

Có mô-đun nào ở cả hai ngôn ngữ đã thực hiện điều đó không? Tôi có thể xây dựng một regexp đơn giản để làm điều đó cũng có, nhưng tôi không biết làm thế nào để nhận ra trong regexp các niềng răng cho thấy sự kết thúc của lớp/phương pháp.

+4

Không, regex không phù hợp cho việc này. Hãy xem xét 'lớp Foo {String s =" không phải là một @Annotation ở đây "; } '. –

+0

Ok, vì vậy tôi sẽ phải sử dụng ngữ pháp hoặc một automata để làm điều đó. Có bất kỳ mô-đun perl/python nào có thể giúp tôi thực hiện việc này không? – Rafael

+0

@Bart Trên thực tế, bạn có thể regex để không xem xét điều trong dấu ngoặc kép. Vấn đề là với niềng răng, một khi bạn không thể thực sự đếm bao nhiêu mở và đóng niềng răng đã xảy ra cho đến nay trong một regex. –

Trả lời

2

Nếu bạn tải các lớp java bên trong Jython, bạn có thể sử dụng nội tâm để tìm thông tin bạn cần.

0

Tại sao bạn cố gắng điều này trong perl/python thay vì chỉ sử dụng chương trình nhận biết javadoc có thể lấy thông tin?

0

tôi sẽ đề nghị Inline::Java cho truy cập lớp Java từ Perl, khi bạn đã có giao diện chạy, bạn có thể dễ dàng truy cập vào các phương pháp và các thuộc tính từ lớp.