2010-04-01 5 views

답변

4

섬 문법 취급 하나입니다 대부분의 언어는 텍스트 물결 ("물")이며 문법 규칙 ("섬")을 사용하여 구문 분석하려는 관심 분야의 일부를 선택합니다. 예를 들어, C# 프로그램에서 찾은 모든 표현식을 선택하고 변수/메소드/클래스 선언 및 명령문 구문 (if, while, ...)을 무시하도록 아일랜드 문법을 작성하도록 선택할 수 있습니다.

진짜 질문은 "섬 문법을 사용해야합니까?"입니다.

긍정적 인 혜택 :

  • 당신은 당신이 처리 할 언어에 대한 완전한, 완벽한 문법을 ​​작성할 필요가 없습니다.

단점은 :

  • 항상 관심의 소스의 부분을 선택하는 것은 쉽지 않다. 예를 들어, 아일랜드 문법이 모든 주석을 상세하게 엮어 놓지 않는 한 어떻게 섬 문법이 주석 블록을 선택하지 않도록 할 수 있습니까? 아일랜드 문법의 요점은 그런 종류의 세부 사항에 들어가는 것을 피하는 것이 었습니다.

  • 섬 문법 만 사용하면 문제를 집중적으로 파악할 수 있습니다. 문제가 움직이면 섬 문법도 바뀌어야 할 수도 있습니다. 항상 쉬운 것은 아닙니다.

  • 프로그램 조작에서 가장 흥미로운 문제는 구문 (예 : "구문 분석")뿐만 아니라 조작 할 수있는 종류의 트리를 작성할 수 있어야하지만 기호의 의미를 결정할 수 있어야한다는 것입니다 . 섬 문법을 사용하면 블록이나 선언문 등의 모든 구문을 포함시키지 않는 한 효율적으로 작성할 수 있습니다. 섬 문법은 아니지만 대륙 문법은 갑자기 어둡습니다. . 그리고 그 정말 당신이 할 수있는 일을 제한합니다.

나는 편견을 가지지 만, 나는 이런 종류의 일을 오랫동안 해왔다. 나는 섬 문법이 그다지 유용하지 않다고 믿습니다. 내가 제안하는 대안은 일반적인 토대를 기반으로 여러 언어에 대해 상환 된 비용 파서이며, DMS Software Reengineering Toolkit이라고합니다.

YMMV.