목차
1. 다음에 대해 답하시오. (15점)
(1) 프로그래밍 언어의 구성 요소 중 데이터, 연산, 명령어, 타입을 각각 5줄 이내로 설명하시오.
①데이터 ②연산 ③명령어 ④타입
(2) 저급 언어와 고급 언어의 차이점을 3줄 이상 10줄 이하로 설명하시오.
(3) 프로그래밍 언어 중 하나만 선택하여 그 언어가 저급 언어와 고급 언어 중 어디에 해당하는지 쓰시오. 그리고 그렇게 생각한 이유를 제시하시오.
2. BNF로 표현된 다음 여섯 개의 구문을 이용하여 다음에 대해 답하시오. (15점)
<for문> ::= for (<초기화> ; <종료조건> ; <변화문>) <반복문장>
<초기화> ::= <문장> | ε
<종료조건> ::= T | F
<변화문> ::= <문장> | ε
<반복문장> ::= <문장> ; | { <문장들> }
<문장들> ::= <문장> ; | <문장들> <문장> ;
(1) 위 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 EBNF로 표현
② 그렇게 표현한 이유
(2) 위 구문을 하나의 구문 도표로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 구문 도표로 표현
② 그렇게 표현한 이유
3. 참고문헌
(1) 프로그래밍 언어의 구성 요소 중 데이터, 연산, 명령어, 타입을 각각 5줄 이내로 설명하시오.
①데이터 ②연산 ③명령어 ④타입
(2) 저급 언어와 고급 언어의 차이점을 3줄 이상 10줄 이하로 설명하시오.
(3) 프로그래밍 언어 중 하나만 선택하여 그 언어가 저급 언어와 고급 언어 중 어디에 해당하는지 쓰시오. 그리고 그렇게 생각한 이유를 제시하시오.
2. BNF로 표현된 다음 여섯 개의 구문을 이용하여 다음에 대해 답하시오. (15점)
<for문> ::= for (<초기화> ; <종료조건> ; <변화문>) <반복문장>
<초기화> ::= <문장> | ε
<종료조건> ::= T | F
<변화문> ::= <문장> | ε
<반복문장> ::= <문장> ; | { <문장들> }
<문장들> ::= <문장> ; | <문장들> <문장> ;
(1) 위 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 EBNF로 표현
② 그렇게 표현한 이유
(2) 위 구문을 하나의 구문 도표로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 구문 도표로 표현
② 그렇게 표현한 이유
3. 참고문헌
본문내용
요한 기호를 의미한다. 예를 들면 식별자를 의미하는 는 각괄호로 묶여 메타기호 ::=에 의해 우측에서 정의될 수 있으므로 비단말기호이다. 반면, A, B, a, b, 0, 1 등은 문자 그 자체를 의미하는 것으로 각괄호로 묶이지 않고 더 이상 정의가 불필요한 단말기호가 된다.
EBNF(Extended Backus-Naur Form)는 BNF 표기법을 확장한 것으로, 4가지 메타기호([], {}, (), ‘ ’)를 추가하여 보다 읽기 쉽고, 간단하게 표현된 구문 표현이다. EBNF에 사용되는 메타기호에는 0번 이상 반복을 의미하는 {}, 생략가능하다는 의미의 [], 그리고 메타기호 |와 함께 사용하여 한정된 범위의 택일을 표현하는 ()가 있다. 단, 메타 기호 { }, [ ], |, ( ), ::=를 메타 기호가 아닌 문자 그 자체의 의미 즉, 단말`기호로 사용할 경우에는 \'|\', \'::=\'처럼 인용부호로 묶어 표현한다.
EBNF 표현과 BNF 표현은 상호 변환이 가능하다. 메타 기호 []는 메타 기호 |을 이용하여 []로 묶인 부분이 있는 것과 없는 것으로 나누어 BNF 표현이 가능하다. 또한 메타 기호()는 ()의 바깥 부분을 반복하여 표현해 BNF로의 전환이 가능하다. 메타 기호 {}는 {}로 묶인 부분이 0번 이상 사용되는 경우와 한 번 이상 반복되는 경우로 나누어 BNF로 표현한다. 반복하는 방법은 아래 예(부호 없는 정수)처럼, 메타 기호 ::=의 왼쪽 부분에 나오는 비단말 기호를 오른쪽 부분에도 사용하는 것이다.
::= |
구문 도표(syntax diagram)는 구문을 도식적으로 기술하는 방법으로 BNF와 EBNF을 표현할 수 있다. 형태는 순서도와 유사하다. 비단말 기호는 사각형으로, 단말기호는 원으로, 화살표를 이용해 비단말 및 단말 기호들을 연결하여 규칙을 표현한다. 구문 도표에서 화살표는 나누어지거나 합쳐지기도 하고 반대 방향을 되돌아갈 수 있게 함으로써 택일이나 반복 등을 표현하게 된다.
한 BNF 표현을 다양한 EBNF로 표현할 수 있는 것처럼 같은 문법을 여러 형태의 구문 도표로 표현할 수 있다. 또한 비단말을 표시하고 있는 사각형을 참조하지 않도록 하기 위해 직접 그 내용을 구문 도표에 대입할 수도 있다.
(1) 위 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 EBNF로 표현
주어진 BNF 구문은 아래 C언어의 for문을 표현한 것으로 생각할 수 있다.
// 1부터 10까지 정수의 합을 구하는 for문
int sum 0;
for (int i = 1; i <= 10; i++) {
printf(\"%d\\n\", i);
sum += 1;
}
BNF로 표현된를 EBNF로 변환하기 전에 <초기화>, <종료조건>, <변화문>, <반복문장>, <문장들>부터 EBNF로 변환시켜본다.
BNF
EBNF
<초기화> ::= <문장> | ε
<초기화> ::= [ <문장> ]
<종료조건> ::= T | F
<종료조건> ::= T | F
<변화문> ::= <문장> | ε
<변화문> ::= [ <문장> ]
<반복문장> ::= <문장> ; | { <문장들> }
<반복문장> ::= <문장> ; | \'{\' <문장들>\' }\'
<문장들> ::= <문장> ; | <문장들> <문장> ;
<문장들> ::= <문장>;{<문장>;}
위 표를 참고하여 BNF을 하나의 EBNF로 표현하면 다음과 같다.
::= for ‘(’ [<문장>] ; (T | F) ; [<문장>] ‘)’ (<문장> ; | \'{‘ <문장>;{<문장>; } ’}‘)
② 그렇게 표현한 이유
<초기화>의 BNF 구문에서 ε은 NULL을 의미한다. 즉, <초기화>는 <문장>일 수도 있고, 아무것도 없음(NULL)을 의미하는 ε일 수도 있다. 따라서 이를 생략가능하다는 의미의 대괄호로 표현할 수 있는 것이다.
<종료조건>의 구문은 동일한 표현이다.
<변화문>과 <초기화>의 EBNF 구문은 동일하다.
BNF의 <반복문장>에서 중괄호는 문자 그 자체이므로, EBNF에서는 메타기호 ‘ \'를 사용하여 문자 그 자체임을 표현한다. 또한 하나의 문장으로만 구성된 경우는 중괄호를 사용해도 되고 안 해도되는 선택 조건이 있으므로, EBNF에서도 메타기호 |를 그대로 사용하였다. 단, 2개 이상의 문장일 때는 반드시 중괄호를 사용하여 블록을 명확히 지정해야 한다.
BNF의 문장들에서 좌측의 재귀부분(<문장들>)은 EBNF에서 0회 이상의 반복을 의미하는 메타기호 { }을 사용하여 표현한다.
이상의 내용을 바탕으로 BNF의을 EBNF로 표현하면 다음과 같다. 단, <종료조건>에서 T | F의 좌우에 있는 문자(;)와 분리됨을 명확히 하기 위해 메타기호 ( )를 사용하였다. <반복문장>의 경우도 동일한 이유에서 메타기호 ( )를 사용하였다.
BNF : ::= for (<초기화> ; <종료조건> ; <변화문>) <반복문장>
::= for ‘(’ [<문장>] ; (T | F) ; [<문장>] ‘)’ (<문장> ; | \'{‘ <문장>;{<문장>; } ’}‘)
(2) 위 구문을 하나의 구문 도표로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 구문 도표로 표현
② 그렇게 표현한 이유
EBNF의 for문에서, 비단말 기호는 사각형으로, 단말기호는 원으로 표현한다.
구문의 순서는 화살표를 사용하여 표현한다.
초기화와 변화문은 있을 수도 있고, 없을 수도 있어 화살표를 분기하여 표현한다.
종료조건과 반복문장에서 택일을 의미하는 메타 기호 |도 화살표를 분기하여 표현한다.
반복문장에서 중괄호의 반복구문은 화살표를 반대 방향으로 되돌아가도록 하여 표현한다.
3. 참고문헌
우균·김진욱(2019), 프로그래밍언어론, 한국방송통신대학교출판문화원.
창병모(2021), 프로그래밍 언어론 원리와 실제, 인피니티북스.
원유헌(2020), 프로그래밍 언어 개념, 정익사.
김종현(2019), 컴퓨터구조론 개정5판, 생능출판.
EBNF(Extended Backus-Naur Form)는 BNF 표기법을 확장한 것으로, 4가지 메타기호([], {}, (), ‘ ’)를 추가하여 보다 읽기 쉽고, 간단하게 표현된 구문 표현이다. EBNF에 사용되는 메타기호에는 0번 이상 반복을 의미하는 {}, 생략가능하다는 의미의 [], 그리고 메타기호 |와 함께 사용하여 한정된 범위의 택일을 표현하는 ()가 있다. 단, 메타 기호 { }, [ ], |, ( ), ::=를 메타 기호가 아닌 문자 그 자체의 의미 즉, 단말`기호로 사용할 경우에는 \'|\', \'::=\'처럼 인용부호로 묶어 표현한다.
EBNF 표현과 BNF 표현은 상호 변환이 가능하다. 메타 기호 []는 메타 기호 |을 이용하여 []로 묶인 부분이 있는 것과 없는 것으로 나누어 BNF 표현이 가능하다. 또한 메타 기호()는 ()의 바깥 부분을 반복하여 표현해 BNF로의 전환이 가능하다. 메타 기호 {}는 {}로 묶인 부분이 0번 이상 사용되는 경우와 한 번 이상 반복되는 경우로 나누어 BNF로 표현한다. 반복하는 방법은 아래 예(부호 없는 정수)처럼, 메타 기호 ::=의 왼쪽 부분에 나오는 비단말 기호를 오른쪽 부분에도 사용하는 것이다.
구문 도표(syntax diagram)는 구문을 도식적으로 기술하는 방법으로 BNF와 EBNF을 표현할 수 있다. 형태는 순서도와 유사하다. 비단말 기호는 사각형으로, 단말기호는 원으로, 화살표를 이용해 비단말 및 단말 기호들을 연결하여 규칙을 표현한다. 구문 도표에서 화살표는 나누어지거나 합쳐지기도 하고 반대 방향을 되돌아갈 수 있게 함으로써 택일이나 반복 등을 표현하게 된다.
한 BNF 표현을 다양한 EBNF로 표현할 수 있는 것처럼 같은 문법을 여러 형태의 구문 도표로 표현할 수 있다. 또한 비단말을 표시하고 있는 사각형을 참조하지 않도록 하기 위해 직접 그 내용을 구문 도표에 대입할 수도 있다.
(1) 위 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 EBNF로 표현
주어진 BNF 구문은 아래 C언어의 for문을 표현한 것으로 생각할 수 있다.
// 1부터 10까지 정수의 합을 구하는 for문
int sum 0;
for (int i = 1; i <= 10; i++) {
printf(\"%d\\n\", i);
sum += 1;
}
BNF로 표현된
BNF
EBNF
<초기화> ::= <문장> | ε
<초기화> ::= [ <문장> ]
<종료조건> ::= T | F
<종료조건> ::= T | F
<변화문> ::= <문장> | ε
<변화문> ::= [ <문장> ]
<반복문장> ::= <문장> ; | { <문장들> }
<반복문장> ::= <문장> ; | \'{\' <문장들>\' }\'
<문장들> ::= <문장> ; | <문장들> <문장> ;
<문장들> ::= <문장>;{<문장>;}
위 표를 참고하여 BNF
② 그렇게 표현한 이유
<초기화>의 BNF 구문에서 ε은 NULL을 의미한다. 즉, <초기화>는 <문장>일 수도 있고, 아무것도 없음(NULL)을 의미하는 ε일 수도 있다. 따라서 이를 생략가능하다는 의미의 대괄호로 표현할 수 있는 것이다.
<종료조건>의 구문은 동일한 표현이다.
<변화문>과 <초기화>의 EBNF 구문은 동일하다.
BNF의 <반복문장>에서 중괄호는 문자 그 자체이므로, EBNF에서는 메타기호 ‘ \'를 사용하여 문자 그 자체임을 표현한다. 또한 하나의 문장으로만 구성된 경우는 중괄호를 사용해도 되고 안 해도되는 선택 조건이 있으므로, EBNF에서도 메타기호 |를 그대로 사용하였다. 단, 2개 이상의 문장일 때는 반드시 중괄호를 사용하여 블록을 명확히 지정해야 한다.
BNF의 문장들에서 좌측의 재귀부분(<문장들>)은 EBNF에서 0회 이상의 반복을 의미하는 메타기호 { }을 사용하여 표현한다.
이상의 내용을 바탕으로 BNF의
BNF :
(2) 위 구문을 하나의 구문 도표로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
① 하나의 구문 도표로 표현
② 그렇게 표현한 이유
EBNF의 for문에서, 비단말 기호는 사각형으로, 단말기호는 원으로 표현한다.
구문의 순서는 화살표를 사용하여 표현한다.
초기화와 변화문은 있을 수도 있고, 없을 수도 있어 화살표를 분기하여 표현한다.
종료조건과 반복문장에서 택일을 의미하는 메타 기호 |도 화살표를 분기하여 표현한다.
반복문장에서 중괄호의 반복구문은 화살표를 반대 방향으로 되돌아가도록 하여 표현한다.
3. 참고문헌
우균·김진욱(2019), 프로그래밍언어론, 한국방송통신대학교출판문화원.
창병모(2021), 프로그래밍 언어론 원리와 실제, 인피니티북스.
원유헌(2020), 프로그래밍 언어 개념, 정익사.
김종현(2019), 컴퓨터구조론 개정5판, 생능출판.
키워드
추천자료
병렬 프로그램
[프로그래밍언어][프로그램언어][프로그래밍][컴파일러]프로그래밍언어(프로그램언어)의 종류...
2019년 2학기 프로그래밍언어론 중간시험과제물 공통(프로그래밍 언어의 평가 기준)
(방송통신대 프로그래밍언어론)교재와 강의에서 언급된 프로그래밍 언어 기준으로 다음에 대...
(방송통신대 프로그래밍언어론 기말시험)모호한 문법의 의미를 설명하고 교재/강의에서 다루...
(방송통신대 프로그래밍언어론 중간과제물)프로그래밍 패러다임과 프로그래밍 언어 패러다임 ...
2022년 2학기 방송통신대 프로그래밍언어론 중간과제물)프로그래밍 언어의 세 가지 기본 기능...
2023년 2학기 방송통신대 프로그래밍언어론 중간과제물)메모리에 적재된 프로그램의 기계어 ...
프로그래밍언어론) (1) 메모리에 적재된 프로그램의 기계어 명령어 하나를 컴퓨터의 CPU가 수...
[컴퓨터과학과]프로그래밍언어론_레포트
소개글