BNF에서 설명 할 수없는 파일 형식이 있습니까?이론적으로 BNF는 모든 파일 형식을 설명하기에 충분합니까?
답변
아니요, BNF가 충분하지 않습니다. BNF는 context-free grammars을 설명합니다. 모든 상상할 수있는 문법에 근접하지는 않습니다. 거의 모든 프로그래밍 언어, 대부분의 경우 제정신이 아닌 데이터 직렬화 형식 등이 있습니다. 은 문맥에 관계없이이지만 이론에 대해 물어 본 결과 대답은 아니오입니다. 처음에는 context-sensitive grammars이 있습니다. 이름이 알려지지 않은 경우 문맥이없는 문법으로 표현할 수 없습니다. 간단한 예가 n
번 a
이고 그 다음에 n
번 b
이 이어지고 n
번 c
(각각에 대해 n
과 같음)이 될 것입니다.
또한 문법은 문법이나 구문만을 설명합니다. 파일 형식에 따라 유효 형식 (유효 형식)의 데이터가 필요합니다. 예를 들어 프로그래밍 언어의 형식 검사를 생각하십시오. 문맥 - 자유 문법이나 그 문법에 대한 대부분의 문법으로는 그러한 의미 제약을 기술 할 수 없다. 이론적으로 복잡한 작업이있을 수 있습니다. 물론 이에 상응하는 것은 비실용적입니다.
예. BNF는 문맥 자유 문법만을 기술한다. 파일에 고유 한 구.에 대한 설명이 들어 있으면 해당 파일을 읽는 규칙을 BNF에서 표 현할 수 없습니다. 이를 위해 튜링 기계가 필요합니다. 마찬가지로, 파일을 수락하거나 거부하는 결정이 푸시 다운 오토 마 타로 표현 될 수 없다면 bnf는 작동하지 않을 것입니다.
BNF는 예를 들어 영어 구문을 완벽하게 설명 할 수 없습니다.
'ELF' 나'PE'와 같은 파일 형식을 설명하는 데 사용할 수 있습니까? –
아니요. 확실히 PE가 아니며 (아마도 엘프가 아닙니다). PE 파일을 읽으려면 포인터를 역 참조해야합니다. ELF 파일도 상상할 수 있습니다 (PE 독자/작성자를 작성했기 때문에 확신합니다. 그러나 ELF 형식을 깊이 보지 않았습니다). 그것은 BNF에서 표현 될 수 없습니다. PE 파일을 읽는 대부분의 일을하기 위해 꽤 쉽게 손으로 쓰는 재귀 적 하강을 작성할 수 있습니다. –
당신은'PE 파일을 읽는 대부분의 일을하기 위해 손쉽게 재귀 적으로 작성된 손을 작성할 수 있습니다. ' –
- 1. 교리의 BNF는 무엇입니까?
- 2. 모든 파일 형식을 지원하는 Alfresco 문서 관리?
- 3. PHP가 모든 파일 형식을 다운로드 중입니다
- 4. .exe를 제외한 모든 파일 형식을 차단하는 방법
- 5. 모든 공통 언어에 대해 UTF-8이면 충분합니까?
- 6. 모든 버전 또는 최신 버전을 설치하면 충분합니까?
- 7. 이론적으로 .NET 어셈블리를 조작하여 모든 것이 공개되도록 할 수 있습니까?
- 8. 파일 형식을 어떻게 확인합니까?
- 9. 파일 형식을 확인 하시겠습니까?
- 10. 헤더에서 파일 형식을 식별합니까?
- 11. 파일 형식을 정의하려면 어떻게해야합니까?
- 12. SQLite로 충분합니까?
- 13. 지정한 파일 형식을 처리하는 모든 응용 프로그램 나열
- 14. SharePoint 2010, 모든 자습서에서 파일 형식을 제한하는 방법
- 15. .Net 모든 주요 파일 형식을 PDF로 변환하는 구성 요소
- 16. 파일 형식을 지정하는 좋은 방법
- 17. 얼마나 많은 테스트가 충분합니까?
- 18. HTML 파일 형식을 사용하여 파일 업로드
- 19. GXT의 파일 업로드가 특정 파일 형식을 구별합니다.
- 20. 파일 업로드의 파일 형식을 어떻게 확인합니까?
- 21. 파일 형식을 브라우저에 등록 하시겠습니까?
- 22. 웹 서버에서 파일 형식을 다운로드하십시오.
- 23. 웹 서비스 보안 - 충분합니까?
- 24. mysql_real_escape_string : 데이터베이스 보안만으로 충분합니까?
- 25. 얼마나 많은 콩이 충분합니까?
- 26. 인증서 : .cer 충분합니까?
- 27. REST에 대한 설명으로 충분합니까?
- 28. HTTPS가 양식의 동작으로 충분합니까?
- 29. 단위 테스트가 충분합니까?
- 30. 이 컨트롤러 사양으로 충분합니까?
'ELF' 및'PE'와 같은 파일 형식을 설명하는 데 사용할 수 있습니까? –