pyPEG

Phần mềm chụp màn hình:
pyPEG
Các chi tiết về phần mềm:
Phiên bản: 2.4.1
Ngày tải lên: 14 Apr 15
Nhà phát triển: Volker Birk
Giấy phép: Miễn phí
Phổ biến: 108

Rating: 1.3/5 (Total Votes: 3)

Python là một ngôn ngữ kịch bản tốt đẹp. Nó thậm chí còn cung cấp cho bạn truy cập để phân tích cú pháp và trình biên dịch riêng của nó. Nó cũng cung cấp cho bạn truy cập để phân tích cú pháp khác nhau cho các mục đích đặc biệt như XML và chuỗi mẫu.
Nhưng đôi khi bạn có thể muốn có phân tích cú pháp của riêng bạn. Đây là những gì pyPEG cho.
Để có được một cái nhìn nhanh chóng về những gì đang xảy ra, hãy đọc bài viết này về cách phân tích một ngôn ngữ tùy ý để XML với pyPEG trên blog của tôi.
PEG là gì?
PEG có nghĩa là phân tích cú pháp biểu thức ngữ pháp. Đó là một cái gì đó giống như ý tưởng của biểu thức thường xuyên cho bối cảnh ngôn ngữ miễn phí; một lời giải thích rất rõ ràng, bạn sẽ tìm thấy trong các bài viết Wikipedia về PEG.
Với chốt bạn có thể mô tả các ngôn ngữ tương tự như với BNF (và họ thậm chí tương tự).
một Parser-Phiên dịch là gì?
Phân tích cú pháp thông thường không sử dụng cọc và top-down phân tích cú pháp, nhưng LR (n) hoặc LL (n) và phân tích cú pháp dưới lên. Điều này dẫn đến ý tưởng thực hiện phát điện phân tích cú pháp.
Bởi vì với LR (n) hoặc LL (n) phân tích cú pháp, bạn cần phải tính toán ra một DFA đầu tiên, thông thường bạn hãy để máy phát điện phân tích cú pháp làm điều này cho bạn. Kết quả là một việc thực hiện phân tích cú pháp văn phạm BNF của bạn, đó là đầu vào. Người ta có thể gọi là một máy phát điện phân tích cú pháp một trình biên dịch từ BNF để thực hiện một phân tích cú pháp.
Một Parser-Phiên dịch làm việc như một thông dịch viên thay vì là một trình biên dịch như vậy. Chỉ cần cung cấp ngữ pháp của bạn như là đầu vào, và nó phân tích ngôn ngữ mô tả trong văn bản. Sẽ không có chương trình tạo ra.
Sử dụng pyPEG
Điều đó có nghĩa là: sử dụng pyPEG là rất dễ dàng;-) Nếu bạn biết biểu thức thông thường đã có, bạn sẽ học cách sử dụng pyPEG nhanh chóng.
Một mẫu nhỏ
Một ví dụ: suy nghĩ của một ngôn ngữ đơn giản như thế này:
chức năng FAK (n) {
& Nbsp; if (n == 0) {// 0! là 1 theo định nghĩa
& Nbsp; return 1;
& Nbsp;} else {
& Nbsp; return n * FAK (n - 1);
& Nbsp;};
}
Một pyPEG cho ngôn ngữ đó trông giống như các mã sau đây (xem thêm các kịch bản mẫu):
def comment (): return [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
def chữ (): trả về re.compile (".? *" r'd * .d * | | d + ')
biểu tượng def (): trả về re.compile (r "w +")
điều hành def (): trả về re.compile (r "+ | - | * | / | ==")
hoạt động def (): biểu tượng trở lại, nhà điều hành, [nghĩa đen, functioncall]
biểu def (): return [đen, hoạt động, functioncall]
def expressionlist (): trả về biểu hiện, -1, (",", biểu thức)
def returnstatement (): từ khóa return ("trở lại"), biểu hiện
def ifstatement (): Từ khoá return ("nếu"), "(", biểu hiện, ")", khối, từ khóa ("khác"), khối
tuyên bố def (): return [ifstatement, returnstatement], ";"
block def (): return "{", -2, tuyên bố, "}"
def ParameterList (): return "(", biểu tượng, -1, (",", biểu tượng), ")"
def functioncall (): trả về biểu tượng, "(", expressionlist, ")"
chức năng def (): Từ khoá return ("chức năng"), biểu tượng, ParameterList, khối
def simpleLanguage (): trả lại chức năng

là gì mới trong phiên bản này:

  • Đây là một phát hành dọn dẹp. Mã của parse () và soạn () đã được cố định.

là gì mới trong phiên bản 1.4:

  • Phiên bản này sửa chữa một số lỗi với packrat phân tích cú pháp

là gì mới trong phiên bản 1.3:

  • Thay thế các tuple cho tên trong pyAST bởi các Symbol (danh sách ) đẳng cấp, mà là khá tương thích, nhưng hỗ trợ mã mô tả nhiều hơn trong phần phụ trợ trình biên dịch, quá.

là gì mới trong phiên bản 1.2:

  • Bugs với Unicode trong việc xử lý lỗi đã được cố định

là gì mới trong phiên bản 1.1:.

  • hỗ trợ Unicode đã được bổ sung

là gì mới trong phiên bản 0,46:.

  • pyPEG.print_trace True
  • Chuyển đổi pyPEG để Python 3.x tại công trình liền mạch sử dụng 2to3
  • Các quy tắc ngữ pháp được áp dụng có thể được truy tùy chọn bằng cách thiết lập
  • pyPEG sẽ ra dấu vết này để stderr.

là gì mới trong phiên bản 0.45:.

  • Sửa lỗi

là gì mới trong phiên bản 0.44:

  • pyPEG nay trang trí từng đối tượng pyAST với tên tập tin nguồn và dòng số.

Yêu cầu :

  • Python

Phần mềm tương tự

Zsh
Zsh

17 Feb 15

Pyastra
Pyastra

3 Jun 15

Phần mềm khác của nhà phát triển Volker Birk

YML
YML

11 May 15

Ý kiến ​​để pyPEG

Bình luận không
Nhập bình luận
Bật hình ảnh!