Parser / Concrete syntax / Abstract syntax

Eden.Yang·2023년 11월 6일
0

PLT

목록 보기
12/14

parser는 interpreter나 complier 안에 있는 요소이다. 파서의 주요한 역할은 프로세싱중이거나 우리가 작성한 코드를 abstract syntax로 변환하는 프로그램 코드를 인지하는 것이다.


일반적으로 파서(Parser)는 문법적인 오류(Syntax Error)를 잡아내는 역할을 합니다. 파서는 입력된 코드가 언어의 문법에 부합하는지를 검사하고, 올바르지 않은 구문을 감지하여 오류를 보고합니다.

반면에, 파서는 일반적으로 의미적인 오류(Semantic Error)를 감지하지는 못합니다. 의미적인 오류를 잡아내기 위해서는 보통 컴파일러나 인터프리터의 더 높은 수준의 구성 요소가 필요합니다. 이러한 구성 요소는 코드를 실행하기 전에 다양한 종류의 오류를 검사하고 처리합니다. 이를 통해 프로그램이 실행될 때 예기치 않은 결과를 내지 않도록 보장합니다.

파서가 이런 문법적인 오류를 잡아내기 위해선 해당 언어의 concrete syntax가 필요한데, 이것이 바로 BNF(Backus-Naur Form)이다.


파서? abstract syntax? concrete syntax?

Concrete syntax

  • Concrete syntax(구체적 구문)는 컴퓨터 프로그래밍 언어에서 코드를 작성할 때 사용되는 실제 문법이나 구문을 의미합니다. 이는 개발자가 코드를 작성할 때 직접적으로 사용되는 문법 규칙들을 나타냅니다.

  • 예를 들어, C 언어에서는 세미콜론(;)으로 문장을 종료하고, 중괄호({})로 블록을 나타내며, 변수 할당은 등호(=)를 사용합니다. 이러한 구체적인 구문들은 프로그래머가 코드를 작성할 때 사용되는 구문입니다.

  • 구체적인 구문은 주로 인간이 읽고 이해하기 쉽도록 설계되며, 개발자가 코드를 작성하고 읽을 때 직접적으로 사용됩니다. 그러나 이러한 구문은 컴퓨터가 이해하고 실행할 수 있는 형식으로 변환되어야 합니다. 이 변환 과정을 통해 프로그래머가 작성한 코드가 실제로 실행 가능한 프로그램으로 변환됩니다.

Abstract syntax

  • Concrete syntax와는 대조적으로, Abstract syntax(추상적 구문)는 프로그래밍 언어의 문법을 컴퓨터가 이해할 수 있는 형태로 나타낸 것입니다. Abstract syntax는 보통 컴파일러나 인터프리터 내부에서 사용되며, 코드를 처리하고 실행하기 위한 데이터 구조로 나타냅니다.
profile
손끝에서 땅끝으로, 골방에서 열방으로

0개의 댓글

관련 채용 정보