Trả lời

8

Đây là cách tôi đã nhìn thấy hai thuật ngữ được sử dụng:

  1. đệ quy trái: khi một hoặc nhiều tác phẩm có thể đạt được từ bản thân không có thẻ tiêu thụ ở giữa.
  2. Bao thanh toán bên trái: một quá trình chuyển đổi, chuyển ngữ pháp từ dạng đệ quy sang trái sang dạng không đệ quy tương đương trái.
0

đệ quy trái: = khi thiết bị đầu cuối không dùng tay trái giống với thiết bị đầu cuối không dùng tay phải. Ví dụ: A-> A & | B trong đó & là alpha. Chúng tôi có thể loại bỏ ricursion trái bằng cách viết lại sản phẩm này như thế nào.

A-> BA' A '-> & A' |

Left yếu tố có ý nghĩa productn không nên không xác định. . Ví dụ: A-> & A | & B | & C

11

Hệ số còn lại là một kỹ thuật chuyển đổi ngữ pháp. Nó bao gồm trong "tiền tố ra" tiền tố được phổ biến cho hai hoặc nhiều sản phẩm.

Ví dụ, đi từ:

A -> α β | α g

tới:

A -> α A '

A' -> β | γ


Left Recursion là một tài sản một ngữ pháp có bất cứ khi nào bạn có thể bắt nguồn từ một biến nhất định (không ga) một RHS bắt đầu với cùng một biến, trong một hoặc nhiều bước.

Ví dụ:

A -> Một α

hoặc

A -> B α

B -> A γ

Có một kỹ thuật chuyển đổi ngữ pháp được gọi là Loại bỏ đệ quy trái, cung cấp phương thức tạo, đưa ra ngữ pháp đệ quy trái, ngữ pháp khác tương đương và không được đệ quy.


Mối quan hệ/nhầm lẫn giữa hai thuật ngữ có thể xuất phát từ thực tế cả hai kỹ thuật chuyển đổi có thể cần phải được áp dụng cho ngữ pháp trước khi có thể lấy được trình phân tích cú pháp từ trên xuống.

30

Việc bao thanh toán trái là loại bỏ yếu tố trái phổ biến xuất hiện trong hai sản phẩm của cùng một thiết bị không phải là thiết bị đầu cuối. Nó được thực hiện để tránh truy ngược lại bởi trình phân tích cú pháp. Giả sử trình phân tích cú pháp có vẻ ngoài, hãy xem xét ví dụ này-

A -> qB | qC
trong đó A, B, C không phải là thiết bị đầu cuối và q là một câu. Trong trường hợp này, trình phân tích cú pháp sẽ bị nhầm lẫn là sản phẩm nào trong hai sản phẩm được chọn và có thể phải theo dõi lại. Sau khi thanh toán trái, ngữ pháp được chuyển to-

A -> QĐ

D -> B | C

Trong trường hợp này, trình phân tích cú pháp với giao diện người dùng sẽ luôn chọn đúng quy trình sản xuất.

Phép đệ quy trái là trường hợp không phải thiết bị đầu cuối ngoài cùng bên trái trong quá trình sản xuất không phải là thiết bị đầu cuối không phải là thiết bị đầu cuối (đệ quy trực tiếp bên trái) hoặc thông qua một số định nghĩa không phải thiết bị đầu cuối khác, ghi lại thiết bị đầu cuối một lần nữa (gián tiếp trái gián tiếp). Hãy xem xét những ví dụ -

(1) A -> Aq (trực tiếp)

(2) A -> Bq B -> Ar (gián tiếp)

Left đệ quy phải được loại bỏ nếu phân tích cú pháp thực hiện từ trên xuống phân tích

2

Left đệ quy: một ngữ pháp còn lại đệ quy nếu nó có một không thuộc đầu cuối A sao cho có một nguồn gốc A -> Aα | β trong đó α và β là dãy các thiết bị đầu cuối và các điểm không bắt đầu bằng A.

Trong khi thiết kế trình phân tích cú pháp phía trên, nếu trình phân tích trái tồn tại trong ngữ pháp thì trình phân tích cú pháp rơi vào vòng lặp vô hạn, tại đây vì A đang cố gắng kết hợp với bản thân A, điều đó là không thể. Chúng tôi có thể loại bỏ đệ quy trên bên trái bằng cách viết lại sản phẩm vi phạm.Như-

A -> βA '

A' -> αA' | epsilon

Hệ số còn lại: Yêu cầu thanh toán trái để loại trừ tính không xác định ngữ pháp. Giả sử một ngữ pháp, S -> abS | aSb

Ở đây, S đang lấy cùng một đầu cuối trong quy tắc sản xuất (hai lựa chọn thay thế cho S), theo sau sự không xác định. Chúng ta có thể viết lại sản xuất để trì hoãn các quyết định của S như-

S -> là '

S' -> BS | Sb

Như vậy, S' có thể được thay thế cho BS hoặc Sb

4

yếu tố còn lại:

Hãy ngữ pháp đưa ra: A -> AB1 | ab2 | ab3

1) chúng ta có thể thấy rằng, đối với mỗi lần sản xuất, có một tiền tố chung & nếu chúng tôi chọn bất kỳ sản xuất nào ở đây, chúng tôi không cần phải quay lại.
2) nó không xác định, bởi vì chúng tôi không thể chọn bất kỳ sản xuất và được đảm bảo rằng chúng tôi sẽ đạt được tại chuỗi mong muốn của chúng tôi bằng cách làm cho cây phân tích chính xác. nhưng nếu chúng tôi viết lại ngữ pháp theo cách xác định và cũng để chúng tôi đủ linh hoạt để làm cho chuỗi đó trở thành có thể mà không cần quay lại .... nó sẽ là:

A -> aA ' , A '-> b1 | b2 | b3 bây giờ nếu chúng ta được yêu cầu tạo cây phân tích cho chuỗi ab2 .... chúng ta không cần theo dõi lại. Bởi vì chúng tôi luôn có thể chọn sản xuất chính xác khi chúng tôi nhận được A 'do đó chúng tôi sẽ tạo ra cây phân tích chính xác.

Đệ quy trái:

A -> Aa | b ở đây rõ ràng là con trái của A sẽ luôn là A nếu chúng ta chọn sản xuất đầu tiên, đây là đệ quy trái. Bởi vì, A đang tự gọi nó lặp đi lặp lại. chuỗi tạo ra từ ngữ pháp này là: ba * vì đây không thể ở trong một ngữ pháp ... chúng ta loại bỏ đệ quy trái bằng cách viết:

A -> Ba ' A' -> E | aA ' bây giờ chúng ta sẽ không có đệ quy trái và chúng ta cũng có thể tạo ra ba *.

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