프로그래밍
15시간 전
0
C 언어의 문법적 모호성 문제를 중심으로, 저자는 C 파서 작성 시 겪는 여러 혼란스러운 구문 사례를 소개합니다. 특히 포인터 선언, 괄호를 포함한 선언과 함수 호출 구분, 익명 인자 선언, 형변환 연산자, 그리고 연산자의 위치(fixity) 등에서 발생하는 모호성을 상세히 설명하며, 이러한 문제들은 대부분 타입 테이블 구축 없이 해결하기 어렵다고 지적합니다.
저자는 우선순위 선택(prioritized choice) 방식을 사용해 일부 모호성을 휴리스틱하게 처리하는 방법을 제안하지만, 완전한 해결책은 아니라고 밝힙니다. 또한, C 문법의 모호성은 선언 구문과 형변환 연산자 설계에서 기인하며, 다른 언어들의 선언 스타일(qualifier-focused, type-focused, name-focused)과 비교해 C의 타입 중심(type-focused) 문법이 특히 복잡함을 유발한다고 분석합니다.
마지막으로, 저자는 편집기용 파서와 컴파일러용 파서의 차이를 강조하며, 편집기에서는 타입 테이블 대신 **이름 테이블(name table)**이 더 중요하다고 주장합니다. 이는 편집기가 불완전하거나 오류가 있는 코드도 유연하게 처리해야 하기 때문이며, C의 전처리기 분리 구조가 편집기 파싱을 더욱 어렵게 만든다고 평가합니다.