개강한 공대생 2024. 9. 8. 15:17

Linux에서는 공백을 허용하지 않는다.

예를 들어 다음과 같은 파일 이름이 있다고 해보자

filename with spaces and quotes 12.3.txt

우리가 BNF에 공백 문자("\"")를 정의해 놓아도 Linux는 이것을 6개의 식별자(identifier)로 본다.

 

근데 만약 escape 처리를 해놓으면 안전하게 공백을 처리할 수 있게 된다.

예를 들어 다음과 같이 말이다.

filename\ with\ spaces\ and\ quotes\ 12.3.txt

 

또한 BNF는 중복 처리적으로 한계가 있다.

예를 들어 다음과 같은 코드가 있다고 해보자

public public int x;

BNF 문법적으로 틀렸다고 하지는 않지만 실제로는 컴파일 오류가 난다..

BNF로는 이 중복 오류를 체크할 방법이 없다는 게 한계다.