나는 indendation에 민감한 언어에 대한 문법을 생각하고 있었고 CF 문법이 매개 변수와 결합되면 트릭을 수행하는 것처럼 보입니다. 예를 들어, ANTLR과 유사한 형식의 단순화 된 Python 문법에 대해이 단편을 고려하십시오.
// 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)에 이름이 있습니까?
이 문법에 대해 재귀 강하 파서를 작성하는 것이 어렵지 않은 것으로 보입니다 (매개 변수는 기본적으로 파서이어야 함). 이 접근법의 어려움은 무엇입니까?
매개 변수를 추가하면 지원되는 언어 클래스가 컨텍스트없이 증가합니까?