둘러보기 메뉴
검색
바뀐글
임의글
개인 도구
가입하기
로그인
도움말
도움말
질문게시판
자주 묻는 질문
커뮤니티
실시간 채팅방
가입인사게시판
자유게시판
뉴스게시판
제재안게시판
최근 토론
페미위키
공지사항
개선 요청
바뀐글
임의글
파일 올리기
다면 분류 목록
특수 문서 목록
문법 문서 원본 보기
이름공간
문서
토론
주시
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
위키베이스 항목
행위
보기
읽기
원본 보기
역사 보기
←
문법
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요.
요청한 명령은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
사용자
,
Seeders
.
문서를 고치려면 이메일 인증 절차가 필요합니다.
사용자 환경 설정
에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.
문서의 원본을 보거나 복사할 수 있습니다.
Grammar/Syntax 문법을 간단히 말하면 문장을 틀리지 않게 쓰는 방법이다. 그러나 이 정의만으로는 충분하지 않다. 이 글에서는 촘스키의 형식 언어학 계열에서 다루는 생성 문법 이론에 따라 문법을 소개하고자 한다.(다른 정의는 추가 바람) == 생성 문법에 따르는 문법 정의 == * 문법 G = (V, N, P, S)는 다음 조건을 만족하는 4-원소 투플이다. # V = 문법 G에 지배받는 모든 기호(Symbol) 집합. 여기에서 말하는 기호는, 우리가 상식적으로 사용하는 낱말인 기호와 뜻이 다르다. 상식적으로 기호라고 말하는 대상들은, 생성 문법 상에서는 단말 기호(Terminal Symbol)이며, 생성 문법 상에서는 T라는 약자로 자주 사용한다. 후술할 파스 트리(Parse-Tree)에서 꼭짓점(Vertex)을 맡게 되기에, 줄여서 V라고 쓴다. 학자에 따라서는, 단말 기호 집합 T와 비단말 기호 집합 N을 합집합하면 어차피 V를 유도할 수 있으므로, (V, N, P, S) 대신 (T, N, P, S)를 사용하는 사람도 있다. # N = 문법 G의 V에 속하는 모든 비단말 기호(Non-Terminal) 집합. 줄여서 N이라고 쓴다. 대표적인 비단말 기호로는 명사, 동사, 주어, 술어 등이 있다. 즉, 촘스키 문법 이론에서는 문법적 대상 역시 기호로 간주한다. # P = 문법 G를 따르는 문자열을 만들어내는 생성 규칙 집합(Production Set). 줄여서 P라고 쓴다. 생성 규칙이란, V의 원소로 구성된 문자열 e, f가 있다고 가정할 때, e를 f로 치환하는 규칙이다. 이 때, "e를 f로 치환할 수 있다"라는 규칙은 "e → f" 라고 쓴다. P에 속하는 생성 규칙이 가진 특성에 따라 그 문법을 무제한(unrestricted, 또는 구-구조 문법 Phrase-Structure Syntax), 문맥 민감(context-sensitive), 문맥 자유(context-free), 정규(regular) 문법의 4가지로 구분할 수 있다. 자연어는 보통 무제한 문법으로 간주된다. # S = 문법 G에 따르는 모든 문장(Sentence)을 유도해낼 수 있는 비단말 기호이다. 따라서 V의 원소이고, N의 원소이기도 하다. 모든 문법은 하나의 S를 가진다. 학자에 따라 S 대신 소문자 시그마(σ)를 사용하는 학자도 있다. 위와 같은 네 원소를 가지는 4-원소 투플을 우리는 G라고 하며, '''G로부터 파생된 모든 단말 문자열의 집합'''을 우리는 '''언어(language)'''라고 부른다. === 무제한 문법 === 무제한 문법을 따르는 생성 규칙 집합의 모든 원소는 어떤 0개 이상의 기호열이 어떤 0개 이상의 기호열로 대체될 수 있다. 계산 이론 상에서의 튜링 머신과 동일한 표현력을 지닌다. === 문맥 민감 문법 === 문맥 민감 문법을 따르는 생성 규칙 집합은 기호열 E가 기호열 F로 대체될 수 있으며, |E|는 |F|보다 작다. 무제한 문법과 같은 점은, 어떤 단말 문자열의 파스 트리가 하나로 정해지지 않을 가능성이 있다. === 문맥 자유 문법 === 현존하는 거의 모든 프로그래밍 언어의 구문 명세 시에 사용하는 문법. 기호열 E는 F로 대체될 수 있으며, |E| = 1이면서 E는 N의 원소이다. 즉, 단말 기호는 대체될 수 없으며, 비단말 기호열을 다른 것으로 대체하는 규칙 또한 세울 수 없다. 따라서 파스 트리는 하나로 정해지며, 컴파일러의 구문 분석기는 이를 통해 효과적으로 프로그램을 파싱할 수 있다. 계산 이론 상에서의 푸시다운 오토마타와 동일한 표현력을 지닌다. === 정규 문법 === 정규 문법은 오른쪽 방향 또는 왼쪽 방향으로만 파싱될 수 있다. 표현력은 가장 좁으나(예컨대, 한 쪽 방향으로만 파싱될 수 있다는 특징 때문에 괄호를 정의할 수 없다), 계산 시 처리가 빠르기 때문에 컴파일러의 토큰 생성기를 만들 때 자주 사용하며, 텍스트 에디터에서 텍스트를 검색할 때도 '''정규식'''이라는 이름으로 자주 쓰인다. 텍스트를 자주 만지는 사람이라면, 정규식은 매우 유용하니 한 번쯤 배워 보자. 삶의 질이 달라진다. 계산 이론 상에서의 유한 상태 오토마타와 동일한 표현력을 지닌다.
문법
문서로 돌아갑니다.
다른 언어