Tôi có cùng một câu hỏi như PEG for Python style indentation, nhưng tôi muốn nhận thêm một chút hướng liên quan đến this answer.Cấp độ thụt lề phân tích cú pháp với PEG.js
Câu trả lời tạo thành công một chuỗi các chuỗi là mỗi dòng đầu vào có 'INDENT' và 'DEDENT' giữa các dòng. Có vẻ như anh ấy đã sử dụng khá nhiều PEG.js để mã hóa, nhưng không có phân tích cú pháp thực sự nào đang xảy ra.
Vậy làm cách nào để tôi có thể mở rộng ví dụ của mình để thực hiện phân tích cú pháp thực tế?
Như một ví dụ, làm thế nào tôi có thể thay đổi ngữ pháp này:
start = obj
obj = id:id children:(indent obj* outdent)?
{
var o = {};
o[id] = children[1];
return (children[1] ? o : id);
}
id = [a-z]
indent = '{'
outdent = '}'
sử dụng thụt đầu dòng thay vì niềng răng khoanh định các khối, và vẫn nhận được đầu ra giống nhau không?
(Sử dụng http://pegjs.majda.cz/online để kiểm tra ngữ pháp mà với đầu vào sau: a{bcd{zyx{}}}
)
Tôi thực sự đánh giá cao điều này anwser. Làm thế nào để bạn đến với phương pháp này xin vui lòng? – jiyinyiyong
Nếu tôi sao chép/dán trực tiếp vào http://pegjs.majda.cz/online thì nó sẽ không biên dịch. Và sau khi một số tinh chỉnh nó không phải là rõ ràng làm thế nào để "sửa chữa" nó. – Clearly
Chỉ cần thử nghiệm này, đoạn mã biên dịch và sản xuất sản lượng dự kiến tốt. Không chắc chắn bạn đã nhấn vào lỗi nào. – chakrit