구문론과 의미론
- 구문론이란 문장이 나타내는 방식(구문)에 대해서 연구하는 분야
- 의미론이란 문장이 나타내는 의미에 대해서 연구하는 분야
- 기본적으로 프로그램은 다양한 문자로 구성된다. 예시로는 영어 알파벳, 아라비아 숫자, 특수 기호 등이 있다.
- 문자들은 서로 어울려 최소한의 의미를 갖는 어휘(토큰)을 구성
- 토큰들은 프로그램을 작성하는 규칙적인 구문에 맞춰 프로그램을 구성
- 문맥 자유 문법이란 문맥에 영향을 받지 않는 문법이란 의미로 변수를 예로 들어보면 변수는 어떤 문장에 등장하든 구조가 항상 동일하다.
- 문맥 자유 문법은 4가지 구성 요소를 가짐: 비단말 기호들, 단말 기호들, 시작 비단말 기호, 규칛
- 비단말 기호란 정의될 대상을 의미
- 단말 기호란 언어에서 직접 사용되는 표현들을 의미
- 시작 비단말 기호란 언어에서 독립적으로 사용될 수 있는 단위
- 규칙은 비단말 기호를 단말 기호와 비단말 기호의 조합으로 구체적으로 정의하는 것을 의미
- 문맥 자유 문법의 각 규칙은 하나의 비단말 기호만을 정의
- BNF에서 규칙은 메타기호 ::=를 이용하여 표현, ::=를 기준으로 왼쪽 부분을 오른쪽 부분으로 정의한다는 의미
- EBNF에 추가로 사용되는 네 가지 메타기호는 [ ] , { }, ( ), ' '
- 메타기호 [ ] 는 생략 가능을 푷련
- 메타 기호 { } 는 0번 이상 반복을 표현
- 메타 기호 ( ) 는 메타 기호 | 과 함께 쓰여 한정된 범위의 택일을 표현
- 메타 기호 ' ' 는 메타 기호 자체를 단말 기호로 사용함을 표현
- 메타 기호 [ ] 는 메타 기호 |을 이용하여 [ ] 로 묶인 부분이 있는 것과 없는 것으로 나누어 BNF 표현이 가능
- 메타 기호 ( ) 는 ( ) 의 바깥 부분을 반복하여 표현함으로써 역시 BNF 표현이 가능
- 메타 기호 { } 의 경우 { } 로 묶인 부분이 0번 사용되는 경우와 한 번 이상 반복되는 경우로 나누어 BNF 표현이 가능
- EBNF
<unsigned integer> ::= <digit> { <digit> }
<-> BNF<unsigned integer> ::= <digit> | <unsigned integer><digit>
- 구문도표에서 사각형은 비단말 기호, 원은 단말 기호, 화살표는 비단말 및 단말 기호들을 연결하여 규칙을 표현하는데 사용
- 속성문법은 정적 의미론의 표현 방법으로, 각 비단말 기호마다 타입 속성이 있다고 가정하여 이에 대한 규칙을 정의하는 방법
- 기능적 의미론은 동적 의미론의 표현 방법 중 한가지로, 프로그램이 수행되면 컴퓨터의 상태가 바뀌므로 프로그램의 의미를 추상 기계의 상태를 바꾸는 것으로 표현하는 방법
- 표기적 의미론은 동적 의미론의 표현 방법 중 하나로 그로그램을 구성하는 각 구문 요소를 수학적 표기에 대응시켜 표현
- 공리적 의미론은 동적 의미론의 표현 방법 중 하나로, 프로그램의 실행 의미를 프로그램의 효과로 해석하는 방법
문제
1. 구문론이 아닌 프로그래밍 언어의 특징은 무엇인가?
- 프로그램의 표면적 구조를 정의한다.
- 문맥 자유 문법을 사용한다.
- 프로그램 실행 시 어떤 일이 일어나는지를 정의한다.
- BNF, EBNF, 구문 도표로 표현한다.
정답: 3
해설: 구문론은 프로그램의 표면적 구조를 정의하지만, 프로그래밍 언어의 의미론은 프로그램 실행 시 어떤 일이 일어나는지를 정의한다.
2. 문맥 자유 문법의 4가지 구성 요소 중 하나가 아닌 것은 무엇인가?
- 비단말 기호들
- 단말 기호들
- 시작 비단말 기호
- 실행 규칙
정답: 4
해설: 문맥 자유 문법은 비단말 기호들, 단말 기호들, 시작 비단말 기호, 그리고 규칙으로 구성되어 있다. 실행 규칙은 문맥 자유 문법의 구성 요소가 아니다.
3. BNF에서 ::= 메타기호의 의미는 무엇인가?
- 선택을 나타낸다.
- 정의를 나타낸다.
- 반복을 나타낸다.
- 생략을 나타낸다.
정답: 2
해설: BNF에서 ::= 메타기호는 왼쪽 부분을 오른쪽 부분으로 정의한다는 의미를 갖는다.
4. EBNF에서 메타기호 [ ]의 기능은 무엇인가?
- 선택
- 생략 가능
- 반복
- 정의
정답: 2
해설: EBNF에서 메타기호 [ ]는 해당 부분이 생략 가능함을 나타낸다.
5. 속성문법이 정적 의미론을 표현하는 방법으로 사용되는 이유는 무엇인가?
- 상태 변화를 추적한다.
- 수학적 표기와 대응한다.
- 각 비단말 기호의 타입 속성을 정의한다.
- 실행 규칙을 제시한다.
정답: 3
해설: 속성문법은 정적 의미론을 표현하는 방법으로, 각 비단말 기호의 타입 속성을 정의하여 사용한다.
6. EBNF와 BNF의 차이점 중 하나는 무엇인가?
- BNF는 선택적 요소를 표현할 수 없다.
- EBNF는 메타기호를 사용하지 않는다.
- EBNF는 추가적인 메타기호를 사용한다.
- BNF는 비단말 기호를 사용하지 않는다.
정답: 3
해설: EBNF는 BNF에 비해 추가적인 메타기호를 사용하여 표현력을 향상시킨다.
7. 프로그래밍 언어에서 "기능적 의미론"이란 무엇을 의미하는가?
- 프로그램의 효과를 해석한다.
- 컴퓨터의 상태 변화를 표현한다.
- 수학적 표기에 대응시킨다.
- 구문적 구조를 정의한다.
정답: 2
해설: 기능적 의미론은 프로그램이 수행될 때 컴퓨터의 상태가 어떻게 변화하는지를 표현한다.
8. 표기적 의미론의 주된 목적은 무엇인가?
- 프로그램의 효과를 해석한다.
- 컴퓨터의 상태 변화를 표현한다.
- 각 구문 요소를 수학적 표기에 대응시킨다.
- 구문적 구조를 정의한다.
정답: 3
해설: 표기적 의미론은 프로그램을 구성하는 각 구문 요소를 수학적 표기에 대응시켜 표현하는 방법이다.
9. 공리적 의미론이 프로그래밍 언어론에서 중요한 이유는 무엇인가?
- 문법적 규칙을 정의한다.
- 프로그램의 실행 의미를 프로그램의 효과로 해석한다.
- 토큰과 구문을 정의한다.
- 프로그램의 표면적 구조를 분석한다.
정답: 2
해설: 공리적 의미론은 프로그램의 실행 의미를 그 프로그램이 미치는 효과로 해석하는 방법을 제공한다.
10. 구문도표에서 사각형이 나타내는 것은 무엇인가?
- 비단말 기호
- 단말 기호
- 규칙
- 선택
정답: 1
해설: 구문도표에서 사각형은 비단말 기호를 나타낸다.
프로그래밍 언어론 수업을 위한 추가적인 4지 선다형 문제를 출제하겠습니다. 이 문제들은 기존의 문제와 중복되지 않으며, 정답과 해설을 포함하고 있습니다.
11. 프로그래밍 언어의 "동적 의미론"이란 무엇인가?
- 프로그램이 컴퓨터 상태에 미치는 영향을 해석한다.
- 프로그램의 구문 구조를 정의한다.
- 프로그램의 문법적 규칙을 설명한다.
- 프로그램의 기능적 요소를 분석한다.
정답: 1
해설: 동적 의미론은 프로그램이 실행될 때 컴퓨터의 상태에 어떠한 영향을 미치는지를 해석하는 것을 말한다.
12. 문맥 자유 문법에서 비단말 기호의 역할은 무엇인가?
- 구문의 최종 문자열을 형성한다.
- 구문의 규칙을 정의한다.
- 구문의 시작점을 나타낸다.
- 구문의 추상적 구조를 표현한다.
정답: 4
해설: 문맥 자유 문법에서 비단말 기호는 구문의 추상적 구조를 표현하는 데 사용된다.
13. 프로그래밍 언어에서 "렉시컬 스코핑"이란 무엇인가?
- 변수가 함수 내에서만 유효한 범위를 갖는다.
- 변수가 전역적으로 사용될 수 있는 범위를 갖는다.
- 변수가 선언된 위치를 기준으로 범위가 결정된다.
- 변수의 유효 범위가 동적으로 결정된다.
정답: 3
해설: 렉시컬 스코핑은 변수의 유효 범위가 선언된 위치를 기준으로 결정되는 것을 의미한다.
14. 프로그래밍 언어의 "정적 타입 시스템"이란 무엇인가?
- 변수의 타입이 실행 시간에 결정된다.
- 변수의 타입이 컴파일 시간에 결정된다.
- 변수의 타입이 동적으로 변경될 수 있다.
- 변수의 타입이 프로그램의 문맥에 따라 달라진다.
정답: 2
해설: 정적 타입 시스템에서는 변수의 타입이 컴파일 시간에 결정되며, 이후 변경될 수 없다.
15. 프로그래밍 언어에서 "토큰"이란 무엇인가?
- 프로그램의 최소 실행 단위
- 프로그램의 구문적 오류를 감지하는 요소
- 프로그램을 구성하는 최소 의미 단위
- 프로그램의 실행 흐름을 제어하는 요소
정답: 3
해설: 토큰은 프로그램을 구성하는 최소 의미 단위로, 언어의 구문 분석 과정에서 사용된다.
16. "구문 트리"가 프로그래밍 언어론에서 중요한 이유는 무엇인가?
- 프로그램의 실행 속도를 최적화한다.
- 프로그램의 구문 구조를 시각적으로 표현한다.
- 프로그램의 의미론적 오류를 감지한다.
- 프로그램의 라이브러리 의존성을 관리한다.
정답: 2
해설: 구문 트리는 프로그램의 구문 구조를 시각적으로 표현하여 구문 분석 과정을 돕는다.
17. 프로그래밍 언어에서 "다형성"이란 무엇인가?
- 하나의 식별자가 여러 타입의 값들을 가질 수 있다.
- 함수가 다양한 인자를 받을 수 있다.
- 프로그램이 여러 플랫폼에서 실행될 수 있다.
- 변수가 여러 값들을 순차적으로 저장할 수 있다.
정답: 1
해설: 다형성은 하나의 식별자(예: 함수, 변수)가 다양한 타입의 객체들을 처리할 수 있음을 의미한다.
18. "클로저"가 프로그래밍 언어에서 사용되는 이유는 무엇인가?
- 메모리를 효율적으로 관리하기 위해
- 함수가 선언될 당시의 환경을 유지하기 위해
- 프로그램의 병렬 실행을 용이하게 하기 위해
- 프로그램의 구문 오류를 자동으로 수정하기 위해
정답: 2
해설: 클로저는 함수가 자신이 선언된 환경을 "닫힌" 채로 캡쳐하여, 나중에도 그 환경에 접근할 수 있게 해준다.
19. 프로그래밍 언어에서 "가비지 컬렉션"의 주된 목적은 무엇인가?
- 프로그램의 실행 시간을 단축시키기 위해
- 사용하지 않는 메모리 자원을 자동으로 회수하기 위해
- 프로그램의 보안을 강화하기 위해
- 프로그램의 메모리 사용량을 증가시키기 위해
정답: 2
해설: 가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 회수하여 메모리 관리를 용이하게 한다.
20. "함수형 프로그래밍"에서 중요한 개념은 무엇인가?
- 명령형 프로그래밍 기법
- 상태 변경과 가변 데이터의 최소화
- 객체 지향 프로그래밍
- 절차적 프로그래밍 스타일
정답: 2
해설: 함수형 프로그래밍은 상태 변경과 가변 데이터를 최소화하고, 함수의 순수성을 강조하는 프로그래밍 패러다임이다.
'CS > 프로그래밍언어론' 카테고리의 다른 글
프로그래밍 언어의 구현 , 파스트리, 구문 트리, 순환 하강 구문 분석기 관련 문제 - 방통대 기말 시험 대비 (1) | 2023.12.08 |
---|---|
구문 분석, 파스 트리 용어 정리 및 예상 문제 풀이 - 방통대 프로그래밍 언어론 (1) | 2023.12.08 |
방송대 프로그래밍 언어론 기출문제 오답률 높은 문제들 정리 및 해설 (1) | 2023.12.08 |
방송통신대학교 프로그래밍 언어론 요약 정리 및 연습 문제 (0) | 2023.12.05 |
프로그래밍 언어 패러다임 (0) | 2023.10.09 |