2010-08-13 4 views
3

문법 사양과 의미 분석 간의 경계선이 어디에 궁금합니다. 더 나은 점은 세부 문법 설명을 사용하거나 의미론 단계에 대한 세부 정보를 남겨 두는 것입니다. 예를 들어, ENUM 타입, 즉문법 대 시맨틱 분석

enum X : int { a = 1 } 

지금 기본 유형에서 "유도"수와 C 번호 같은 OO 언어를 생각해야한다 (이 경우, 프리미티브 또는 프리미티브가 아닌 타입) 정확성베이스 - 중 enum 유형은 문법 검사 또는 의미 분석의 대상이 될 수 있습니까?

+0

이 책은 다른 계층에서 언어 기능을 구현 절충을 설명하는 좋은 일을 : 나는 인정해야하지만 http://pragprog.com/titles/tpdsl/language-implementation-patterns 내가 직접하지 확실 해요 이 질문을 다룹니다. – sarnold

+0

나는 그 책을 읽었고 그러한 정보가 부족해서 여기서 질문을하게되었다. 제 질문은 순전히 이론적이라고 생각합니다. 어떤 접근 방식이 더 좋은지 알고 싶습니다. –

답변

2

이것은 매우 광범위한 질문입니다. 여러 가지 고려 사항이 있으므로 모든 상황에서 한 전략이 다른 전략보다 우수하다고 간단하게 말하기는 어렵습니다. 그것은 당신의 목적과 나머지 언어의 정의에 달려 있습니다. 언어의 다른 부분이 본질적으로 구문 상 모호한 경우 (의미 정보를 사용하여 명확해야 함) 의미 론적 분석의 단계로 작업을 수행해야한다는 것은 명백합니다. 말했다

, 나는 가능한 한 빨리 모든 오류를 잡기의 팬이다. 귀하의 언어와 타겟이 유효하지 않은 의미 론적 표현을 구문 분석하여 의미없는 분석을 요구하지 않고 무효 한 프로그램을 거부 할 수 있다면, 나는 이것이 최선의 접근 방법이 될 것이라고 믿습니다.

기본적으로 잘못된 프로그램을 가능한 한 빨리 거부하고 문법 및 구문 분석기의 복잡성 및 문법 설명과 의미 분석 단계 간의 노력을 중복시킵니다. 나는 일방적으로 일을하는 것이 다른 것보다 낫다고 말할 수 있다고 믿지 않습니다.