컴파일러 연습문제
- 최초 등록일
- 2010.05.28
- 최종 저작일
- 2008.04
- 28페이지/ 한컴오피스
- 가격 2,500원
소개글
■ 과목명 : 컴파일러 구성
■ 과 제 : 교재 연습문제 2.17, 3.20, 4.10, 5.20 풀이
[과제 1] 2. 17 다음과 같은 프로그래밍 언어의 구조를 나타내는 context-free 문법을 고안하시오.
[과제 2] 3.20 NFA를 축약된 DFA로 바꾸는 프로그램을 작성하시오.
............
목차
[과제 1] 2. 17 다음과 같은 프로그래밍 언어의 구조를 나타내는 context-free 문법을 고안하시오.
[과제 2] 3.20 NFA를 축약된 DFA로 바꾸는 프로그램을 작성하시오.
[과제 3] 4.10 다음과 같은 작업을 처리하는 렉스 입력을 작성하시오.
[과제 4] 5.20 다음은 C++ 언어에서 클래스 정의를 간략히 BNF로 표현한 것이다.
본문내용
[과제 1] 2. 17 다음과 같은 프로그래밍 언어의 구조를 나타내는 context-free 문법을 고안하시오.
(1) C 언어의 정수 선언 부분 : 정수 선언 부분은 여러 개의 정수 선언으로 구성되며 하나의 선언은 int a, a, a; 와 같은 형태를 갖는다. 여기서, a는 임의의 identifier를 나타낸다. 예를 들어, 정수선언 부분은 다음과 같다.
int I, j;
int sum;
(풀이)
<C_integral_var_decl> -> <type_specifier> <declarator_list>
<type_specifier> -> `int`
<declarator_list> -> <identifier> `;` | <identifier> `,` <declarator_list>
정수 선언부 만을 고려한 문법이기 때문에 여러 형태의 CFG가 나올 수 있으며,
int a; , int a, a, a; , ... 형태의 스트링을 인식 가능한 문법이면 된다.
(2) C 언어의 함수 정의 부분 : C 언어에서 정의하는 함수의 구조는 다음과 같다.
return-type function-name(parameter dcl, if any)
{
declarations
statements
}
a는 명칭, d는 선언, s는 문장, 그리고 pd는 매개변수 선언을 나타내는 terminal 심벌이라고 가정하고 cfg를 만드시오.
(풀이)
<fucntion_definition>
-> <return_type> <function_name> `(` <optional_parameter_dcl_list> `)`
<compound_statetment>
// return_type의 경우 특별한 언급이 없으므로 터미널 a로 가정
<return_type> -> a
// 문제의 가정을 이용하여 a를 사용
<fucntion_name> -> a
// 문제의 가정을 이용하여 pd를 사용
<optional_parameter_dcl_list> ->
참고 자료
없음