위키득계정 ↗
기술

구문 분석

구문 분석기술
영문명
Parsing 또는 syntactic analysis
입력 예
문자열이나 토큰의 나열
결과 예
구문 트리와 추상 구문 트리
구분할 단계
어휘 분석, 의미 분석, 실행
구문 분석은 입력된 기호나 토큰의 나열을 문법 규칙에 따라 구조로 해석하는 과정이다. 파싱이라고도 한다. 컴퓨터 언어에서는 식과 문장, 선언 등의 관계를 파악하며 단순한 문자열 검색이나 프로그램 실행과는 구분된다.

문자 나열에서 구조로

2+3×4를 읽을 때 단순히 왼쪽부터 계산하는 대신 곱셈이 덧셈 안의 한 부분이라는 구조를 파악할 수 있다. 파서는 언어의 문법을 사용해 이런 결합 관계를 표현한다. 우선순위와 괄호는 구조를 결정하는 단서다.

어휘 분석과의 구분

어휘 분석은 문자들을 식별자와 숫자, 연산자 같은 토큰으로 구분하는 단계로 설명할 수 있다. 구문 분석은 그 토큰들이 어떤 문법적 관계로 묶이는지 다룬다. 실제 구현이 두 단계를 얼마나 나누는지는 도구와 언어에 따라 다르다.

문법적으로 맞아도 생기는 오류

문법에 맞는 구조를 만들었다고 프로그램의 모든 의미가 올바른 것은 아니다. 선언되지 않은 이름이나 맞지 않는 자료형 등의 문제는 별도 분석에서 드러날 수 있다. 파싱 성공과 실행 성공을 같은 뜻으로 보아서는 안 된다.

분석 결과의 활용

구문 구조는 컴파일과 코드 변환, 개발 도구의 분석 등에 사용된다. 같은 입력을 어떤 문법으로 읽는지에 따라 구조가 달라질 수 있으므로 언어와 문법 버전을 명시하는 것이 중요하다.

관련 문서

추상 구문 트리 / 컴파일러 / 프로그래밍 언어 / 자료형 / 정규 표현식