Để làm nổi bật điều này, kiến thức của tôi về loại nội dung này là rất nhỏ.Đây có phải là ngữ pháp mơ hồ không? Tôi nên giải quyết nó như thế nào?
Dù sao thì, tôi đã phát triển ngữ pháp ngữ cảnh để mô tả cấu trúc của các biểu thức bất hợp pháp để tôi có thể tự dạy thuật toán phân tích CYK hoạt động như thế nào. Tôi hiểu làm thế nào một cấu trúc như vậy có thể làm việc chỉ với các biểu thức đại số infix, nhưng tôi không thể hiểu làm thế nào để phát triển một ngữ pháp có thể xử lý cả hai định nghĩa đơn nhất và nhị phân của toán tử "-".
Để tham khảo, đây là ngữ pháp tôi đã viết (trong đó S là biểu tượng start) trong CNF:
S -> x
A -> OS
S -> LB
B -> SR
S -> KS
O -> +
O -> -
O -> *
O ->/
O ->^
K -> -
L -> (
R ->)
Vấn đề là như thế nào CYK phân tích thuật toán có thể biết trước thời hạn hay không để quyết định giữa S -> KS và A -> OS khi nó gặp toán tử "-"? Ngữ pháp này có miễn phí nữa không? Và quan trọng nhất, vì ngôn ngữ lập trình có thể xử lý ngôn ngữ với cả dấu nhị phân và dấu trừ đơn, nên tôi phân tích cú pháp này như thế nào?
Gợi ý là người nhị phân luôn cần một số trước nó, trong khi con số đơn nhất là ở đầu hoặc trước bởi toán tử. – nus