ฉันคิดถึงไวยากรณ์สำหรับภาษาที่มีความอ่อนไหวและดูเหมือนว่าไวยากรณ์กรัมจะทำเคล็ดลับถ้ารวมกับพารามิเตอร์ ลองพิจารณาตัวอย่างนี้สำหรับไวยากรณ์ Python ที่ง่ายขึ้นในรูปแบบ 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 ' ')+)
;
คำถามของฉัน: ไวยากรณ์ประเภทนี้ (CFG พร้อมพารามิเตอร์) มีชื่อหรือไม่
ดูเหมือนว่ามันจะไม่ยากที่จะเขียนตัวแยกวิเคราะห์โคตรซ้ำสำหรับไวยากรณ์นี้ (พารามิเตอร์ควรเป็นตัวแยกวิเคราะห์โดยทั่วไป) อะไรคือปัญหาของวิธีนี้?
การเพิ่มพารามิเตอร์เพิ่มระดับภาษาที่รองรับด้านบนโดยไม่มีบริบทหรือไม่