Khi không gắn với chỉ Java, bạn có thể sử dụng trình phân tích cú pháp PEG của ngôn ngữ khác hoặc Rebol (có phương ngữ "phân tích cú pháp" tương đương PEG) - hoặc quay lại WAY trở lại biểu tượng hoặc Unicon hoặc ngay bây giờ tại code.google.com/p/objecticon
Đó là thời điểm đáng tiếc khi tôi nhận ra rằng ngôn ngữ nội dung web MIT Curl (www.curl.com) đã chọn regexp cho người dùng mặc dù Curl có macro và cung cấp quyền truy cập đến một AST.
chủ đề chung: Ngữ pháp biểu thức phân tích cú pháp (PEG) và phân tích cú pháp đóng gói nói chung.
Sử dụng Perl đã thừa kế PCRE của chúng tôi, vì vậy chúng tôi có thể làm gì nhưng tránh khi không cần thiết (có antlr và bison ...và không nghi ngờ gì nữa, chúng cũng có vị trí phù hợp dễ dàng)
Lưu ý: Rebol, Icon và Curl là ngôn ngữ dựa trên biểu thức (Biểu tượng có hạn chế theo dõi lại).
tùy chọn out-một-cách khác bao gồm Oz và Mercury (sau lon ra erlang)
Tôi không sử dụng pyPEG bởi vì tôi đang giới hạn trong Python 2.6.6; phân vùng python Lepl không còn được hỗ trợ - nhưng sẽ cài đặt cho 2.6
Tùy chọn phân tích cú pháp trong Python bao gồm YAPPS tại http://theory.stanford.edu/~amitp/yapps/ và nhiều thứ khác; lưu ý: pyparsing thất bại trong việc cài đặt trong một số trăn env của
Và đối với Scala/Java có dự án PEG này: https://github.com/sirthias/parboiled/wiki
Bạn có thể tìm thấy một equiv Java để peg và chân mỗi http://piumarta.com/software/peg/
CiteSeer có Ralph Bài viết của Becket về phân tích cú pháp đóng gói và Mercury (google cho trang web phân tích cú pháp PEG: psu.edu)
Ngoài ra còn có một loạt 3 bài đăng trên blog trong blog AdventuresInMercury.
Có, antlr là giải pháp. Bạn không nên sử dụng regex để nâng cao khả năng phân tích cú pháp ngôn ngữ. Một ví dụ rất tốt là trong ngăn xếp tràn - http://stackoverflow.com/questions/1931307/antlr-is-there-a-simple-example –
Thông thường, các ngôn ngữ tùy chỉnh này cho các mục đích cụ thể được gọi là [Ngôn ngữ cụ thể của miền] (http : //en.wikipedia.org/wiki/Domain-specific_language). –