Tôi đã nghĩ về ngữ pháp cho các ngôn ngữ nhạy cảm với sự thay đổi và có vẻ như các ngữ pháp CF sẽ thực hiện thủ thuật nếu kết hợp với các tham số. Ví dụ, xem xét đoạn này cho ngữ pháp Python đơn giản hóa ở định dạng giống ANTLR:
// on top-level the statements have empty indent
program
: statement('')+
;
// let's consider only one compound statement and one simple statement for now
statement(indent)
: ifStatement(indent)
| passStatement(indent)
;
passStatement(indent)
: indent 'pass' NEWLINE
;
// statements under if must have current indent plus 4 spaces
ifStatement(indent)
: indent 'if' expression ':' NEWLINE (statement(indent ' ')+)
;
Câu hỏi của tôi: Loại ngữ pháp này (CFG với các tham số) có tên không?
Có vẻ như sẽ không khó để viết một trình phân tích cú pháp gốc đệ quy cho ngữ pháp này (về cơ bản nên là các trình phân tích cú pháp). Điều gì có thể là những khó khăn với phương pháp này?
Việc bổ sung các tham số có nâng lớp ngôn ngữ được hỗ trợ lên trên không ngữ cảnh không?