Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Bao đóng tập mục LR(0)

    Cho một văn phạm phi ngữ cảnh gồm các ký hiệu chưa kết thúc là chữ cái in hoa (A-Z, mỗi ký hiệu 1 ký tự) và các ký hiệu kết thúc là các token khác. Luật sinh rỗng (sinh ra ε\varepsilonε) được ghi là A -> eps.

    Với một tập mục hạt nhân (kernel items) ban đầu, hãy tính bao đóng (closure) của tập mục đó theo đúng thuật toán chuẩn: lặp lại — với mỗi mục A→α . BβA \to \alpha \,.\, B\betaA→α.Bβ trong tập hiện tại mà BBB là ký hiệu chưa kết thúc, với mọi luật sinh B→γB \to \gammaB→γ của văn phạm, thêm mục B→. γB \to .\,\gammaB→.γ vào tập (nếu chưa có) — cho đến khi tập không đổi (điểm bất động). Với luật sinh rỗng B→εB \to \varepsilonB→ε, mục được thêm là B -> . (dấu chấm đứng một mình).

    Ví dụ: văn phạm gồm E -> E + T, E -> T, T -> T * F, T -> F, F -> ( E ), F -> id; với hạt nhân {E -> . E + T}, bao đóng thu được gồm 6 mục (đã sắp xếp theo thứ tự từ điển của chuỗi biểu diễn mục): E -> . E + T, E -> . T, F -> . ( E ), F -> . id, T -> . F, T -> . T * F.

    • Định dạng đầu vào:

      Dòng đầu là PPP (1≤P≤301 \le P \le 301≤P≤30) — số luật sinh của văn phạm. PPP dòng tiếp theo, mỗi dòng dạng A -> X1 X2 ... Xk (nếu k=0k=0k=0, ghi A -> eps). Dòng tiếp theo là KKK (1≤K≤101 \le K \le 101≤K≤10) — số mục hạt nhân. KKK dòng tiếp theo là các mục hạt nhân dạng A -> ... . ... (đúng một dấu chấm trong vế phải, có thể ở đầu, giữa, hoặc cuối; một mục ứng với luật sinh rỗng trong hạt nhân được ghi trực tiếp là A -> .).

    • Định dạng đầu ra:

      In ra dòng đầu là MMM — tổng số mục trong bao đóng. MMM dòng tiếp theo là các mục, mỗi mục theo định dạng A -> t1 t2 . t3 ... (nếu vế phải rỗng thì in A -> .), được sắp xếp tăng dần theo thứ tự từ điển (so sánh chuỗi ký tự) của toàn bộ chuỗi biểu diễn mục.

    Ví dụ:

    Đầu vào:

    6
    E -> E + T
    E -> T
    T -> T * F
    T -> F
    F -> ( E )
    F -> id
    1
    E -> . E + T

    Đầu ra:

    6
    E -> . E + T
    E -> . T
    F -> . ( E )
    F -> . id
    T -> . F
    T -> . T * F
    

    Đầu vào:

    4
    S -> A B
    A -> a A
    A -> eps
    B -> b
    1
    S -> . A B

    Đầu ra:

    3
    A -> .
    A -> . a A
    S -> . A B
    

    Đang tải editor...