Girintiye duyarlı diller için gramerler düşünüyordum ve CF gramerleri parametrelerle birleştirilirse hile yapacak gibi görünüyor. Örnek olarak, ANTLR benzeri formatta basitleştirilmiş Python dilbilgisi için bu parçayı düşünün:
// 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 ' ')+)
;
Benim sorum: Bu tür gramerlerin (parametreli CFG) bir adı var mı?
Bu dilbilgisi için özyinelemeli bir iniş ayrıştırıcısı yazmak zor olmayacaktır (parametreler temel olarak ayrıştırıcılar olmalıdır). Bu yaklaşımla ilgili zorluklar neler olabilir?
Parametrelerin eklenmesi, desteklenen dil sınıfını bağlamdan bağımsız hale getiriyor mu?