일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래밍 언어론
- react native
- 안드로이드 백도어
- 배열
- UDP daytime
- 알고리즘
- 1.9.2
- 덧셈
- 프론트엔드 개발자
- 메이플스토리 M 사전예약
- abex crack me 5번문제
- 구조체 함수
- 배열 정렬
- Reverse Me
- abex crack me 2번 문제풀이
- 리버싱
- 네트워크 관리사 2급 필기
- 레나 리버싱
- 배열 탐색
- 빅엔디언
- 암호화폐
- 구조체
- 리틀엔디언
- 재밌는 모바일게임
- sa 계정 비밀번호 변경
- abex crack me 1번
- C언어
- 오버워치
- c언어 알고리즘
- 마인크래프트
- Today
- Total
Gyejoong's Information
프로그래밍 언어론 - 2. 프로그래밍 언어의 구조 및 해석 본문
* 구문
- 프로그래밍 언어의 형식적인 구조를 의미
* 노엄 촘스키(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 인터프리트 기법과 컴파일 기법의 비교
* 중간 코드 실행기법
- 컴파일 기법과 인터프리트 기법을 함께 사용하여 컴퓨터에 구현한 방법
- 프로그램을 실행시키기 쉬운 형태로 번역한 후에, 그 번역된 형태의 프로그램을 실행 시뮬레이션으로 실행하는 방법
'Study' 카테고리의 다른 글
[깃허브]1. 깃허브 저장소 만들기 (3) | 2017.07.02 |
---|---|
프로그래밍 언어론 - 3. 변수, 바인딩, 식 및 제어문 (0) | 2017.05.22 |
프로그래밍 언어론 - 1. 프로그래밍 언어의 소개 (0) | 2017.05.21 |