4장 어휘 / 구문 분석 (Term project 포함)

Slides:



Advertisements
Similar presentations
National University 1 / 24 컴퓨터 개론 및 실습 강의 11 (parser)
Advertisements

개인의견 차가있을수있음 훈훈한남자 배우 TOP 5. 5 위는 박보검 웃을때보이는 치명적인 미소 꺄 ~~~ 5위5위.
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
 사회  4 학년 1 학기  1. 우리 시ㆍ도 모습 > (1) 지도에 나타난 우리 시. 도의 모습 (2/17) 지도를 알아보자 (1)
독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
1 大邱科學大學校 / 測地情報科 토지구획정리론 제 1 강 토지구획정리의 배경과 발전 제 1 절 토지구획정리의 의의 제 2 절 토지구획정리의 배경 제 3 절 토지구획정리기법의 개발 제 4 절 토지구획정리의 도입 발전 제 5 절 토지구획정리의 시대적.
녹는점과 끓는점 화학과 이 언정 손 나영 《수업 계획서》
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
게임 엔진 Term Project 한국산업기술대학교 검술의 달인 학번 : 이름 : 문정훈 학번 : 이름 : 문정훈.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
아동이 살기 좋은 횡성군 만들기 추진위원회 2차 모임
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
어서와 Java는 처음이지! 제3장선택과 반복.
컴파일러 입문 제 5 장 Context-Free 문법.
& 국민연금법 국민건강보험법 사회복지법제 행정학부 김인철 사회복지학과 김건우
시대의 향기를 담은 고수필 고전문학원전강독 신태웅 김수연 이진솔.
10. 예외 처리.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
고교평준화의 득과 실 김영주 이지영 최윤영.
제 8 장  파서 생성기 YACC 사용하기.
제2장 구문(Syntax) Reading Chap 4 © 숙대 창병모.
4장 구문(Syntax).
제3장 시맨틱스(Semantics) Reading Chap 13 © 숙대 창병모.
제5장 제어명령
프로그래밍언어론 2nd edition Tucker and Noonan
7 스택.
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
스택(stack) SANGJI University Kwangman Ko
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
제  3 장  Lex 사용하기.
자료구조 김현성.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
4장 제어문 선택문: if 문, if – else 문, switch 문
제주닷컴 매뉴얼 (실시간 예약시스템) 2013년 10월.
7. LL 구문 분석 7-1. 결정적 구문 분석 7-2. Recursive-descent 파서 7-3. Predictive 파서 7-4. Predictive 파싱 테이블의 구성 7-5. Strong LL(k) 문법과 LL(k)문법.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
[ 포털 사이트 연관검색어/자동완성 등록 서비스 ]
4. 어휘 분석(Lexical analysis)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
[INA240] Data Structures and Practice
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
프로그래밍언어론 2nd edition Tucker and Noonan
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
조 병 규 Software Quality Lab. 한국교통대학교
자바 5.0 프로그래밍.
작성일 참고서적 – Programing Game AI by Example
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
Term Project 수행 안내 2011년 2학기 컴파일러.
4. 어휘 분석(Lexical analysis)
C언어 프로그래밍의 이해 Ch05. 명령문.
알고리즘의 분석(analysis) 공간적 효율성(Space Efficiency)과 시간적 효율성(Time Efficiency)
프로젝트 2차 발표 학번: 이름: 남준현.
재활용의 실태와 재활용품 만들기의 계획 실과 6학년 8 . 환경을 살리는 나의 생활> 2) 재활용품 만들기(5~6/8)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
아동안전관리 홍성훈 교수님 아동보육학과 박윤희
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
제 10장 가족치료모델 발 표 : 여금란.
과목명: IT 표준 (표준화강좌) 교재: 미래사회와 표준, KSA 한국표준협회, 2007
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
printf("Global Korea\n");
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

4장 어휘 / 구문 분석 (Term project 포함) 2017. 4. 26 순천향대학교 컴퓨터공학과 하상호

목차 어휘 분석 구문 분석: 재귀 하강 파싱

구문 분석 언어 처리기의 구문 분석은 다음 두 부분으로 구성 어휘 분석기 구문 분석기 정규 문법에 기반한 유한 오토마타 문맥-자유 문법(BNF)에 기반한 push-down 오토마타

어휘 분석 문자열에 대한 패턴 매칭기(pattern matcher) 어휘 분석기는 파서에서 호출되는 함수 어휘 분석기 구성 소스 프로그램에서 어휘 항목들을 식별하고 토큰을 연관 어휘 분석기는 파서에서 호출되는 함수 파서가 다음번째 토큰이 필요할 때 어휘 분석기를 호출한다 어휘 분석기 구성 토큰들을 서술하는 상태 다이어그램(state diagram)을 설계 이 상태 다이어그램을 구현하는 프로그램 작성

상태 다이어그램 예: 수식 교재 참고: pp.185-190 getChar(): 입력 프로그램에서 다음번째 문자를 가져와서, nextChar에 저장하고, 그 문자 유형을 charClass에 저장 addChar(): nextChar의 문자를 lexeme에 저장 lookup(): lexeme에 포함된 문자열이 예약어인지를 판단

어휘 분석기: lex() int lex() { // before it is called, getChar() is first executed lexLen = 0; getNonBlank(); switch(charClass) { case LETTER: addChar(); getChar(); while (charClass == LETTER || charClass == DIGIT) { addChar(); getChar(); } nextToken = IDENT; break; case DIGIT: while (charClass == DIGIT) { nextToken = INT_LIT; case UNKNOWN: lookup(nextChar); getChar(); return nextToken; 교재 참고: pp.185-190

재귀 하강 파싱(recursive-descent parsing) 기본 원리 문법으로부터 직접 파서 프로그램을 작성 입력 스트링에 대한 유도를 하향식(top-down) 방식으로 찾아간다. 파서는 재귀적 부프로그램들로 구성 EBNF를 재귀 하강 파서의 기반으로 사용 구현 각 논터미널에 대해서 하나의 프로시저 작성 프로시저는 그 논터미널로부터 생성될 수 있는 문장들을 파싱 프로시저 호출은 해당 생성규칙 적용 프로시저 행동은 해당 생성규칙의 우변을 수행

재귀 하강 파싱 어휘 분석기 lex()는 다음번째 토큰을 nextToken에 저장한다고 가정 구현: 단지 한 개의 RHS만이 존재할 때 RHS의 각 터미널 기호에 대해서, nextToken과 비교한다 터미널기호와 매칭되면 파싱을 계속하고, 그렇지 않으면 오류 발생 RHS의 각 논터미널 기호에 대해서, 이와 연관된 프로시저를 호출한다.

재귀 하강 파싱 /* <expr> → <term> {(+ | -) <term>} */ void expr() { /* Parse the first term */   term(); /* nextToken이 +, -인 동안에 다음번째 term을 파싱 계속*/   while (nextToken == ADD_OP || nextToken == SUB_OP){     lex();     term();   } }

재귀 하강 파싱 논터미널이 2개 이상의 RHS를 포함할 때, 어느 RHS를 파싱할 것인지를 결정하는 것이 필요 입력의 다음번째 토큰(lookahead)에 기반하여 올바른 RHS를 선택 nextToken이 각 RHS로부터 생성될 수 있는 첫번째 토큰과 비교하여 매칭 시도 매칭이 일어나지 않으면 오류

재귀 하강 파싱 /* <factor> -> id | (<expr>) */ void factor() { /* 어느 RHS를 파싱할 것인지를 판단 */    if (nextToken) == ID_CODE)      lex();   else if (nextToken == LP_CODE) {        lex(); expr();     if (nextToken == RP_CODE) lex(); else error(); } /* End of else if (nextToken == ... */ else error(); /* Neither RHS matches */ }

예제: 수식 평가 재귀 하강 파싱 과정에서 수식 평가 <expr> → <term> { (+ | - ) <term> } <term> → <factor> { (* | / ) <factor> } <factor> → number | ( <expr> )

예제: 수식 평가 result <- result + term(); else /* <expr> → <term> {(+ | -) <term>} */ void expr() { /* Parse the first term */ int result = term(); int prevToken; /* nextToken이 +, -인 동안에 다음번째 term을 파싱 계속*/   while (nextToken == ADD_OP || nextToken == SUB_OP){ prevToken = nextToken;     lex(); if (prevToken == ADD_OP) then result <- result + term(); else result <- result – term();   } }

Term Project 여러분이 설계한 새로운 언어에 대한 인터프리터를 개발하라. 일정 어휘 분석과 구문 분석을 포함할 것 5/31: 발표 6/13: 보고서 제출

Term Project 발표 및 보고서는 다음 사항을 포함해야 함 문제 정의(언어 설계 포함) 문제 분석 및 설계 소스 코드 테스트 및 검증 의견