모각코 2회차 모임에서 나는 <프로그래밍 언어론> 수업의 지금까지 내용을 정리하는 시간을 가졌다.
특히 가장 최근에 배운 내용인 3장과 4장, 프로그래밍 언어 설계와 언어의 구문과 구현 기법을 중심으로 공부를 했다.
- 3장 프로그래밍 언어 설계
3장에서는 프로그래밍 언어 설계의 기본 원칙과 문제점, 해결방안을 설명한다.
언어 설계의 기본 원칙
1. 효율성
효율성의 기준에 따라 목적 코드의 효율성, 번역의 효율성, 구현의 효율성, 프로그래밍 효율성으로 구분할 수 있다.
2. 일반성
특별한 경우를 피하고, 밀접하게 관련있는 여러 개념들을 일반적인 하나의 개념으로 통합하여 얻는 성질
3. 직교성
"직각 또는 완전히 독립적인 방향"이라는 수학 개념에서 유래하였으며, 언어 구성자들이 각각의 의미를 가진 채 결합하는 성질을 말한다. 구성자 간의 상호작용 또는 문맥의 사용이 예상 밖의 행위를 야기하지 않아야 한다. 비직교성이란 문맥에 의존하는 제한이며 비일반성은 문맥과 관계없는 제한이다.
4. 획일성
언어 구조들의 외형과 행동에서의 조화에 중점을 둔다. 유사한 것들은 유사하게 보이고 유사한 의미를 갖게 한다.
신뢰성 문제
언어 구문의 과다한 간결성과 생략은 프로그램 판독성을 저하시킨다. 그러나 적절한 수준의 간결성은 프로그래머에게 좋은 훈련과 프로그램의 신뢰성을 증가시킨다.
성공적인 프로그래밍 언어 설계를 위해
1. 언어의 특정한 특성을 고안해야 한다.
2. 새로운 언어를 설계한다.
그러나 새 언어 설계 작업은 단지 기존 개념을 통합하는 것 뿐이다.
- 4장 언어의 구문과 구현 기법
4장에서는 언어 구문의 정의와 프로그래밍 언어 구현 기법에 대해 설명한다.
고급 언어의 정의
구문과 의미를 정의한다. 자연어 정의, 형식 정의, 구문 형식 정의(BNF, EBNF, 구문 도표) 등이 있다.
문맥 자유 문법과 BNF
1. BNF 표기법
구문 형식을 정의하는 가장 보편적인 표기법이며, 한 언어의 문장을 생성하는 생성 규칙을 정의한다.
2. 생성 규칙
왼쪽에는 정의될 대상을, 오른쪽에는 그 대상에 대한 정의를 적는다.
<identifier> ::= <letter> | <identifier><letter> | <ide tifier><digit>
3. 메타 기호
::= 정의하다
<> 비단말기호(nonteminal symbol)
| 택일 기호
EBNF
: BNF의 표기법에서 보다 읽기 쉽고 간단하게 표현된 표기법이다.
1. BNF에 추가된 EBNF의 메타 기호
{} 반복
[] 선택
( a | b ) 택일
2. {}, [], |, (), ::= 와 같은 메타 기호를 terminal 기호로 사용하는 경우, '|', '::=' 와 같이 인용부호로 묶어 표현한다.
구문 도표
1. 구문 도표는 EBNF와 일대일 대응된다.
다시 정의될 대상은 사각형, 단말 기호는 원이나 타원형으로 표시하고 지시선으로 연결한다.
파스 트리와 추상 구문 트리
1. 파스 트리 (parse tree)
원시 프로그램의 문장 분석 과정에서 생성되는 트리 형태의 자료구조이며 어떤 문장이 BNF에 의해 생성될 수 있는지 여부를 나타낸다.
'2023-1모각코' 카테고리의 다른 글
23.05.09 모각코 6회차 (0) | 2023.05.14 |
---|---|
23.05.02 모각코 5회차 (0) | 2023.05.04 |
23.04.04 모각코 4회차 (0) | 2023.04.05 |
23.03.28 모각코 3회차 (0) | 2023.03.30 |
23.03.14 모각코 1회차 (0) | 2023.03.16 |