관리 메뉴

Gyejoong's Information

프로그래밍 언어론 - 2. 프로그래밍 언어의 구조 및 해석 본문

Study

프로그래밍 언어론 - 2. 프로그래밍 언어의 구조 및 해석

연계중 연계중 2017.05.22 00:33


  * 구문

- 프로그래밍 언어의 형식적인 구조를 의미


  * 노엄 촘스키(Noam Chomsky)

- 문법의 종류 분류

- 문맥자유 문법에 대한 아이디어 제안



2. 언어 구문


2-1 프로그래밍 언어의 어휘구조


  * EBCDIC 코드

- IBM의 360 계열에 의해 처음 발표된 것

- 8비트 조합으로 만들어지는 코드


  * ASCII 코드

- 7비트로 구성되어 있으며, 최대로 128개까지의 문자 표현 가능


  * 유니코드 체계

- 16비트로 구성되어 있으며, 국제표준으로 대두


  * 어휘 토큰

- 프로그래밍 언어의 어휘구조

- 프로그래밍 언어 알파벳 문자로 구성된 단어


  * 언어 구성자

- 한 개 이상의 어휘 토큰을 가지고 구문적으로 허용된 프로그램의 일부 구조

- 언어 구성자를 부르는 이름이 식별자라는 토큰임


  * 예약어(reversed word)

- 미리 정의된 식별자(predefined identifier) 중에서 재정의할 수 없도록 한 식별자


2-2 문맥자유 문법과 BNF


  * BNF

- 생성규칙(production rule)의 집합


  * 비단말(nonterminal) 기호

- 각괄호(<>)로 묶인 기호

- BNF 규율로 다시 정의될 대상임을 의미


  * 단말(terminal) 기호

- 각괄호로 묶이지 않은 기호

- 각 언어에서 사용하는 알파벳 문자 집합과 예약어가 있음


  * 문맥자유 문법

- 모든 생성규칙에서 정의될 대상이 하나의 비단말기호만으로 구성된 문법


  * 문맥의존 문법(context-sensitive grammar)

- 특수한 문맥에 의존하여 대치되는 문법


  * EBNF(Extended BNF)

- BNF보다 읽기 쉽고 간결하게 표현할 수 있는 확장된 표기법


2-3 구문도표


  * 구문도표(syntax diagram)

- 형태가 순서도와 비슷하며, EBNF 선언과 바로 대응 가능



2-4 파스 트리와 프로그램 문법의 모호성


  * 파스 트리(parse tree)

- 한 표현이 주어진 BNF에 의하여 작성될 수 있는지 없는지를 확인하기 위해 사용

- 주어진 BNF를 이용하여 그 대상을 근(root)으로 하고 단말 노드를 왼쪽에서 오른쪽으로 나열한 것이 검증하고자 하는 표현과 같이 되는 트리


  * 추상구문 트리(abstract syntax tree)

- 파스 트리에서 비단말기호를 없앤 본질적인 구조를 나타내는 트리

- 구문 트리(syntax  tree)


  * 모호성

- 어떠한 명확한 구조를 표현하지 않는 것을 의미




2.2 언어 구문



2.2-1 컴파일 기법

  

  * 컴파일 기법

- 주어진 고급 프로그램이 언어로 작성한 프로그램을 실제 컴퓨터의 기계어로 번역하여 동등한 의미의 기계어 프로그램을 만들어 실행시키는 방법


  * 컴파일러(compiler)

- 고급언어인 원시언어를 실제 기계언어에 가까운 저급언어인 목적언어로 만들어 주는 번역기


  * 어셈블러(assembler)

- 목적언어가 준기계어 형태라는 점에서는 컴파일러와 유사하나 원시언어가 어셈블리 언어인 번역기


  * 링커(linker)

- 재배치 형태의 기계어로 구성된 여러 개의 프로그램을 묶어서 로드 모듈이라는 어느 정도 실행 가능한 하나의 기계어로 번역해 주는 번역기


  * 로더(loader)

- 로드 모듈로 된 기계어 프로그램을 실제 실행 가능한 기계어로 번역해서 주기억장치에 적재하는 것


  * 프리프로세서(preporcessor)

- 원시언어와 목적언어가 모두 고급언어인 번역기


2.2-2 인터프리트 기법


  * 인터프리트 기법

- 고급언어를 기계어로 하는 컴퓨터를 하드웨어로 구성하는 대신에 그 고급언어 기계를 다른 기계에서 실행되는 소프트웨어로 시뮬레이션하여 구성하는 방법


2.2-3 인터프리트 기법과 컴파일 기법의 비교


  * 중간 코드 실행기법

- 컴파일 기법과 인터프리트 기법을 함께 사용하여 컴퓨터에 구현한 방법

- 프로그램을 실행시키기 쉬운 형태로 번역한 후에, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행하는 방법


저작자 표시
신고
0 Comments
댓글쓰기 폼