lex-yacc-tutorial.hwp

Size: px
Start display at page:

Download "lex-yacc-tutorial.hwp"

Transcription

1 컴파일러 구성을 위한 대표적 소프트웨어 도구인 Lex(또는 Flex)와 Yacc(또는 Bison) 입문: Windows 환경에서 김도형(성신여자대학교 IT학부) 0. 소개 (1) Lex와 Yacc은 무엇인가? 컴파일러의 구성을 도와주는 대표적인 소프트웨어 도구들이다. 원래 UNIX의 산실인 벨 연구소(AT&T Bell Laboratories)에서 UNIX 시스템의 유틸리티(utility)로서 개발되었다. 각각의 개발자는 Lex는 Mark Lesk, Yacc은 Steve Johnson이다. 이후 이 도구들의 유용성이 확인되면서 Sun의 Solaris나 Linux와 같은 UNIX 계열의 운영체제는 물론 이고, Microsoft Windows 등의 상이한 운영체제에도 이식(porting)되어서 널리 사용되고 있다. (2) Lex와 Yacc을 어떻게 구하는가? 현재 UNIX 계열 상용( 商 用 ) 운영체제의 경우 Lex와 Yacc은 기본 유틸리티의 일부로서 포함되어 있다. 그러나 Lex와 Yacc의 판권(copyright)은 Bell Laboratories(현재 Lucent Technology)가 가지고 있으므로, Linux와 같은 FSF(Free Software Foundation)의 정신을 표방하는 운영체제의 경우는 각각 Lex와 Yacc의 GNU 버전(version)인 Flex와 Bison을 기본 유틸리티로서 갖추고 있다. 그 외도 여러 운영체제를 위한 약 간씩 다른 Lex와 Yacc의 버전들이 있다. Windows 상에서 Cygwin 시스템을 사용한다면 처음 설치할 때 Flex와 Bison을 선택하여 사용하는 것 이 가장 UNIX 계열 운영체제와 유사하게 사용할 수 있을 것이다. 이밖에도 Windows 환경에서 Lex와 Yacc 또는 그에 상응하는 유틸리티를 이용하기 위한 몇 가지 다른 방법이 있다. 원래의 Lex나 Yacc과는 달리 결과 파일을 C 언어뿐만 아니라 C++ 언어나 Java 언어로 출력하는 상용 소프트웨어도 시판되고 있다. 또한 Cygwin 시스템과 같이 UNIX 계열 운영체제와 유사한 환경 전체의 설치가 필요 없는 경우, GNU C 컴파일러(gcc)와 Flex, Bison만 Windows 운영체제에 설치하여 사용할 수도 있다. 이 Windows 운영체제용 튜토리얼(tutorial)에서는 가장 간단한 마지막 방법에 기반을 두어 설명하도록 하겠다. (추후 Windows 운영체제를 위한 다른 방법에 대한 내용을 추가할 계획이다.) (3) Windows 운영체제에 GNU C 컴파일러와 Flex, Bison 설치하기 먼저 GNU C 컴파일러를 설치한다. 이것을 설치하는 편한 방법 중 하나가 유명한 무료 C/C++ 프로그 - 1 -

2 램용 통합 개발 환경(IDE integrated development environment)인 Bloodshed 사의 Dev-C++를 설치하 는 것이다(관련 사이트 링크: 원래 Dev-C++가 GNU C 컴파일 러를 기본으로 하여 그 위에 사용자 편의를 위한 IDE 인터페이스를 뒤집어씌운 것이기 때문이다. Dev-C++를 설치하면(주의: 이것이 설치되는 폴더(folder)까지 이르는 경로명(path name)에 공백이 없도 록 한다. 보통 C:\Dev-Cpp 에 설치한다) 그 설치 디렉터리(directory) 아래 bin 이라는 하위 디렉터리 가 만들어지고 이 안에 GNU C 컴파일러( gcc.exe )와 C++ 컴파일러( g++.exe )가 설치된다. 그 다음에는 Flex와 Bison을 설치한다. (비록 이렇게 서술하지만 이 세 프로그램(GNU C 컴파일러, Flex, Bison)의 설치 순서는 바뀌어도 상관없다.) Flex를 다운로드 받는다(관련 사이트 링크: 설치는 매우 간단하여 다운로드 받은 설치 파일을 실행시킨 후 몇 번 동의 또는 다음 버튼을 누르기만 하면 된다(주의: Dev-C++와 마찬가지로 이것이 설치되는 폴더까지 이르는 경로명에 공백이 없도록 한다. 보 통 C:\GnuWin32 에 설치한다). Bison도 다운로드 받아서(관련 사이트 링크: Flex 와 같은 요령으로 설치한다(주의: 앞의 두 프로그램과 마찬가지로 이것이 설치되는 폴더까지 이르는 경 로명에 공백이 없도록 한다. 경로명에 공백이 있는 경우 실제 Bison을 사용할 때 오류가 발생하는 것을 확인했으니 특히 주의해야 한다. 보통 Flex와 함께 C:\GnuWin32 에 설치한다). 세 프로그램의 설치를 마치면 시스템의 환경 변수들 중 PATH 변수의 값에 GNU C 컴파일러와 Flex, Bison의 실행 파일이 있는 경로를 추가한다. 즉, 예컨대 C:\Dev-Cpp\binC:\GnuWin32\bin 을 추가 내지 ( PATH 변수가 없었던 경우) 새롭게 등록하는 것이다. 명령 프롬프트(command prompt) 창을 연다( 모든 프로그램 보조 프로그램 명령 프롬프트 메 뉴를 선택하여 실행하거나 실행 창에서 cmd(.exe) 를 입력하여 바로 실행시킨다). 이 창에서 flex --version 을 입력하여 설치된 Flex의 버전을 확인한다(최신 버전은 2.5.4). bison --version 을 입력 하여 설치된 Bison의 버전을 확인한다(최신 버전은 2.4.1). gcc --version 을 입력하여 설치된 GNU C 컴파일러의 버전을 확인한다(최신 버전은 3.4.2이나 Dev-C++ 안정 버전에 포함된 것은 3.3.1). 설치의 마지막으로 Flex와 Bison이 필요로 하는 라이브러리 파일을 GNU C 컴파일러가 찾을 수 있도 록 적절한 디렉터리에 복사한다. Flex와 Bison이 설치된 디렉터리(예컨대 C:\GnuWin32 )에 가면 여러 하위 디렉터리가 있는데, 그 중 lib 속에 libfl.a 와 liby.a 가 포함되어 있고 이것들이 각각 Flex 와 Bison의 라이브러리 아카이브(archive) 파일이다. 이것들을 GNU C 컴파일러의 라이브러리 디렉터리 (예컨대 C:\Dev-Cpp\lib )에 복사한다. Flex와 Bison을 사용하는 일반적인 형태는 다음 C:\Users\JohnDoe> flex test.l C:\Users\JohnDoe> bison test.y 과 같다. (Flex 입력 파일의 이름은 test.l, Bison 입력 파일의 이름은 test.y 라고 가정한다.) 이렇게 하면 현재 작업하는 디렉터리에 Flex와 Bison의 실행 결과 파일이 만들어진다. 보다 자세한 설명은 뒤에 서 여러 예제를 직접 보면서 할 것이다

3 1. Lex(Flex)와 Yacc(Bison)의 작동 (1) Lex(Flex)와 Yacc(Bison)의 역할 Lex(Flex)와 Yacc(Bison) 모두 사용자가 작성한 명세(specification) 파일을 처리하여 각각 기본적으로 C 언어로 작성된 어휘 분석 프로그램(lexical analyzer 또는 scanner)과 구문 분석 프로그램(syntax analyzer 또는 parser)을 만들어낸다(이 결과 프로그램을 C++ 언어 또는 Java로 내는 확장 상용 버전도 있다). 사 용자는 이 결과 파일을 컴파일하여 단독으로, 또는 컴파일러나 다른 용도의 더 큰 프로그램의 일부로 사용하게 된다. 그리 중요한 점은 아니나, 오리지널 Lex와 Yacc 프로그램이 결과로 만들어내는 파일의 이름은 각각 lex.yy.c'와 y.tab.c 로 고정되어 있었다. 그러나 GNU 버전인 Flex와 Bison에서는 입력 파일의 이름 뒤에 확장자로 각각 yy.c 와 tab.c 를 붙여서 결과 파일의 이름을 정할 수 있도록 수정되었다. 각 프로그램의 입력으로 들어가는 명세 파일의 내용은 그 목적에 비추어 보면 명백하게 예상할 수 있 다. 어휘 분석기의 경우, 입력으로 기호(대개 문자)들의 스트림(stream)을 받아 그 기호들로 이루어진 스 트링(string)들의 스트림을 출력으로 내보내므로(이 기호 스트링을 토큰(token)이라고도 부르고, 이러한 이유로 scanner를 tokenizer라고 부르기도 한다), Lex(FLex) 입력 명세에는 입력 스트림으로부터 한 단위 로 모아야 하는 패턴들이 규정되어 있어야 한다. 구문 분석기의 경우는 기호 스트링들의 스트림을 입력 으로 받아 그 스트링들이 주어진 문법에 부합되는지의 여부를 판단하고 부합할 때는 출력으로 그 스트 링들의 파스 트리(parse tree) 또는 구문 트리(syntax tree)를 내보낸다(출력은 컴퓨터 내부에서 꼭 명시 적으로 트리 형태를 가질 필요는 없으며, 구문 분석 과정에서 묵시적으로 구성되어 이용될 수도 있다). 따라서 Yacc(Bison) 입력 명세에는 문법의 생성 규칙(production rule)들이 규정되어 있어야 한다. (2) Lex(Flex)와 Yacc(Bison)의 입력 파일 형식의 얼개 두 프로그램의 입력 파일 모두 크게 세 부분으로 구성되어 있으며, 각 부분의 역할도 비슷하다. 첫 번 째 부분은 선언(declaration)이나 정의(definition)가 포함되며, 두 번째 부분은 본론에 해당하는 것으로서 각 프로그램이 수행하는 일에 대한 규칙(보통 번역 규칙(translation rule)이라고 부른다)을 기술하고, 세 번째 부분은 보조 프로시저(auxiliary procedure) 또는 지원 프로그램(supporting routines)을 담고 있다. 이 세 부분들 중 꼭 있어야 하는 필수 부분은 두 번째 부분이고, 첫 번째와 세 번째 부분은 필요 없는 경우 생략이 가능하다. 각 부분은 연속된 두 개의 % 기호로 구분된다. 첫 번째와 세 번째 부분에 대한 설명은 뒤에 예제를 통해 하기로 하고, 가장 핵심이 되는 두 번째 부 분에 대해 간략하게 언급하고자 한다

4 Lex(Flex)의 경우 이 두 번째 부분은 아래 패턴 1 { 동작 1 패턴 2 { 동작 2 패턴 n { 동작 n 와 같은 형식을 가지고 있는데, 앞부분의 패턴(pattern)이 입력 스트림에서 발견되면 뒷부분에 있는 동작 (action)을 실행하라는 의미이다. 동작은 C 언어로 된 문장들로서, 하나의 문장이면 중괄호(curly braces) 가 필요 없다. 패턴은 스트링 패턴을 기술하는 데 보편적으로 사용되는 정규 표현(regular expression)을 Lex에서 확장한 것을 사용한다. Yacc(Bison)의 경우 이 두 번째 부분은 아래 생성 규칙 1의 좌변 : 의미 동작이 추가된 생성 규칙 1의 우변 생성 규칙 2의 좌변 : 의미 동작이 추가된 생성 규칙 2의 우변 생성 규칙 n의 좌변 : 의미 동작이 추가된 생성 규칙 n의 우변 와 같은 형식을 가지고 있는데, 생성 규칙의 우변에 있는 문법 기호(grammar symbol)들 사이의 필요한 곳에 중괄호에 둘러싸인 의미 동작(semantic action)이 삽입되어 있는 형태이다. 즉, 구문-인도 번역 (syntax-directed translation)의 한 종류인 번역 방략(translation scheme) 형태인 것이다. 의미 동작은 Lex(Flex) 입력 파일에서의 동작과 마찬가지로 역시 C 언어로 된 문장들이다

5 2. 예제들을 통한 Lex(Flex) 설명 (1) 첫 번째 예제: 파일의 줄 번호 붙이기 버전 1 %{ /* * line numbering 1 */ int lineno = 1 % \n { lineno++ ECHO ^.*$ printf("%d\t%s", lineno, yytext) 예제 1. 파일 이름 ln1.l : 공백 줄은 건너뛰면서 줄 번호 붙이기 먼저, 상기 파일의 경우 Lex 입력 파일 형식에서 세 번째 부분이 없고 첫 번째와 두 번째 부분만 있 는 상태이다. 세 번째 부분이 없으므로, 두 번째와 세 번째 부분을 구분하는 두 번째 은 생략되어 있 다. 첫 번째 부분에서 %{ 와 % 에 둘러싸인 부분을 볼 수 있는데, 이 부분은 Lex(Flex)에 의해 별다른 처 리가 되지 않고 내용 그대로(in verbatim)가 결과 파일인 lex.yy.c (이 이름은 Flex의 경우 -o 옵션과 함께 사용자가 원하는 대로 지정하여 바꿀 수 있다)에 포함된다(being dumped). 결과적으로 lineno 란 전역(global) 변수를 어휘 분석기 프로그램에서 사용할 수 있게 된다. 이 변수는 입력 파일의 줄 번호를 세는 역할을 하게 된다. 두 번째 부분에는 두 개의 패턴이 규정되어 있다. 첫째는 \n 인데, 글자 그대로 줄바꿈(new line) 문자만이 이 패턴에 부합한다. 그리고 그 패턴이 입력 에서 인식되면 해야 될 동작으로는 lineno 변수를 1 증가시키고 ECHO 란 이름의 매크로(macro)(이 매크로는 Lex(Flex)에 의해 정의되어 있는데, 역할은 지금 패턴에 부합한다고 인식된 토큰을 출력하는 것 이다. 지금 경우는 그 인식된 토큰은 \n 이다. 따라서 출력에서 줄이 바뀔 것이다)를 호출하는 것이다. 둘째는 ^.*$ 인데, 여러 가지 Lex(Flex) 내의 메타-문자(meta-character)가 사용되고 있다. 제일 앞의 ^ 은 입력 파일의 한 줄에서 제일 앞을 의미한다(그렇지만 제일 앞에 있는 특정 기호를 의미하는 것은 아니다). 마지막에 있는 $ 은 반대로 한 줄의 제일 끝을 의미한다(역시 제일 끝에 있는 특정 기호를 의 미하는 것은 아니다). 이들 중간에 있는.* 에서. 은 Lex(Flex)에서 줄바꿈 문자를 제외한 임의의 문자 를 의미한다. 그리고 * 은 표준적인 정규 표현에서의 의미 그대로, 그 앞에 있는 패턴에 부합하는 스트 링(기호는 길이가 1인 스트링이므로 당연히 포함)이 아예 없든지 아니면 임의 횟수 반복될 수 있음을 의 미한다(reflexive transitive closure). 결국 이것들을 종합하면, 둘째 패턴은 입력 파일에서 임의의 한 줄에 서 마지막에 있는 줄바꿈 문자를 제외한 나머지 줄 전체와 부합한다. 그리고 그 패턴이 입력에서 인식 되면 줄 번호를 담고 있는 lineno 변수의 값을 출력하고 이어서 yytext 를 출력하는데, yytext 는 - 5 -

6 Lex(Flex)에서 토큰을 인식하는 과정에서 그것을 임시로 저장하는 버퍼(buffer)로서 문자 배열(character array)이다. 결과적으로 패턴에 부합된다고 인식된 토큰을 출력하는 셈이다. (첫째 패턴에서 본 ECHO 와 printf("%s", yytext) 는 동일한 결과를 만든다. 인식된 토큰을 출력하는 이런 일이 워낙 빈번하게 사용되므로, Lex(Flex)에서 그것을 위한 축약형으로 ECHO 매크로를 정의하여 제공하는 것이다.) 이제 상기 Lex(Flex) 입력 파일을 사용해 보도록 하자. 다음 C:\Users\JohnDoe> flex ln1.l C:\Users\JohnDoe> gcc -o ln1 lex.yy.c -lfl 과 같은 순서로 실행시킨다(사용한 플랫폼은 32비트 Windows 7이고, C:\Users\JohnDoe> 는 명령 프롬 프트(command prompt)이다). Flex 프로그램을 파일 ln1.l 을 입력으로 하여 실행시킨다. 그 결과로 현 재 디렉토리(directory)에 lex.yy.c 파일이 생긴다. 이 C 프로그램 파일을 컴파일한다. 이때 주의할 점은 Flex 라이브러리를 컴파일할 때 링크시켜야( -lfl ) 무사히 컴파일되어 실행 파일이 만들어진다. 이렇게 만들어진 실행 파일에 아래 day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c := 1 while (c) do c := c - 1 와 같은 입력 파일(파일 이름 data.p. Pascal 언어의 구문으로 된 간단한 몇 문장을 포함하고 있다)을 다음 C:\Users\JohnDoe> ln1 < data.p 과 같이 실행시키면 아래 1 day := (1461*y) div 4 + (153*m+2) div 5 + d 3 if a then c := 1 5 while (c) 6 do c := c - 1 와 같은 결과가 나온다. 결과에서 보듯이 \n 문자만으로 이루어진 빈 줄에 대해서는 줄 번호가 없이 빈 줄만 출력된다

7 (2) 두 번째 예제: 파일의 줄 번호 붙이기 버전 2 Lex(Flex) 입력 파일은 다음 %{ /* * line numbering 2 */ int lineno = 0 % ^.*\n printf("%d\t%s", ++lineno, yytext) 예제 2. 파일 이름 ln2.l : 공백 줄을 포함하여 모든 줄에 줄 번호 붙이기 과 같다. 예제 1과 마찬가지로, Lex(Flex) 입력 파일 형식에서 세 번째 부분은 없는 상태이다. 예제 1에서 설명한 내용만으로도 예제 2를 이해하는 데는 어려움이 없을 것이다. 예제 1에서처럼 Flex를 실행시킨 뒤 만들어진 lex.yy.c 파일을 컴파일하여 만든 실행 파일에 data.p 파일을 입력으로 줘서 실행시키면 아래 1 day := (1461*y) div 4 + (153*m+2) div 5 + d 2 3 if a then c := while (c) 6 do c := c - 1 와 같은 결과가 나온다. 보다시피 모든 줄에 줄 번호가 붙여져 있다

8 (3) 세 번째 예제: 파일의 줄 수, 단어 수, 글자 수 세기 Lex(Flex) 입력 파일은 다음 %{ /* * word count */ int nchar, nword, nline % \n ++nchar, ++nline [^ \t\n]+ ++nword, nchar += yyleng. ++nchar int main(void) { yylex() printf("%d\t%d\t%d\n", nchar, nword, nline) return 0 예제 3. 파일 이름 wc.l : 입력 파일의 줄 수, 단어 수, 글자 수 세기 과 같다. 상기 파일의 경우 Lex(Flex) 입력 파일 형식의 세 부분을 모두 갖추고 있음에 유의하자. 먼저 첫 번째 부분을 보면, 각각 글자 수, 단어 수, 줄 수를 저장하기 위한 세 변수 nchar, nword, nline 이 선언되어 있다. 이 선언은 주석문과 함께 %{, % 사이에 위치하므로 변경 없이 고스란히 Lex의 결과 파일인 lex.yy.c 에 전역 변수로 포함된다. 두 번째 부분을 보면 세 개의 패턴과 그에 대한 동작이 규정되어 있다. 첫째는 \n 으로서 입력 파일에 포함되어 있는 줄바꿈 문자만이 부합한다. 따라서 글자 수와 줄 수가 1씩 증가한다. 둘째는 [^ \t\n]+ 인데 몇 가지 Lex의 메타-문자들이 사용되고 있다. 대괄호( [ 와 ] )는 문자 클래스 (character class)를 나타낸다. 예컨대 패턴 [ab] 는 스트링 a 나 b 가 부합하고, 패턴 [ \t\n] 은 스 트링 (공백 문자로 이루어진 스트링)이나 \t 이나 \n 이 부합한다. Lex에서 ^ 문자는 줄의 제일 앞 을 나타내기도 하나, 대괄호 안에서 사용되면 후속 문자들을 제외한 다른 문자들 이라는 의미를 가진다. 따라서 패턴 [^ \t\n] 은 공백 문자와 탭(tab) 문자 그리고 줄바꿈 문자를 제외한 다른 임의의 문자들 이 부합한다. 마지막으로 + 는 거의 표준적인 정규 표현으로서 그 앞에 있는 패턴에 부합하는 스트링이 한 번 이상 임의 횟수 반복될 수 있음을 의미한다(positive closure). 결국 종합하면 둘째 패턴은 임의 문 자들로 이루어진 임의 길이 스트링(중간에 공백 문자나 탭 문자나 줄바꿈 문자로 끊어지지 않은)에 부합 - 8 -

9 한다. 곧 단어 라고 볼 수 있다. 그러므로 단어 수를 1 증가시키고 글자 수는 단어의 길이만큼 증가시켜 야 한다. 즉 지금 이 패턴에 부합된 실제 스트링의 길이만큼 nchar 변수를 증가시켜야 하는 것이다. Lex(Flex)에서는 명시된 패턴에 부합되어 인식한 입력 스트링의 길이를 담고 있는 변수를 미리 제공하고 있는데 바로 yyleng 이다. 셋째는. 인데 앞에서 설명했듯이 줄바꿈 문자를 제외한 임의 문자가 부합하는 패턴이다. 첫째 패턴 과 둘째 패턴에서 부합되지 않는 입력은 이제 와 \t 이다. 따라서 글자 수만 1 증가시켜 주면 된다. 세 번째 부분을 보면 main 함수가 정의되어 있다. 우리가 Lex(Flex)로부터 만들어진 lex.yy.c 파일 을 열어보면 어휘 분석을 담당하는 함수로 yylex 가 만들어져 있다. C 프로그램 실행에 필수인 main 함수 역시 정의되어 있는데, 이 기본(default) main 함수가 하는 일은 단순히 yylex 함수를 호출하는 것이 전부다. 이 yylex 함수가 실행되면서 입력의 글자 수, 단어 수, 줄 수 등을 두 번째 부분에서 지 시된 대로 계산할 터이나, 기본 main 함수는 그 결과를 출력조차 하지 않는다. 따라서 이 출력 기능을 추가한 main 함수를 사용자가 새롭게 정의해야 한다. 세 번째 부분의 main 함수는 그 역할을 하는 것이다. 이렇게 사용자가 정의한 main 함수가 제공되는 경우 자동적으로 Lex(Flex)의 기본 main 함수 는 가려진다. 예제 1과 2에서처럼 Lex(Flex)를 실행시킨 뒤 만들어진 lex.yy.c 파일을 컴파일하여 만든 실행 파 일에 data.p 파일을 입력으로 줘서 실행시키면 아래 와 같은 결과가 나온다. (실습 플랫폼이 UNIX 계열이라면, 이것이 제대로 된 결과인지를 확인하기 위해 굳이 data.p 파일의 글자 수, 단어 수, 줄 수를 셀 필요는 없다. UNIX 시스템의 기본 명령 중에 wc 가 있는데 이것이 바로 입력의 글자 수, 단어 수, 줄 수를 세는 기능을 가지고 있다. 물론 Linux 시스템 에서도 기본적으로 지원된다. 이 명령에 인자로 data.p 파일을 주고 실행시키면 결과는 다음 $ wc data.p data.p 과 같다. 보다시피 글자 수, 단어 수, 줄 수의 순서만 바뀌었을 뿐 동일한 결과를 보여주고 있다.) - 9 -

10 3. 예제들을 통한 Yacc(Bison) 설명 (1) 첫 번째 예제: 중위(infix) 수식을 후위(postfix) 수식으로 변환 버전 1 Yacc(Bison) 입력 파일은 다음 %{ #include <stdio.h> #include <ctype.h> % %token DIGIT line : expr '\n' { putchar('\n') expr : expr '+' term { putchar('+') expr '-' term { putchar('-') term term : DIGIT { printf("%d", yylval) int yylex() { int c while (1) { c = getchar() if (c == ' ' c == '\t') else if (isdigit(c)) { yylval = c - '0' return DIGIT else return c int main() { if (yyparse() == 0) printf("파싱 성공!\n\n") else printf("파싱 실패!\n\n") 예제 4. 파일 이름 in2po-rec1.y : 단자리 숫자로 이루어진 중위 수식을 후위 수식으로 변환

11 과 같다. 이 파일에는 세 부분이 모두 있다. 하나씩 살펴보자. 첫 번째 부분에서 %{ 와 % 에 둘러싸인 부분은 Lex(Flex)에서와 마찬가지로 Yacc(Bison)이 변경하지 않고 그대로 결과 파일인 y.tab.c (오리지널 Yacc의 경우)에 포함시킨다. 결과적으로 Yacc(Bison)이 만 든 파서 프로그램에서 C 언어의 표준 헤더 파일인 <ctype.h> 를 포함시키는 효과를 내고 그 결과 다 양한 문자 판별 술어함수(predicate)를 사용할 수 있게 된다. 첫 번째 부분의 나머지에는 Yacc(Bison)의 키워드(keyword) %token 을 사용한 선언이 하나 있는데, 두 번째 부분에서 사용되는 DIGIT 이란 기호 가 단말(terminal) 기호란 표시이다. 기본적으로 Yacc(Bison)은 두 번째 부분에서 사용되는 모든 식별자 (identifier)를 비단말(nonterminal) 기호라고 간주한다. 단말 기호로 Yacc(Bison)이 인식하게 하려면, 홑따 옴표(single quote)에 둘러싸인 문자이거나 Yacc 입력 파일 첫 번째 부분에서 %token 을 사용해 단말 기호라고 선언해야 한다. 두 번째 부분에는 단자리 숫자들이 + 와 로 엮어진 중위 수식을 표현하기 위한 문법이 기술되어 있 고, 거기에 그 중위 수식을 후위 수식으로 변환하기 위한 의미 동작이 추가되어 있다. 곧 번역 방략이 나와 있다는 뜻이다. 이 번역 방략의 내용은 자명하기에(교재에서 학습하기도 한 내용이라) 설명은 생략 하고, 문법의 마지막 생성 규칙에 추가된 의미 동작에서 사용되고 있는 변수 yylval 에 대해서만 언급 한다. 이 변수는 Yacc(Bison)에서 미리 정의되어 있는데, 어휘 분석기에서 인식한 토큰을 Yacc(Bison)에 의해 만들어진 파서 쪽으로 반환할 때 추가로 반환할 속성(attribute) 값이 있는 경우 그것을 저장하여 전달하는 데 사용된다. 주로 Yacc(Bison)과 Lex(Flex)를 연동하여 사용할 때 Lex(Flex)에서 만든 어휘 분석 기가 토큰을 인식하면서 원하는 값을 저장한 뒤 Yacc(Bison)에서 만들어진 파서 쪽으로 복귀하는 식으로 이용되는 게 일반적이다. 세 번째 부분에는 main 함수와 어휘 분석기 함수 yylex 가 포함되어 있다. Yacc(Bison)에서 만들어 진 파서 함수(이름은 yyparse 로 고정되어 있다)는 파싱 과정에서 필요할 때마다 어휘 분석기에게 토 큰을 요구하는데, 어휘 분석기 함수의 이름이 yylex 라고 무조건 생각한다. 따라서 Lex(Flex)를 이용하 여 어휘 분석기를 만드는 경우에는 만들어진 어휘 분석기 함수 이름이 저절로 yylex 로 고정되어 있으 므로 신경 쓸 필요 없으나, 이 예제처럼 수동으로 어휘 분석기를 만드는 경우에도 어휘 분석기 함수 이 름은 무조건 yylex 로 붙여야 한다. 여기서 수동으로 작성된 어휘 분석기 함수 yylex 의 내용을 보면, 공백 문자와 탭 문자는 그냥 지나가고 숫자는 단자리로 끊어서 DIGIT 이란 토큰으로 인식한다. 이 DIGIT 토큰의 토큰 값은 자동으로 Yacc(Bison)에 의해 정의되므로 사용자는 그냥 DIGIT 을 반환하면 Yacc(Bison)에서 만들어진 구문 분석기가 알아본다. 단자리 숫자로 이루어진 DIGIT 토큰의 경우, 그 단 자리 숫자의 실제 정수 값을 구해서 토큰의 추가 속성 값을 저장하는 변수 yylval 에 넣은 뒤 아울러 파서 쪽으로 복귀한다. 그 외 + 나 - 나 \n 과 같은 한 글자 토큰은 각 문자의 코드(예컨대 ASCII) 값을 토큰 값으로 반환하게 된다. main 함수는 파서 함수인 yyparse 를 호출하는 것이 주된 임무이다. 호 출된 yyparse 함수는 필요할 때마다 yylex 함수를 불러 토큰을 받아 파싱을 진행한다. 입력에 대해 성공적으로 파싱이 완료되면 yyparse 함수는 0을 반환한다. 이제 상기 Yacc(Bison) 입력 파일을 사용해 보자. 다음 C:\Users\JohnDoe> bison -y in2po-rec1.y C:\Users\JohnDoe> gcc -o in2po-rec1 y.tab.c -ly

12 과 같은 순서로 실행시킨다. Bison 프로그램을 파일 in2po-rec1.y 를 입력으로 하여 실행시킨다. 옵션 -y 는 Bison을 오리지널 Yacc과 같은 모드(mode)로 실행하라는 뜻이다. 그 결과로 현재 디렉토리에 y.tab.c 파일이 생긴다. 이 C 프로그램 파일을 컴파일한다. 이때 주의할 점은 Yacc(Bison) 라이브러리 를 컴파일할 때 링크시켜야( -ly ) 무사히 컴파일되어 실행 파일이 만들어진다. 이렇게 만들어진 실행 파일을 다음 C:\Users\JohnDoe> in2po-rec 파싱 성공! 과 같이 사용한다. 보다시피 단자리 숫자를 피연산자로 하는 중위 수식을 동일한 의미의 후위 수식으로 변환한다(출력할 때 피연산자들 사이에 공백을 주지 않아서 붙어 나오는 바람에 보기는 다소 불편하다)

13 (2) 두 번째 예제: 중위 수식을 후위 수식으로 변환 버전 2 첫 번째 예제에서 한 것과 동일한 일을 Lex(Flex)와 Bison을 함께 사용하여 하고자 한다. 먼저 Bison 입력 파일은 다음 %{ #include <stdio.h> #include <ctype.h> % %token DIGIT line : expr '\n' { putchar('\n') expr : expr '+' term { putchar('+') expr '-' term { putchar('-') term term : DIGIT { printf("%d", yylval) int main() { if (yyparse() == 0) printf("파싱 성공!\n\n") else printf("파싱 실패!\n\n") 예제 5. 파일 이름 in2po-rec2.y : 단자리 숫자로 이루어진 중위 수식을 후위 수식으로 변환 과 같다. 보다시피 동일한 일을 하는 첫 번째 예제에서의 Yacc(Bison) 입력 파일과 거의 동일하다. 다만 이제 어휘 분석기는 Lex(Flex)에 의해 만들어질 것이므로, 직접 작성했던 어휘 분석기 함수 yylex 부분 이 삭제되었다

14 Lex(Flex) 입력 파일은 다음 %{ #include "in2po-rec2.tab.h" % [ \t]+ [0-9] { yylval = yytext[0] - '0' return DIGIT [+\-\n] return yytext[0] 예제 6. 파일 이름 in2po-rec2.l : 단자리 숫자로 이루어진 중위 수식을 후위 수식으로 변환 과 같다. 세 부분들 중 세 번째 부분은 없는 구조이다. 첫 번째 부분을 보면 Lex(Flex)의 결과 파일인 lex.yy.c 에 그대로 포함되는 부분이 있는데 in2po-rec2.tab.h 라는 이름의 헤더 파일을 포함시키는 문장이다. 이 파일은 Bison에 의해 만들어지 는데(뒤에서 추가 설명한다), Bison에 의해 정의된 토큰의 값이나 타입을 포함하고 있다. 예를 들면 Bison 입력 파일에서 비단말 기호가 아니라 단말 기호, 즉 토큰으로 선언된 DIGIT 의 토큰 값은 Bison 이 자동으로 배당하는데, 그 정의가 이 파일에 포함되어 있는 것이다. 이 파일에서 그 정의가 나오는 근 처 부분을 보면 아래 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { DIGIT = 258 #endif 와 같다. 보다시피 258의 값을 가지는 기호 상수로 정의되어 있다. 이 헤더 파일을 Lex(Flex)의 결과 파 일인 lex.yy.c 가 포함시켜야 Lex(Flex) 입력 파일의 두 번째 부분에 있는 동작에서 DIGIT 을 토큰 값 으로 사용할 수 있는 것이다. 음 참고로 Bison이 아닌 Yacc을 동일 입력 파일에 대해 실행시켜 만들어지는 y.tab.h 파일을 보면 다 #ifndef _yacc_defines_h_ #define _yacc_defines_h_ #define DIGIT 257 #define YYERRCODE 256 #endif

15 과 같다. Bison에 비하면 상당히 간략하지만, 역시 토큰 DIGIT 은 257의 값을 가지는 기호 상수로 정의 되어 있다. 두 번째 부분은 대부분 이미 설명된 내용만으로 이해에 어려움이 없겠지만, 셋째 패턴에 새롭게 나타 난 Lex(Flex)의 메타-문자가 있다. \ 가 그것인데, 이것은 그 바로 뒤에 나오는 문자가 Lex(Flex)의 메타- 문자이면 그 의미를 상실하고 문자 자체를 나타내도록 하는 효과가 있다. 즉, 일반적인 UNIX-C 커뮤니 티의 관례인 이스케이프(escape) 문자로서의 백슬래쉬(backslash) 의미 그대로 사용된다. 그러면 왜 앞에 백슬래쉬를 썼는가 하는 점에 설명이 필요한데, 가 문자 클래스를 나타내는 대괄호 사이에 있으 면 문자들의 범위(range)를 뜻하는 메타-문자로 기능하기 때문이다. 예컨대 [abcde] 와 [a e] 는 동일 한 패턴을 나타내는 것이다. 이제 이 두 Lex(Flex) 입력 파일과 Bison 입력 파일을 사용해 보도록 하자. 다음 C:\Users\JohnDoe> flex in2po-rec2.l C:\Users\JohnDoe> bison -d in2po-rec2.y C:\Users\JohnDoe> gcc -o in2po-rec2 lex.yy.c in2po-rec2.tab.c -lfl -ly 과 같은 순서로 명령을 실행하여 실행 파일을 만든다. Lex(Flex)를 실행함으로써 어휘 분석기 yylex 를 포함하고 있는 lex.yy.c 파일이 만들어진다. Yacc과 Bison은 거의 비슷하나, 만들어지는 파일 이름이 차이가 난다. Yacc은 실행 결과 y.tab.c 를 만드나, Bison은 실행 결과 파일 이름이 Bison 입력 파일 의 확장자 앞부분 에 확장자로 'tab.c 를 붙여서 만든 것이 된다. 예를 들어 Bison 입력 파일 이름이 이 예제에서처럼 in2po-rec2.y 라고 하면 결과 파일 이름은 in2po-rec2.tab.c 가 되는 식이다. 또 앞 서 말한 Yacc(Bison)의 정의를 포함하고 있는 헤더 파일은 기본적으로 만들어지는 것이 아니라, Yacc(Bison)을 실행시킬 때 d 옵션(option)을 줘야 한다. 이 옵션을 가지고 실행되면 y.tab.c (Yacc의 경우)나 in2po-rec2.tab.c (Bison의 경우) 뿐만 아니라, y.tab.h (Yacc의 경우)나 in2po-rec2.tab.h (Bison의 경우)도 함께 만들어낸다. 이 헤더 파일은 우리 Lex(Flex) 입력 파일에서 규정된 것처럼 lex.yy.c 에 포함될 것이다. 이렇게 만들어진 실행 파일을 다음 C:\Users\JohnDoe> in2po-rec 파싱 성공! 과 같이 사용한다. 보다시피 단자리 숫자를 피연산자로 하는 중위 수식을 동일한 의미의 후위 수식으로 변환한다

16 (3) 세 번째 예제: 간단한 단자리 수 계산기 단자리 숫자들을 피연산자로 하고 더하기와 빼기만 연산자로 허용되는 중위 수식을 받아들여 그 식의 결과 값을 계산하는 계산기 프로그램을 Yacc(Bison)을 이용해 만들고자 한다. Yacc(Bison) 입력 파일은 다음 %{ #include <stdio.h> #include <ctype.h> % %token DIGIT line : expr '\n' { printf("%d\n", $1) expr : expr '+' term { $$ = $1 + $3 expr '-' term { $$ = $1 - $3 term term : DIGIT { $$ = $1 int yylex() { int c while (1) { c = getchar() if (c == ' ' c == '\t') else if (isdigit(c)) { yylval = c - '0' return DIGIT else return c int main() { if (yyparse() == 0) printf("파싱 성공!\n\n") else printf("파싱 실패!\n\n") 예제 7. 파일 이름 calc.y : 단자리 숫자로 이루어진 중위 수식의 값을 계산

17 과 같다. 일단 큰 뼈대는 예제 4 표에 있는 Yacc(Bison) 입력 파일과 동일하다. 단지 두 번째 부분에 포 함된 의미 동작들이 다를 뿐이다. 여기에서 $$ 또는 $1 이나 $2 등과 같은 표현이 사용되고 있는데 이것은 생성 규칙에 나타나는 문 법 기호에 첨부된 속성 값을 나타낸다. $$ 는 생성 규칙의 좌변에 있는 비단말 기호에 부착된 속성 값, $i (i = 1, 2, )는 생성 규칙의 우변에 있는 i-번째 문법 기호에 부착된 속성 값을 나타내는 방식이다. 이 표현을 이용하면 파싱이 진행되면서 문법 기호들의 속성 값을 사용한 다양한 응용이 가능하다. Yacc(Bison)은 상향식(bottom-up) 파싱 알고리즘인 LALR 기법을 사용한다. 그러므로 제일 처음 어휘 분석 단계에서 인식된 토큰에 대해 yylval 변수를 통해 초기 속성 값을 부여한다. 파스 트리의 잎 노 드(leaf node)에 부착된 속성 값은 이 $-표현을 이용해서 파스 트리의 중간 노드(interior node)나 루트 노드(root node)까지 전달될 수 있다. 이것만 이해하면 상기 Yacc(Bison) 입력 파일을 이해하는 데는 문 제가 없을 것이다. 이제 상기 Yacc(Bison) 입력 파일을 사용해 보자. 다음 C:\Users\JohnDoe> bison -y calc.y C:\Users\JohnDoe> gcc -o calc y.tab.c -ly 과 같은 순서로 실행시켜 실행 파일을 만든다. 이렇게 만들어진 실행 파일을 다음 C:\Users\JohnDoe>./calc 파싱 성공! 과 같이 사용한다

18 (4) 네 번째 예제: 가상 스택 기계를 위한 어셈블리(assembly) 코드로 컴파일하기 컴파일러 과목의 표준적 교재중 하나인 Compilers: Principles, Techniques, and Tools (by Aho, Sethi, and Ullman) 의 2.8절에는 가상 스택 기계(Abstract Stack Machine)라고 부르는 페이퍼 머신(paper machine)이 간략하게 정의되어 있다. 이제 Lex(Flex)와 Yacc(Bison)을 이용해 Pascal 언어의 간단한 문장들을 이 가상 스택 기계의 어셈블리 코드로 번역하는 일을 해 보자. 이 문장들을 포함하고 있는 파일(좀 과장하자면 Pascal 프로그램 파일)이 앞에서 몇 번 사용된 data.p 이다. 아래에 다시 보였다. day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c := 1 while (c) do c := c

19 Lex(Flex) 입력 파일은 다음 %{ /* * 추상 스택 기계의 목적 코드 생성 예제 */ #include <string.h> #include "y.tab.h" % delim [ \t\n] ws {delim+ letter [A-Za-z] digit [0-9] id {letter({letter {digit)* number {digit+(\.{digit+)?(e[+\-]?{digit+)? {ws ":=" return(assign) div return(div) mod return(mod) if return(if) then return(then) while return(while) do return(do) {id { strcpy(yylval.lexeme, yytext) return(id) {number { strcpy(yylval.lexeme, yytext) return(num). return(yytext[0]) 예제 8. 파일 이름 stack-m.l : 추상 스택 기계를 위한 Pascal 컴파일러 Lex(Flex) 입력 과 같다. 상기 Lex(Flex) 입력 파일에 대해서 몇 가지 설명이 필요할 듯하다. 첫 번째 부분을 보면 여러 가지 이 름( delim, ws 등)을 정의하는 것이 있는데, 보통 정규 정의(regular definition)이라고 부른다. 이것은 두 번째 부분에서 패턴을 기술할 때 사용함으로써 패턴 기술을 알아보기 쉽게 만들기 위한 부분식 (subexpression) 정의라고 볼 수 있다. 또 새롭게 나타난 Lex(Flex) 메타-문자가 하나 있는데,? 이다. 이 문자도 거의 표준적 정규 표현에 가까운데,? 앞의 패턴에 해당하는 스트링이 있을 수도 있고 없을 수 도 있다(being optional)는 것을 나타낸다. 상기 파일에서는 상수(number) 패턴을 기술하는데 분수 부분 이나 지수 부분이 있을 수도 있고 없을 수도 있다는 점을 나타낸 것이다. 토큰의 추가 속성 값을 전달하기 위한 변수 yylval 의 기본 타입은 int 이다. 만약 다른 타입의 값 을 전달하고 싶다면 Yacc의 입력 파일에서 %union 키워드를 이용한다. 뒤의 이 예제를 위한 Yacc(Bison) 입력 파일에서 보게 되겠지만, 현재 예제에서 토큰의 추가 속성 값 타입은 10개의 원소를

20 가진 문자 배열로 선언되어 있고 그 값에 접근하기 위한 공용체(union) 필드(field) 이름은 lexeme 으로 정의되어 있다. 따라서 상기 Lex(Flex) 입력 파일을 보면 식별자나 상수와 같은 토큰이 입력에서 인식되 면, 그것이 입력에서 나타난 실제 스트링(lexeme)을 yylval.lexeme 에 복사되어 파서 쪽으로 전달하 도록 되어 있다. 이 예제를 위한 Yacc(Bison) 입력 파일은 다음 %{ /* * 추상 스택 기계의 목적 코드 생성 예제 */ #include <stdio.h> #include <string.h> char *tmp_lbl1, *tmp_lbl2 % %union { char lexeme[10] %start list %token ID NUM DIV MOD ASSIGN IF THEN WHILE DO list : list '' stmt stmt stmt : ID ASSIGN { printf("\tlvalue\t%s\n", $1) expr { printf("\t:=\n") IF expr { tmp_lbl1 = new_lbl_no() printf("\tgofalse\t%s\n", tmp_lbl1) THEN stmt { printf("label\t%s\n", tmp_lbl1) WHILE { tmp_lbl1 = new_lbl_no() printf("label\t%s\n", tmp_lbl1) expr { tmp_lbl2 = new_lbl_no() printf("\tgofalse\t%s\n", tmp_lbl2) DO stmt { printf("\tgoto\t%s\n", tmp_lbl1)

21 printf("label\t%s\n", tmp_lbl2) expr : expr '+' term { printf("\t+\n") expr '-' term { printf("\t-\n") term term : term '*' factor { printf("\t*\n") term '/' factor { printf("\t/\n") term DIV factor { printf("\tdiv\n") term MOD factor { printf("\tmod\n") factor factor : '(' expr ')' ID { printf("\trvalue\t%s\n", $1) NUM { printf("\tpush\t%s\n", $1) char* new_lbl_no(void) { static int lbl_no = 0 char buf[4] int i, quot char *lbl_header lbl_header = (char *)malloc(5) strcpy(lbl_header, "lbl_") buf[3] = '\0' quot = lbl_no++ for (i = 2 - (quot / 10) i >= 0 i--) { buf[i] = '0' + quot % 10 quot = quot / 10 return((char *)strcat(lbl_header, buf)) int main(void) { printf("\ncompilation for Abstract Stack Machine Started...\n\n") printf("\nassembly code for Abstract Stack Machine follows...\n\n") if (yyparse() == 0) printf("\n\ncompilation for Abstract Stack Machine Completed!\n") else printf("\n\ncompilation for Abstract Stack Machine Failed!\n") 예제 9. 파일 이름 stack-m.y : 추상 스택 기계를 위한 Pascal 컴파일러 Yacc(Bison) 입력

22 과 같다. 상기 파일의 첫 번째 부분에 나오는 %start 키워드는 그 다음에 오는 식별자가 두 번째 부 분에 기술되어 있는 문법의 시작 기호(start symbol)라는 점을 선언하는 것이다. 만약 이게 없으면 문법 의 첫 번째 생성 규칙의 좌변에 있는 비단말 기호를 시작 기호로 Yacc(Bison)은 생각한다. 세 번째 부분 에 정의되어 있는 new_lbl_no 함수는 과거 만든 레이블(label)과는 다른 새로운 레이블을 만들어서 돌려주는 함수이다. 상기 Lex(Flex) 입력 파일과 Yacc(Bison) 입력 파일을 이용하여 실행 파일은 다음 C:\Users\JohnDoe> flex stack-m.l C:\Users\JohnDoe> bison -yd stack-m.y C:\Users\JohnDoe> gcc -o stack-m lex.yy.c y.tab.c -lfl -ly 과 같이 만든다. 이렇게 만들어진 실행 파일에 입력으로 앞에 나온 data.p 파일을 주고 실행하여 그 결과를 data.asm 이라는 파일('asm'이라는 확장자는 assembly code 를 나타내는 뜻에서 붙였다)에 다 음 C:\Users\JohnDoe> stack-m < data.p > data.asm 과 같이 저장한다. 이 결과( data.p 파일에 들어있는 Pascal 프로그램을 추상 스택 기계의 어셈블리 코 드로 번역한 결과) 파일 data.asm 의 내용은 다음

23 Compilation for Abstract Stack Machine Started... Assembly code for Abstract Stack Machine follows... label label label lvalue day push 1461 rvalue y * push 4 div push 153 rvalue m * push 2 + push 5 div + rvalue d + := rvalue a gofalse lbl_000 lvalue c push 1 := lbl_000 lbl_001 rvalue c gofalse lbl_002 lvalue c rvalue c push 1 - := goto lbl_001 lbl_002 Compilation for Abstract Stack Machine Completed! 과 같다

24 4. 맺는 말 이상으로 몇 가지 예제를 이용하여 컴파일러 구성을 보조하는 대표적 소프트웨어 도구인 Lex(Flex)와 Yacc(Bison)의 작동을 살펴보았다. 넓게 보면 모든 프로그램은 정해진 형식의 입력을 처리하여 역시 정해진 형식의 출력을 내보낸다는 측면에서 일종의 컴파일러이다. 이 말은 곧 컴파일러 구성에 사용되는 여러 기법이 다른 분야의 프로그 램 작성에도 폭넓게 적용될 수 있음을 의미한다. 마찬가지로 Lex(Flex)와 Yacc(Bison)의 응용 범위도 매우 광범위하게 미칠 수 있다

商用

商用 商用 %{ /* * line numbering 1 */ int lineno = 1 % \n { lineno++ ECHO ^.*$ printf("%d\t%s", lineno, yytext) $ lex ln1.l $ gcc -o ln1 lex.yy.c -ll day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c :=

More information

(3) Windows 운영체제에 GNU C 컴파일러와 Flex, Bison 설치하기 적용된 Windows 운영체제는 32비트용 Windows 7이나, 다른버전에서도유사할것으로본다. 먼저 GNU C 컴파일러를설치한다. 이것을설치하는편한방법중하나가유명한무료 C/C++ 프로

(3) Windows 운영체제에 GNU C 컴파일러와 Flex, Bison 설치하기 적용된 Windows 운영체제는 32비트용 Windows 7이나, 다른버전에서도유사할것으로본다. 먼저 GNU C 컴파일러를설치한다. 이것을설치하는편한방법중하나가유명한무료 C/C++ 프로 컴파일러구성을위한대표적소프트웨어도구인 Lex( 또는 Flex) 와 Yacc( 또는 Bison) 입문 : Windows 환경에서 김도형 ( 성신여자대학교 IT 학부 ) 0. 소개 (1) Lex 와 Yacc 은무엇인가? 컴파일러의구성을도와주는대표적인소프트웨어도구들이다. 원래 UNIX의산실인벨연구소 (AT&T Bell Laboratories) 에서 UNIX 시스템의유틸리티

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

1. 27 (token descriptions) (regular expressions), grep egrep.. C. 1),., C (expressions), (statements), (declarations), (blocks) (procedures). (parsing

1. 27 (token descriptions) (regular expressions), grep egrep.. C. 1),., C (expressions), (statements), (declarations), (blocks) (procedures). (parsing (lex) (yacc). (object code) C. (unit).. C,,,,. ( ) (lexical analysis) (lexing). C (routine). (lexical analyzer) (lexer) (scanner). (lex specification). 1. 27 (token descriptions) (regular expressions),

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

EA0015: 컴파일러

EA0015: 컴파일러 4 Flex 무엇을공부하나? " 어휘분석기 (lexical analyzer 혹은 scanner)" 는다음과같은과정을거쳐서프로그램된다. 1 토큰정의, 2 정규식으로표현, 3 NFA로변환, 4 DFA로변환, 5 프로그램작성 위과정은앞장에서배운바와같이기계적으로이루어질수있다. "Flex(Fast Lexical Analyzer)" 는컴파일러개발자를위하여위과정을자동으로처리해주는도구이다.

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 13 렉스와야크 01 렉스와야크 02 렉스와야크의입력파일형식 03 플렉스와바이슨설치방법 04 플렉스사용법 05 바이슨사용법 렉스와야크의개념에대해이해할수있다. 렉스의입력파일형식과야크의입력파일형식에대해이해할수있다. 플렉스와바이슨의설치방법에대해이해할수있다. 플렉스사용법에대해이해할수있다. 바이슨사용법에대해이해할수있다. 13.1 렉스와야크 프로그래밍언어와컴퓨터구조가다양해짐에따라

More information

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 인 천 광 역 시 의 회 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

종사연구자료-이야기방2014 7 18.hwp

종사연구자료-이야기방2014 7 18.hwp 차례 1~3쪽 머리말 4 1. 계대 연구자료 7 가. 증 문하시랑동평장사 하공진공 사적기 7 나. 족보 변천사항 9 1) 1416년 진양부원군 신도비 음기(陰記)상의 자손록 9 2) 1605년 을사보 9 3) 1698년 무인 중수보 9 4) 1719년 기해보 10 5) 1999년 판윤공 파보 10 - 계대 10 - 근거 사서 11 (1) 고려사 척록(高麗史摭錄)

More information

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대 목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대도시권 광역교통관리에 관한 특별법 시행령 일부개정 3 5. 영유아보육법 시행령 일부개정 4

More information

형식 언어

형식 언어 컴파일러개요 아주대학교정보및컴퓨터공학부 목차 컴파일러란 프로그래밍언어 관련프로그램들 컴파일러의일반적인구조 컴파일러자동화도구 Compiler 2 컴파일러란 Compiler A compiler is a computer program which translates programs written in a particular high-level programming

More information

untitled

untitled 5. hamks@dongguk.ac.kr (regular expression): (recognizer) : F(, scanner) CFG(context-free grammar): : PD(, parser) CFG 1 CFG form : N. Chomsky type 2 α, where V N and α V *. recursive construction ) E

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

EA0015: 컴파일러

EA0015: 컴파일러 5 Context-Free Grammar 무엇을공부하나? 앞에서배운 " 정규식 " 은언어의 " 어휘 (lexeme)" 를표현하는도구로사용되었다. 언어의 " 구문 (syntax)" 은 " 정규언어 " 의범위를벗어나기때문에 " 정규식 " 으로표현이불가능하다. 본장에서배우는 " 문맥자유문법 " 은언어의 " 구문 (syntax)" 을표현할수있는도구이다. 어떤 " 문맥자유문법

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

Solaris Express Developer Edition

Solaris Express Developer Edition Solaris Express Developer Edition : 2008 1 Solaris TM Express Developer Edition Solaris OS. Sun / Solaris, Java, Web 2.0,,. Developer Solaris Express Developer Edition System Requirements. 768MB. SPARC

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2 3.1 Operational Semantics 숙대창병모 3 의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

초보자를 위한 C++

초보자를 위한 C++ C++. 24,,,,, C++ C++.,..,., ( ). /. ( 4 ) ( ).. C++., C++ C++. C++., 24 C++. C? C++ C C, C++ (Stroustrup) C++, C C++. C. C 24.,. C. C+ +?. X C++.. COBOL COBOL COBOL., C++. Java C# C++, C++. C++. Java C#

More information

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float Part 2 31 32 33 106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float f[size]; /* 10 /* c 10 /* f 20 3 1

More information

기사스크랩 (160504).hwp

기사스크랩 (160504).hwp 경향신문 / 2016.05.03(화) "갈등없는 성과연봉제 도입" 홍보하던 동서발전, 부당노동행위 정황 성과연봉제 노사합의안 찬반투표 당시 동서발전 울산화력본부 기표소 모습 공기업 발전회사 중 처음으로 성과연봉제 확대 도입에 대한 노사합의가 이뤄진 한국동서발전이 직원 들의 찬성 투표를 유도하기 위해 부당노동행위를 벌인 복수의 정황이 나왔다. 직원들에게 동의서를

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단 산림병해충 방제규정 산림병해충 방제규정 [ 시행 2015.9.9] [ 산림청훈령 제1262 호, 2015.9.9, 일부개정] 산림청( 산림병해충과), 042-481-4038 제1장 총칙 제1 조( 목적) 이 규정은 산림보호법 제3 장 " 산림병해충의 예찰 방제 에서 위임된 사항과 산림병해충( 이하 " 병 해충 이라 한다) 의 예방 구제를 위하여 병해충의 발생조사와

More information

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp 방송통신심의위원회 인터넷 내용심의와 그 위헌 여부에 관한 소론 - 서울고등법원 2011.2.1.자 2010아189 위헌법률심판제청결정을 중심으로 한국정보법학회 2011년 5월 사례연구회 2011. 5. 17.발표 변호사 김기중 미완성 원고임 1. 서론 헌법재판소는 2002. 6. 27. 99헌마480 전기통신사업법 제53조등 위헌확인사건에 서 불온통신 의 단속에

More information

Ⅰ- 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 Ⅰ- 32 Ⅰ- 33 Ⅰ- 34 Ⅰ- 35

More information

중간코드생성

중간코드생성 컴파일러구성 제 11 강 결정적구문분석 10.1 10.2 10.3 10.4 Introduction Syntax-Directed Translation Code Generation U-Code Translator Formal Specification lexical structure : regular expression syntactic structure : context-free

More information

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

More information

Microsoft PowerPoint - PLT_ch04_KOR

Microsoft PowerPoint - PLT_ch04_KOR Chapter 4 : 구문(Syntax) Lexical Structure Syntactic Structure: BNF, EBNF, Syntax Diagrams Parse Tree, Syntax Tree, and Ambiguity Parsing Techniques and Tools Lexics vs. Syntax vs. Semantics Introduction

More information

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp 2015년도 국가직 9급 컴퓨터 일반 문 1. 시스템 소프트웨어에 포함되지 않는 것은? 1 1 스프레드시트(spreadsheet) 2 로더(loader) 3 링커(linker) 4 운영체제(operating system) - 시스템 소프트웨어 : 운영체제, 데이터베이스관리 프로그램,, 컴파일러, 링커, 로더, 유틸리티 소프트웨 어 등 - 스프레드시트 : 일상

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4,500 04 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4,500 04 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10 2013년도 본예산 일반회계 환경위생과 ~ 환경위생과 세 출 예 산 사 업 명 세 서 부서: 환경위생과 단위: 환경정책 환경위생과 8,231,353 3,622,660 4,608,693 국 2,472,543 기 144,000 도 976,102 시 4,638,708 자연환경보호(환경보호/환경보호일반) 5,910,247 1,462,545 4,447,702 국 1,817,800

More information

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고 제2 발제문 임을 위한 행진곡 의 문제점 임 과 새 날 의 의미를 중심으로 양 동 안 (한국학중앙연구원 명예교수) 1. 머리말 어떤 노래가 정부가 주관하는 국가기념식의 기념곡으로 지정되려면(혹은 지정 되지 않고 제창되려면) 두 가지 필요조건을 충족시켜야 한다. 하나는 그 가요(특히 가사)에 내포된 메시지가 기념하려는 사건의 정신에 부합해야 한다는 것이다. 다

More information

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비 14강 역사영웅소설 15강 판소리계 소설 판소리계 소설 : , 등 일반적으로 판소리 사설의 영향을 받아 소설로 정착된 작품을 가리킨 판소리 : , , , , 등이 사설과 창이 전해지고 있 하층민의 예술로 시작하여 전계층을 아우르는 예술이 되었 상류층, 지배층이 향유층이 되면서 점차 작품의 주제가

More information

2008.3.3> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제<2001.2.10> 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

2008.3.3> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제<2001.2.10> 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규 노인복지법 시행규칙 [시행 2010. 3. 1] [보건복지가족부령 제161호, 2010. 2.24, 일 보건복지가족부 (노인정책과) 02-2023-85 제1조 (목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 함을 목적으로 한다. 제1조의2 (노인실태조사) 1 노인복지법 (이하 "법"이라 한다)

More information

노인복지법 시행규칙

노인복지법 시행규칙 노인복지법 시행규칙 [시행 2012.2.5] [보건복지부령 제106호, 2012.2.3, 타법개정] 제1조(목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 사항을 규정 함을 목적으로 한다. 제1조의2(노인실태조사) 1 노인복지법 (이하 "법"이라 한다) 제5조에 따른 노인실태조사의 내용은 다음 각

More information

3장 어휘분석

3장 어휘분석 Video & Image VIPL Processing Lab. Compiler Construction 한국방송통신대학교컴퓨터과학과출석수업 제 2012-2 공학박사김명진 (HCI & 지능형로봇연구소 ) 숭실대학교연구교수 컴파일러교재구성 2장 : 형식언어와오토마타 3장 : 어휘분석 4장 : Contex-free 언어와푸시다운오토마타 5장 : 구문분석 2 어휘분석

More information

OCaml

OCaml OCaml 2009.. (khheo@ropas.snu.ac.kr) 1 ML 2 ML OCaml INRIA, France SML Bell lab. & Princeton, USA nml SNU/KAIST, KOREA 3 4 (let) (* ex1.ml *) let a = 10 let add x y = x + y (* ex2.ml *) let sumofsquare

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

4) 이 이 6) 위 (가) 나는 소백산맥을 바라보다 문득 신라의 삼국 통 일을 못마땅해하던 당신의 말이 생각났습니다. 하나가 되는 것은 더 커지는 것이라는 당신의 말을 생각하면, 대동강 이북의 땅을 당나라에 내주기로 하고 이룩한 통 일은 더 작아진 것이라는 점에서,

4) 이 이 6) 위 (가) 나는 소백산맥을 바라보다 문득 신라의 삼국 통 일을 못마땅해하던 당신의 말이 생각났습니다. 하나가 되는 것은 더 커지는 것이라는 당신의 말을 생각하면, 대동강 이북의 땅을 당나라에 내주기로 하고 이룩한 통 일은 더 작아진 것이라는 점에서, 1) ᄀ 2) 지은이가 3) (라)에서 학년 고사종류 과목 과목코드번호 성명 3 2009 2학기 기말고사 대비 국어 101 ( ) 일신여자중 ꋯ먼저 답안지에 성명,학년,계열,과목코드를 기입하십시오. ꋯ문항을 읽고 맞는 답을 답란에 표시하십시오. ꋯ문항배점은 문항위에 표시된 배점표를 참고하십시오. (가) ᄀ환도를 하고 폐허가 된 서울에 사람들의 모습 이 등장하던

More information

05.PDF

05.PDF ODD JOHN / ....?,. ( ), ( ).. < > 4 12 19 24 31 36 42 49 57 70 76 80 87 92 99 108 115 128 130 4. ",?", ' '. ".",. ".?.".., 6.,...,. 5 4.,...,. 1,..,. ",!".,.. ' ".,. "..",. ' '. 6 7.,.. 4,,.,.. 4...,.,.,.

More information

MPLAB C18 C

MPLAB C18 C MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C

More information

부벽루 이색 핵심정리+핵심문제.hwp

부벽루 이색 핵심정리+핵심문제.hwp 부벽루 - 이색 알맹이 정리 시 대 : 고려말 갈 래 : 5언 율시 성 격 : 회고적 표 현 : 어 조 : 지난날의 찬연한 역사를 회고하며 그와 대비되는 현재의 모습에서 무상감에 젖어 있 운 율 : 압운(루, 추, 유, 류) 특 징 : 장엄한 표현. 시간의 흐름을 시각적 이미 지로 표현(4연) 주 제 : 지난 역사의 회고와 고려 국운 회복의 소 망 작가소개

More information

01Report_210-4.hwp

01Report_210-4.hwp 연구보고서 210-4 해방 후 한국여성의 정치참여 현황과 향후 과제 한국여성개발원 목 차 Ⅰ 서 론 Ⅱ 국회 및 지방의회에서의 여성참여 Ⅲ 정당조직내 여성참여 및 정당의 여성정책 Ⅳ 여성유권자의 투표율 및 투표행태 Ⅴ 여성단체의 여성정치참여 확대를 위한 운동 Ⅵ 여성의 정치참여 확대를 위한 향후 과제 참고문헌 부 록 표 목 차 Ⅰ 서 론 . 서론 1.

More information

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E228323031362D352D32315FC5E4292E687770>

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E228323031362D352D32315FC5E4292E687770> 총선 이후 우리 교육의 방향 당 체제에서 우리 교육의 전망과 교육행정가들의 역할 박 호 근 서울시의회 의원 교육위원회 위원 서론 년 월 일 제 대 국회의원 선거가 치러졌다 선거는 바로 민의 의 반영이기 때문에 총선결과를 살펴보고 왜 이러한 결과가 나왔는가를 분석해 본 후 년 월 일을 기점으로 제 대 국회의원들의 임기가 시 작되는 상황에서 우리 교육이 어떻게

More information

목 차 營 下 面 5 前 所 面 71 後 所 面 153 三 木 面 263 龍 流 面 285 都 已 上 條 367 同 治 六 年 (1867) 正 月 日 永 宗 防 營 今 丁 卯 式 帳 籍 범례 1. 훼손 등의 이유로 판독이 불가능한 글자는 로 표기함. 단, 비정 이 가능한 경우는 ( ) 안에 표기함. 2. 원본에서 누락된 글자는 [ ] 안에 표기함. 단, 누락된

More information

639..-1

639..-1 제639호 [주간] 2014년 12월 15일(월요일) http://gurotoday.com http://cafe.daum.net/gorotoday 문의 02-830-0905 대입 준비에 지친 수험생 여러분 힘내세요 신도림테크노마트서 수험생과 학부모 600명 대상 대입설명회 구로아트밸리서는 수험생 1,000명 초대 해피 콘서트 열려 구로구가 대입 준비로 지친

More information

교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책 교육과학기술부 고시 제 2011 361호 [별책 3] 중학교 교육과정 교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책 2 와 같습니다. 3.

More information

시험지 출제 양식

시험지 출제 양식 2013학년도 제2학기 제1차 세계사 지필평가 계 부장 교감 교장 2013년 8월 30일 2, 3교시 제 3학년 인문 (2, 3, 4, 5)반 출제교사 : 백종원 이 시험 문제의 저작권은 풍암고등학교에 있습니다. 저 작권법에 의해 보호받는 저작물이므로 전재와 복제는 금지 되며, 이를 어길 시 저작권법에 의거 처벌될 수 있습니다. 3. 전근대 시기 (가)~(라)

More information

177

177 176 177 178 179 180 181 182 183 184 185 186 187 188 (2) 양주조씨 사마방목에는 서천의 양주조씨가 1789년부터 1891년까지 5명이 합격하였다. 한산에서도 1777년부터 1864년까지 5명이 등재되었고, 비인에서도 1735년부터 1801년까지 4명이 올라있다. 서천지역 일대에 넓게 세거지를 마련하고 있었 던 것으로

More information

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료 통합 우리나라 ⑵ 조상님들이 살던 집에 대 해 아는 어린이 있나요? 저요. 온돌로 난방과 취사를 같이 했어요! 네, 맞아요. 그리고 조상님들은 기와집과 초가집에서 살았어요. 주무르거나 말아서 만들 수 있는 전통 그릇도 우리의 전통문화예요. 그리고 우리 옷인 한복은 참 아름 답죠? 여자는 저고리와 치마, 남자는 바지와 조끼를 입어요. 명절에 한복을 입고 절을

More information

상품 전단지

상품 전단지 2013 2013 추석맞이 추석맞이 지역우수상품 안내 안내 지역우수상품 지역 우수상품을 안내하여 드리오니 명절 및 행사용 선물로 많이 활용하여 주시기 바랍니다. 지역우수상품을 구입하시면 지역경제가 살아납니다. 즐거운 한가위 보내시고, 복 많이 받으세요! - 경기동부상공회의소 임직원 일동 - 지역우수상품을 구입하시면 지역경제가 살아납니다.

More information

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재 시 민 문서번호 어르신복지과-1198 주무관 재가복지팀장 어르신복지과장 복지정책관 복지건강실장 결재일자 2013.1.18. 공개여부 방침번호 대시민공개 협 조 2013년 재가노인지원센터 운영 지원 계획 2013. 01. 복지건강실 (어르신복지과) ::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무

More information

2

2 1 2 3 4 5 6 또한 같은 탈북자가 소유하고 있던 이라고 할수 있는 또 한장의 사진도 테루꼬양이라고 보고있다. 二宮喜一 (니노미야 요시가즈). 1938 년 1 월 15 일생. 신장 156~7 센치. 체중 52 키로. 몸은 여윈형이고 얼굴은 긴형. 1962 년 9 월경 도꾜도 시나가와구에서 실종. 당시 24 세. 직업 회사원. 밤에는 전문학교에

More information

화이련(華以戀) 141001.hwp

화이련(華以戀) 141001.hwp 年 花 下 理 芳 盟 段 流 無 限 情 惜 別 沈 頭 兒 膝 夜 深 雲 約 三 십년을 꽃 아래서 아름다운 맹세 지키니 한 가닥 풍류는 끝없는 정이어라. 그대의 무릎에 누워 애틋하게 이별하니 밤은 깊어 구름과 빗속에서 삼생을 기약하네. * 들어가는 글 파르라니 머리를 깎은 아이가 시린 손을 호호 불며 불 옆에 앉아 있다. 얼음장 같은 날씨에 허연 입김이 연기처럼

More information

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾ 사람 안간힘을 다해 행복해지고 싶었던 사람, 허세욱을 그리다 - 허세욱 평전 작가 송기역 - 서울 평통사 노동분회원 허세욱. 효순이 미선이의 억울한 죽음에 대 해 미국은 사죄하라는 투쟁의 현장에 서 그 분을 처음 만났다. 평택 대추리 의 넓은 들판을 두 소녀의 목숨을 앗 아간 미군들에게 또 빼앗길 순 없다며 만들어 온 현수막을 대추초교에 같이 걸었다. 2007년

More information

歯1##01.PDF

歯1##01.PDF 1.? 1.?,..,.,. 19 1.,,..,. 20 1.?.,.,,...,.,..,. 21 1,.,.,. ( ),. 10 1? 2.5%. 1 40. 22 1.? 40 1 (40 2.5% 1 ). 10 40 4., 4..,... 1997 ( ) 12. 4.6% (26.6%), (19.8%), (11.8%) 23 1. (?).. < >..,..!!! 24 2.

More information

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770> 제3편 정 치 제3편 정치 제1장 의회 제1절 의회 기구 제2절 의회기구 및 직원 현황 자치행정전문위원회 자치행정전문위원 산업건설위원회 산업건설전문위원 제1장 의회 321 제3절 의회 현황 1. 제1대 고창군의회 제1대 고창군의회 의원 현황 직 위 성 명 생년월일 주 소 비 고 322 제3편 정치 2. 제2대 고창군의회 제2대 고창군의회 의원 현황 직 위

More information

제주어 교육자료(중등)-작업.hwp

제주어 교육자료(중등)-작업.hwp 여는말 풀꽃, 제주어 제주어는 제주인의 향기입니다. 제주인의 삶의 손끝에서 피어나는 삶의 향기이고, 꿈의 내음입니다. 그분들이 어루만졌던 삶이 거칠었던 까닭에 더욱 향기롭고, 그 꿈이 애틋했기에 더욱 은은합니다. 제주어는 제주가 피워낸 풀잎입니다. 제주의 거친 땅에 뿌리를 내리고 싹을 틔우고, 비바람 맞고 자랐기에 더욱 질박합니다. 사철 싱그러운 들풀과 들꽃향기가

More information

120229(00)(1~3).indd

120229(00)(1~3).indd 법 률 국회에서 의결된 공직선거법 일부개정법률을 이에 공포한다. 대 통 령 이 명 박 2012년 2월 29일 국 무 총 리 김 황 식 국 무 위 원 행정안전부 맹 형 규 장 관 (중앙선거관리위원회 소관) 법률 제11374호 공직선거법 일부개정법률 공직선거법 일부를 다음과 같이 개정한다. 제21조제1항에 단서를 다음과 같이 신설한다. 다만,세종특별자치시의 지역구국회의원

More information

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾ 정보나눔 섭이와 함께하는 여행 임강섭 복지과 과장 여름이다. 휴가철이다. 다 들 어디론가 떠날 준비에 마음 이 들떠 있는 시기가 아닌가 싶다. 여행 매니아까지는 아니 지만, 나름 여행을 즐기는 사 람으로서 가족들과 신나는 휴 가를 보낼 계획에 살짝 들떠 있는 나에게 혼자만 신나지 말 고 같이 좀 신났으면 좋겠다며 가족들과 같이 가면 좋은 여행 눈이 시리도록

More information

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A32831333031323120C3D6C1BEBABB292E687770>

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A32831333031323120C3D6C1BEBABB292E687770> 우리 시의 향기 사랑하는 일과 닭고기를 씹는 일 최승자, 유 준 서울예술대학교 문예창작과 강사/문학평론가 한 숟갈의 밥, 한 방울의 눈물로 무엇을 채울 것인가, 밥을 눈물에 말아먹는다 한들. 그대가 아무리 나를 사랑한다 해도 혹은 내가 아무리 그대를 사랑한다 해도 나는 오늘의 닭고기를 씹어야 하고 나는 오늘의 눈물을 삼켜야 한다.

More information

초등국어에서 관용표현 지도 방안 연구

초등국어에서 관용표현 지도 방안 연구 80 < 관용 표현 인지도> 남 여 70 60 50 40 30 20 10 0 1 2 3 4 5 6 70 < 관용 표현 사용 정도> 남 여 60 50 40 30 20 10 0 4학년 가끔쓴다 써본적있다 전혀안쓴다 5학년 가끔쓴다 써본적있다 전혀안쓴다 6학년 가끔쓴다 써본적있다 전혀안쓴다 70 < 속담 인지도> 남 여 60 50 40 30 20 10 0 1 2

More information

6±Ç¸ñÂ÷

6±Ç¸ñÂ÷ 6 6 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 과천심상소학교 졸업증서(문헌번호 03-004) 일제강점기 과천초등학교의 유일한 한국인 교장이었던 맹준섭임을 알 수 있다.

More information

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음 . 음운 [ㄱ] [국], [박], [부억], [안팍] 받침의 발음 [ㄷ] [곧], [믿], [낟], [빋], [옫], [갇따], [히읃] [ㅂ] [숩], [입], [무릅] [ㄴ],[ㄹ],[ㅁ],[ㅇ] [간], [말], [섬], [공] 찾아보기. 음절 끝소리 규칙 (p. 6) [ㄱ] [넉], [목], [삭] [ㄴ] [안따], [안꼬] [ㄹ] [외골], [할꼬]

More information

조선왕조 능 원 묘 기본 사료집 -부록 : 능 원 묘의 현대적 명칭표기 기준안 차 례 서 장 : 조선왕실의 능 원 묘 제도 11 제 1부 능 원 묘 기본 사료 Ⅰ. 능호( 陵 號 ) 및 묘호( 廟 號 )를 결정한 유래 1. 건원릉( 健 元 陵 ) 21 2. 정릉( 貞 陵 ) 22 3. 헌릉( 獻 陵 )

More information

민주장정-노동운동(분권).indd

민주장정-노동운동(분권).indd 민주장정 100년, 광주 전남지역 사회운동 연구 노동운동사 정 호 기 농민운동 1 목 차 제1장 연구 배경과 방법 07 1. 문제제기 2. 기존 연구의 검토 3. 연구 대상의 특성과 변화 4. 연구 자료와 연구 방법 07 10 12 16 제2장 이승만 정부 시대의 노동조합운동 19 1. 이승만 정부의 노동정책과 대한노총 1) 노동 관련 법률들의 제정과 광주

More information

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770> 해제 면양행견일기 沔 陽 行 遣 日 記 이 자료는 한말의 개화파 관료, 김윤식 金 允 植 (1835~1922)이 충청도 면천 沔 川 에 유배하면서 동학농민혁명 시기에 전문 傳 聞 한 것을 일일이 기록한 일기책 이다. 수록한 부분은 속음청사 續 陰 晴 史 의 권 7로 내제 內 題 가 면양행견일기 沔 陽 行 遣 日 記 로 되어 있는 부분 가운데 계사년 癸 巳 年

More information

E1-정답및풀이(1~24)ok

E1-정답및풀이(1~24)ok 초등 2 학년 1주 2 2주 7 3주 12 4주 17 부록` 국어 능력 인증 시험 22 1주 1. 느낌을 말해요 1 ⑴ ᄂ ⑵ ᄀ 1 8~13쪽 듣기 말하기/쓰기 1 ` 2 ` 3 참고 ` 4 5 5 5 ` 6 4 ` 7 참고 ` 8 일기 ` 9 5 10 1 11, 3 [1~3] 들려줄 내용 옛날 옛날, 깊은 산골짜기에 큰 호랑이 한 마리가 살고 있었습 이

More information

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770> 권2 동경잡기 東京雜記 동경잡기 173 권2 불우 佛宇 영묘사(靈妙寺) 부(府)의 서쪽 5리(里)에 있다. 당 나라 정관(貞觀) 6년(632) 에 신라의 선덕왕(善德王)이 창건하였다. 불전(佛殿)은 3층인데 체제가 특이하다. 속설에 절터는 본래 큰 연못이었는데, 두두리(豆豆里) 사람들이 하룻밤 만에 메 우고 드디어 이 불전을 세웠다. 고 전한다. 지금은

More information

교사용지도서_쓰기.hwp

교사용지도서_쓰기.hwp 1. 재미있는 글자 단원의 구성 의도 이 단원은 도비와 깨비가 길을 잃고 헤매다 글자 공부의 필요성을 느끼고 글자 공부를 하게 되는 것으로 시작된다. 자칫 지겨울 수 있는 쓰기 공부를 다양한 놀이 위주의 활동으로 구성하였고, 학습자 주변의 다양한 자료들을 활용함으로써 학습에 대한 흥미를 갖고 활동할 수 있게 하였다. 각 단계의 학습을 마칠 때마다 도깨비 연필을

More information

<32303132BDC3BAB8C1A4B1D4C6C75BC8A3BFDC303530395D2E687770>

<32303132BDC3BAB8C1A4B1D4C6C75BC8A3BFDC303530395D2E687770> 조 례 익산시 조례 제1220호 익산시 주민감사 청구에 관한 조례 일부개정조례 1 익산시 조례 제1221호 익산시 제안제도 운영조례 일부개정조례 3 익산시 조례 제1222호 익산시 시채에 관한 조례 폐지조례 12 익산시 조례 제1223호 익산시 시세 감면 조례 전부개정조례 13 익산시 조례 제1224호 익산시 행정기구설치조례 19 익산시 조례 제1225호 익산시

More information

38--18--최우석.hwp

38--18--최우석.hwp 古 詩 源 < 顔 延 之 > 篇 譯 註 * 崔 宇 錫 1) 1. 序 文 2. 古 詩 源 < 顔 延 之 > 篇 譯 註 3. 結 語 1. 序 文 沈 德 潛 (1673-1769)의 字 는 確 士 이고 號 는 歸 愚 이다. 江 南 長 洲 (현재의 江 蘇 省 蘇 州 ) 사람으로 淸 代 聖 祖, 世 宗, 高 宗 삼대를 모두 거쳤다. 특히 시를 몹 시 좋아한

More information

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록 과 임제 신해진(전남대) 1. 머리말 세조의 왕위찬탈과 단종복위 과정에서의 사육신을 소재로 한 작품은 남효온( 南 孝 溫 )의 (1492년 직전?), 임제( 林 悌 )의 (1576?), 김수민( 金 壽 民 )의 (1757) 등이 있다. 1) 첫 작품은 집전( 集

More information

0429bodo.hwp

0429bodo.hwp 친일인명사전 수록대상자 명단 친일인명사전편찬위원회 ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ 이 명단은 친일인명사전 수록대상자의 후손 또는 연고자로부터 이의신청을 받기 위해 작성 되었습니다. 이 인물정보를 무단 복사하여 유포하거나 인터넷을 통해 전 파하는일체의행위는법에저촉될수있습니다. 주요 훈포상 약어 1. 병합기념장 2. 대정대례기념장 3. 소화대례기념장

More information

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6 동경잡기東京雜記 권1 진한기辰韓紀 경상도는 본래 진한(辰韓)의 땅인데, 뒤에 신라(新羅)의 소유가 되었다. 여지승 람(輿地勝覽) 에 나온다. 진한은 마한(馬韓)의 동쪽에 있다. 스스로 말하기를, 망 명한 진(秦)나라 사람이 난리를 피하여 한(韓)으로 들어오니 한이 동쪽 경계를 분할 하여 주었으므로 성책(城栅)을 세웠다. 하였다. 그 언어가 진나라 사람과 비슷하다.

More information

cls46-06(심우영).hwp

cls46-06(심우영).hwp 蘇 州 원림의 景 名 연구 * 用 典 한 경명을 중심으로 1)심우영 ** 목 차 Ⅰ. 서론 Ⅱ. 기존의 경명 命 名 法 Ⅲ. 귀납적 결과에 따른 경명 분류 1. 신화전설 역사고사 2. 文 辭, 詩 句 Ⅳ. 결론 Ⅰ. 서론 景 名 이란 景 觀 題 名 (경관에 붙인 이름) 의 준말로, 볼만한 경치 지구와 경치 지 점 그리고 경치 지구 내 세워진 인공물에 붙여진

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

Chapter_06

Chapter_06 프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

5312 2015년 9월 15일 입 안 자 소관 실 과 재무담당관 실 과장 직위 성명 담당 팀장 직위 성명 담당자 성명 전화 재무담당관 오 문 순 관재담당사무관 김 승 호 지방교육행정주사 조윤주(249-0421) 현 행 개 정 안 제6 조( 공유재산심의회의 구성 ) 1 공유재산 및 물품관리법 ( 이하 " 법" 이라 한다) 제16 조에 따라 본청과 제1관서에

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

휠세미나3 ver0.4

휠세미나3 ver0.4 andromeda@sparcs:/$ ls -al dev/sda* brw-rw---- 1 root disk 8, 0 2014-06-09 18:43 dev/sda brw-rw---- 1 root disk 8, 1 2014-06-09 18:43 dev/sda1 brw-rw---- 1 root disk 8, 2 2014-06-09 18:43 dev/sda2 andromeda@sparcs:/$

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Microsoft PowerPoint - semantics

Microsoft PowerPoint - semantics 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 Sep. 2007 1 3.1 Operational Semantics 숙대창병모 Sep. 2007 2 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 Sep. 2007 3 의미론의종류 Operational

More information

zb 2) 짜내어 목민관을 살찌운다. 그러니 백성이 과연 목민관을 위해 있는 것일까? 아니다. 그건 아니다. 목민관이 백성 을 위해 있는 것이다. 이정 - ( ᄀ ) - ( ᄂ ) - 국군 - 방백 - 황왕 (나) 옛날에야 백성이 있었을 뿐이지, 무슨 목민관이 있 었던

zb 2) 짜내어 목민관을 살찌운다. 그러니 백성이 과연 목민관을 위해 있는 것일까? 아니다. 그건 아니다. 목민관이 백성 을 위해 있는 것이다. 이정 - ( ᄀ ) - ( ᄂ ) - 국군 - 방백 - 황왕 (나) 옛날에야 백성이 있었을 뿐이지, 무슨 목민관이 있 었던 zb 1) 중 2013년 2학기 중간고사 대비 국어 콘텐츠산업 진흥법 시행령 제33조에 의한 표시 1) 제작연월일 : 2013-08-21 2) 제작자 : 교육지대 3) 이 콘텐츠는 콘텐츠산업 진흥법 에 따라 최초 제작일부터 5년간 보호됩니다. 콘텐츠산업 진흥법 외에도 저작권법 에 의하여 보호되는 콘텐츠의 경우, 그 콘텐츠의 전부 또는 일부 를 무단으로 복제하거나

More information

MAX+plus II Getting Started - 무작정따라하기

MAX+plus II Getting Started - 무작정따라하기 무작정 따라하기 2001 10 4 / Version 20-2 0 MAX+plus II Digital, Schematic Capture MAX+plus II, IC, CPLD FPGA (Logic) ALTERA PLD FLEX10K Series EPF10K10QC208-4 MAX+plus II Project, Schematic, Design Compilation,

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information