제 6 장  상향식 파싱.

Slides:



Advertisements
Similar presentations
법의 이념과 철학의 이해 법의 이념은 무엇일까 ? 정의 : 각자에게 각자의 몫을 주는 것 - 평등의 의미가 내포되어 있음 법적 안정성 : 법의 규정이 명확하고 잦은 변경 이 없어야 함 개인의 자유와 권리를 공공복지와 조화롭게 추구 – 사회질서와 안전유지 + 사회정의.
Advertisements

학생증 발급 안내. 2 목 차목 차목 차목 차 Ⅰ. 개요 Ⅱ. 모바일 학생증 1. 신청 및 발급 2. 신청 방법 Ⅱ. 스마트 학생증 (ID 카드 ) 1. 신청 및 발급 2. 신청 방법 3. 제출 서류 4. 유의 사항.
 수학 10- 나  1 학년 2 학기  Ⅰ. 도형의 방정식 1. 평면좌표 (1/24) 두 점 사이의 거리 수업 계획 수업 활동.
제 5 강 근대수학의 여명 무리수 (Irrational number) 인도, 아라비아 (0 과 음수 ) 데카르트 - 해석기하학.
명륜종합사회복 지관. * 강사 : 소 찾는 아이 작가 이상희, 김매화 팀장 외 * 북아트란 : 논술교육의 중요성, 자유로운 사고, 창 의력, 논리력 * 준비물 : 색연필, 사인펜, 연필, 지우개, 딱풀, 가위.
공공의료 한국의료의 ‘미운 오리새끼’ (목) 김 용 익 새정치민주연합 국회의원.
내가 보고 싶었던 세계 내가 보고 싶었던 세계 지은이 : 석 지영 옮긴이 : 송 영수 지은이 : 석 지영 옮긴이 : 송 연수
불교신문 광고 제안서 2015 『 2천만 불교신자님들께 귀사를 알리고 싶습니다 』 대한불교조계종 불교신문.
지적기초측량 경일대학교/부동산지적학과.
9월 첫새벽 특별헌신예배 2. 기도: 최일문 장로 (경조위원장) 3. 찬양: 경조위원회, 2~3남선교회
오직교적 사용설명서 [ 기능별 상세 설명서 ] 교회를 부흥시키는 가장 좋은 동역자 오직교적
국립생물자원관 교육콘텐츠 02_강낭콩, 싹터요!.
보호구는 왜 착용하여야 하는가? 유해요인(가스,분진,소음) 위험요인(추락,낙하,비래,충돌 등) 근본적인 안전대책 강구
DS020 오토마타형식언어 Chapter 3. Regular Languages and Regular Grammars
제 4 장 구문 분석.
구매카드대출 인터넷매뉴얼 (판매기업용) 1.
공공의료 한국의료의 ‘미운 오리새끼’ 김 용 익 새정치민주연합 국회의원.
주요추진업무 1. 청년학교 등 청년정책 프로그램 운영 청년학교 운영, 커뮤니티 디자이너 양성 등의 프로그램 운영을 통해
4 컴퓨터에서 활용되는 디지털 논리회로 IT CookBook, 컴퓨터 구조와 원리 2.0.
2. 형식언어 (Formal Language)
문법과 언어.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
부울대수(Boolean Algebra)
에너지 운동량 방법: 일과 에너지법칙 1. 상자들이 초기속도 vo로 컨베이어 벨트로 운반되어 A에서 미끄러져서 B에서 떨어진다. μk= 0.40이고, 상자가 2.4m/s로 B점에서 떨어질 때 컨베이어 벨트의 속도를 구하라.
학부모 설명회 학부모 설명회를 시작하겠습니다. 먼저, 설명회를 찾아주신 여러분께 감사의 말씀을 드립니다. 금일 강의를 하게 된 저는 우공비, 쎈이라는 교재를 만드는 좋은책신사고 본사 교육팀에서 근무하고 있는 이영호입니다. 강의는 총 1시간 정도 소요될 예정이며, 강의 종료.
Discrete Math II Howon Kim
이재상 기본 논리회로와 불의 대수 이재상
제주닷컴 매뉴얼 (실시간 예약시스템) 2013년 10월.
7. LL 구문 분석 7-1. 결정적 구문 분석 7-2. Recursive-descent 파서 7-3. Predictive 파서 7-4. Predictive 파싱 테이블의 구성 7-5. Strong LL(k) 문법과 LL(k)문법.
지엠비코리아 시정조치사항 유효성평가 협 력 사 담당 임원 대표이사 ○○. ○○. 회사명기입.
[ 포털 사이트 연관검색어/자동완성 등록 서비스 ]
알기쉬운 시설공사(2) 경상북도교육청 이형주.
서울 2008: 재정분석결과.
김포 한강베네치아 상가분양 3층~5층 오피스텔 226세대 1층~2층 상가 분양문의 : 이효철( )
과학 탐구 토론 대회 1학년 2반 박승원 1학년 5반 권민성.
학습 주제 p 역학적 에너지는 보존될까?(2).
3. Traceability (1) 개념 소비자 이를 소급할 수 있는 것 추적 소급
우리는 부모를 닮지만, 왜 똑같지는 않을까? 유전적 다양성 독립 연관과 교차 무작위 수정.
Discrete Math II Howon Kim
기존 REC거래시스템 회원사의 신재생 통합포털 회원가입 설명서.
비, 비율, 퍼센트 실과교육과 김 화 민.
3. 정규 언어(Regular Language)
(3) 기계요소의 종류와 원리 오 산 중 학 교.
도형의 닮음 Ⅵ-1 도형의 닮음 (1) 닮음과 닮은 도형 닮음
Chapter 5. 자료의 연산과 논리회로 e-learning Computers.
평 면 도 형 도형의 작도 삼각형의 작도와 결정조건 도형의 합동 작도와 삼각형의 합동 학습내용을 로 선택하세요
예방접종등록시스템 전산교육 질병관리본부 질병예방센터 예방접종관리과.
비담 MOS 시뮬레이션 사용 절차 1 – 개별 사용 유형
Chapter 5. Context-Free Language Exercises
합집합과 교집합의 원소의 개수 수학 7-가 집합과 자연수 > 집합 > 7/20 수업계획 수업활동 [제작의도]
둘째마당. 나만의 목표와 학습스타일을 찾아라!.
수학8가 대한 113~114 쪽 Ⅴ. 부등식 2. 일차부등식 §2.연립부등식(7/10) 연립부등식의 풀이.
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
수학 게이머 발표자:김민규,이정석 목차 1. NIM게임 이란? NIM게임의 필승 전략 2. 베스킨라빈스 31 게임이란??
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
진리 나무 Truth-tree  ∧ ∨ → ↔  =.
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
수학 8나 대한 64쪽 II.도형의 성질 2. 사각형의 성질 §1. 평행사변형 (17/24) 평행사변형이 되는 조건.
엔화 대환/대출 자금용도 대상 이자 차액 효과 (A,B,C) 환율 리스크 헷징 (A,B) 엔화의 평균환율 (A,B,C)
내 손으로 만드는 ‘굴절 망원경’
매물장 로그인 직원을 미리 생성하시면 직원 ID로 로그인 가능.
차트 만들기 p.307 미리 x축의 항목과, 데이터 계열의 이름이 나타날 수 있도록 지정하는 것이 편리하다.
“전자구매” 메뉴 접속을 위해 “전자입찰” 메뉴에서 공인인증서 등록
일반대학원 사용자 매뉴얼(학생)
수강신청 설명서 1. 시스템 접속방법 학생포털시스템 Intro화면 학생수강신청 로그인 페이지
2016년 개별주택가격 조사 적용 비오톱 자료 발췌 방법 용산구청 세무1과 김성봉.
관리자 페이지에서 관리자 승인 1. 정기권 신규고객 1. 로그인 화면 2. 차량등록여부 확인 3. 개인정보 활용 동의
표준화 이론 표준형 구조나무 표준화 정리  ∧ ∨ → ↔  =.
시나브로 기획안.2 By.임나연.
한국감정평가협회 실무수습 홈페이지 회원가입 및 로그인.
Presentation transcript:

제 6 장  상향식 파싱

제 6 장 상향식 파싱 상향식 파싱 생성규칙 A → β에 대해 아래같이 문법규칙을 적용(⇒R은 환원을 의미)            αβω ⇒R αAω ⇒R S

6.1 상향식 파싱의 개념 그림 6.1 하향식 파싱과 상향식 파싱 기법의 기본 개념

간단하게 아래 문법 G를 사용하여 입력 스트링 abbcd를 상향식으로 파싱하는 과정을 살펴보자.      G :  S → aAB           A → Abc|b                B → d 스트링 abbcde가 S로 환원하는 과정은 아래와 같다. abbcd  (b 를  A→ b에 의해 A로 바꾼다) ⇒R aAbcd (Abc 를  A→ Abc에 의해 A로 바꾼다) ⇒R aAd    (d 가를 B→ d에 의해 B로 바꾼다) ⇒R aAB    (aAB 를 생성규칙 S→ aAB에 의해 S로 바꾼다) ⇒R S (S는 시작 심볼이다)

정의 6. 1 생성 규칙 A → β가 있고 우단유도 S ⇒. rm αAω⇒ 정의 6.1 생성 규칙 A → β가 있고 우단유도 S ⇒*rm αAω⇒*rm αβω가 있으면 문장형식 αβω에서 부분 스트링 심볼 α뒤에 있는 β를 핸들이라 하고, 생성 규칙 A → β에 의해 β는 A로 환원할 수 있다. 즉, 핸들은 생성 규칙의 오른쪽에 있는 심볼 스트링에서 입력 문장의 스트링과 일치하는 부분 스트링이다. 문장형식 abbcd 에서는 핸들이 b 이다. 문장형식 aAbcd 에서는 핸들이 Abc 이다. 문장형식 aAd    에서는 핸들이 d 이다. 문장형식 aAB    에서는 핸들이 aAB 이다. 시작심볼 S          환원 끝

파스트리의 핸들 그림 6.2 파스트리에서 αβω에 대한 핸들 A → β

핸들 가지치기 파싱을 위하여 터미널 스트링에서 시작하여 루트의 시작 심볼까지 가면서 우단유도를 거꾸로 수행하면 핸들 가지치기를 알 수 있다. ω = ζn⇒R ζn-1⇒R ζn-2 .... ⇒R ζ1 ⇒R ζ0 = S

파스트리의 가지치기 그림 6.3 파스트리에서의 가지치기 과정

예 6. 1 아래 문법을 사용하여 산술 수식 스트링 id1 + id2 예 6.1 아래 문법을 사용하여 산술 수식 스트링 id1 + id2 * id3을 시작 심볼 E 로 환원하는 과정에서 핸들을 찾아보자. id1, id2, id3 은 터미널 심볼 id의 왼쪽에서 오른쪽으로 나타나는 순서이다.              G: E → E  +E                  E → E  * E                  E → id 오른쪽 문장형식 핸 들 환원에 적용된 생성규칙 (1)    id1 + id2 * id3 (2)    E    + id2 * id3 (3)       E  +E  * id3 (4)        E  +E  * E (5)             E  +E (6)                   E id1 id2 id3 E  * E E  + E      E → id    E → E  * E    E → E  + E

6.2 이동-환원 파싱 알고리즘 상향식 파싱을 하려면 이미 언급한 것과 같이 이동-환원 파싱 알고리즘을 사용한다. 기본적으로 두 개의 행위가 있는데 이동(shift)과 환원(reduce) 이동-환원 알고리즘은 핸들을 탐지하기 위해 스택을 사용하여 오른쪽 문장형식에서 핸들을 찾고 적용할 생성 규칙을 결정적으로 선택한다.

이동-환원 알고리즘의 수행 행위 이동 환원 수락 에러 현재의 입력 스트링의 맨 앞에 있는 터미널 심볼을 스택의 톱에 이동한다. 스택의 톱에 있는 핸들을 규칙에 따라 해당 생성규칙의 넌터미널로 대치(환원)한다. 수락 입력 스트링을 모두 읽어서 정상적인 파싱이 수행되었음을 알린다. 에러 파서는 구문 에러를 발견하고 에러 처리루틴을 호출한다.

이동-환원 알고리즘의 동작 단계 1: 맨 처음 상태에 스택은 비어있다. 단계 2: 비어있는 스택에 입력 스트링의 맨 처음에 있는 심볼을 이동한다. 단계 3: 스택의 톱에 있는 심볼과 입력 스트링의 맨 앞 터미널 심볼을 비교한다. 이 때 규칙에 따라 입력 스트링의 터미널 심볼을 스택으로 이동할 것인지, 아니면 스택에서 심볼 몇 개를 해당 생성 규칙의 넌터미널로 바꿀 것인지를 결정한다.        3.1 규칙이 이동이면, 터미널 심볼을 스택에 넣는다.         3.2 규칙이 환원이면, 스택의 톱에서부터 문장형식을 환원하려는 생성 규칙의 넌터미널로  바꾼다.         3.3 입력 스트링을 모두 읽고 스택의 톱에 시작 심볼만 남으면 파싱 을 종료한다(즉, 주어진 문법으로 입력 문장을 인식할 수 있다).

예 6.2 아래 문법을 이용하여 입력 스트링 caabaab에 대하여 이동-환원 알고리즘이 어떻게 작동하는가를 살펴보자.  G:  1. S → S a B       2. S → c       3. B → a b 이 문법에서는 입력 스트링 caabaab에 대하여 아래와 같은 유도과정을 가진다.  S ⇒ SaB ⇒ Saab ⇒ SaBaab ⇒ Saabaab ⇒ caabaab

이동-환원 (# : caabaab↲)⊢ 이동 (#c : aabaab↲)⊢ 생성 규칙2에 의하여 환원              (#S             :      aabaab↲)⊢ 이동              (#Sa           :       abaab↲)⊢ 이동              (#Saa         :       baab↲)⊢ 이동              (#Saab        :        aab↲)⊢ 생성 규칙3에 의하여 환원              (#SaB         :        aab↲)⊢ 생성 규칙1에 의하여 환원              (#S             :        aab↲)⊢ 이동              (#Sa           :          ab↲)⊢ 이동              (#Saa          :           b↲)⊢ 이동              (#Saab       :           ↲)⊢ 생성 규칙3에 의하여 환원              (#SaB         :           ↲)⊢ 생성 규칙1에 의하여 환원              (#S             :           ↲)⊢ 수락

실습 6.1 아래 문법 G 가 있다. 이동-환원 알고리즘으로 입력 스트링 caab를 파싱하는 과정의 스택 상태를  보이시오.      G: 1. S → SaB       2. S → c        3. B → ab

실습 6.2 아래 문법 G 가 있다. 이동-환원 알고리즘으로 입력 스트링 ababccab를 파싱하는 과정의 스택 상태를  보이시오.    G: 1. S → SaB       2. S → c        3. B → ab

6.3 LR 문법 어떤 문법이 이동-환원 알고리즘으로 파서를 정확하게 구현할 수 있으면 이 문법을 LR 문법이라 한다. LR 문법에서 LR의 의미는 입력 스트링을 왼쪽(Left)에서 오른쪽으로 읽어서 가장 오른쪽(Right) 넌터미널을 먼저 유도한다는 의미이다.

예 6.3 아래 문법에 대하여 입력 스트링 aaab를 파싱하여 보자.    G: 1. S → SaB       2. S → a        3. B → ab 스택과 입력 상태는 아래와 같으며 파싱을 진행할 수 없다.                   (#               :   aaab↲)⊢ 이동                   (#a             :    aab↲)⊢ 생성 규칙2에 의하여 환원                   (#S             :    aab↲)⊢ 이동                   (#Sa           :      ab↲)⊢ 이동 혹은 환원(충돌 발생함)          (더 이상 파싱을 진행할 수 없음)

이동/환원 충돌 (#Sa : ab↲)⊢ 이동 혹은 환원(충돌 발생함) 이와 같이 두 행위를 동시 수행해야하는 상태가 되면 이동/환원 충돌이 발생한다고 한다. 아래와 같이 몇 개의 충돌이 있을 수 있다. 이동/환원 충돌       이동/이동 충돌       환원/환원 충돌

충돌시 이동 적용 위의 파싱 과정에서 파싱을 계속 진행하도록 이동 행위를 적용하여 보자. (# : aaab↲)⊢ 이동      (#S             :     aab↲)⊢ 이동      (#Sa           :       ab↲)⊢ 이동     (#Saa          :        b↲)⊢ 생성규칙2에 의하여 환원(문법에 있는 번호)     (#SaS          :        b↲)⊢ 이동      (#SaSb        :         ↲)⊢ 에러(이동 환원 모두 수행할 수 없음)     (더 이상 파싱을 진행할 수 없음)

환원/환원 충돌 예 환원/환원 충돌은 파싱 도중에 환원할 생성규칙이 여러 개 존재하는 경우이다. 아래 문법에 대하여 입력 스트링 aa 를 파싱하면서 환원/환원 충돌을 살펴보자.  G:  1. S → SA       2. S → a       3. A → a

입력 스트링 aa 에 대한 파싱 과정은 아래와 같다. (환원/환원 충돌, 에러)       (더 이상 파싱을 진행할 수 없음)

파싱을 계속하기 위하여 생성규칙2를 적용하면 아래와 같이 파싱이 정상적으로 이루어진다.           (#             :   aa↲) ⊢ 이동             (#a           :     a↲)⊢ 생성규칙2에 의하여 환원             (#S           :     a↲)⊢ 이동             (#Sa          :      ↲)⊢ 생성규칙3에 의하여 환원             (#SA         :      ↲)⊢ 생성규칙1에 의하여 환원             (#S           :       ↲)⊢ 수락

실습 6.3 입력 스트링 ababab를 파싱하는 과정의 스택 상태를 아래 문법 G에 대하여 보이시오.  G:  1. S → Sa        2. S → ab

예 6.4 아래의 배열 참조와 함수 호출 두 문장을 살펴보자.         area(x, y);  /* 배열 참조, 배열명 area 이고 인덱스가 x, y 이다.  */         area(A, B); /* 함수 호출, 함수명 area 이고 인자가 A, B 이다.    */ 두 경우에서 area(x, y); 는 배열이므로 배열 참조에 대한 생성 규칙으로 환원 area(A, B); 는 함수를 호출하는 생성 규칙으로 환원

a 는 변수나 인자인 경우에 이 문장을 파싱하는 스택은 아래와 같은데, 입력 스트링의 맨 앞에 있는 터미널 심볼 ; 에 대하여 배열 참조 생성 규칙과 함수 호출 생성 규칙 둘 다 환원할 수 있다. 그러므로 환원/환원 충돌이 발생한다.                     (#......area(a, a)         :     ; a = a + a * a ......↲)

아래 문장은 두 개의 유도트리를 만들 수 있기 때문에 명확하지 않으므로 LR 문법이 아니다. 예 6.5 if 문장에 대한 아래 문법은 명확하지 않기 때문에 LR이 될 수 없다. S 는 문장을 나타내는 생성규칙의 넌터미널이고 Cexpr은 조건수식을 나타내는 생성규칙의 넌터미널로 결과 값은 참과 거짓 중에서 하나이다.      G: 1. S → if Cexpr then S          2. S → if Cexpr then S else S          3. S → id 아래 문장은 두 개의 유도트리를 만들 수 있기 때문에 명확하지 않으므로 LR 문법이 아니다.           if Cexpr then if Cexpr then S else S

예 6.6 예 6.5의 문법으로 아래 문장을 이동-환원 알고리즘으로 파싱을 수행해 보자           if Cexpr then if Cexpr then S else S 스택과 입력 스트링의 구성은 아래와 같이 구성된다. (# ... if Cexpr then if Cexpr then S        :     else S ..... ↲)⊢ 이동 혹은 환원

생성규칙1을 적용하면 (# ... if Cexpr then if Cexpr then S       :     else S ..... ↲)⊢ 생성규칙1에 환원 (# ... if Cexpr then S                           :     else S ..... ↲)⊢ 이동 (# ... if Cexpr then S else                       :         S ..... ↲)⊢ 이동 (# ... if Cexpr then S else S                    :           ..... ↲)⊢ 생성규칙2에 환원 (# ... S                                                :           ..... ↲)⊢ (파싱 계속 진행)

생성규칙2을 적용하면 (# ... if Cexpr then if Cexpr then S : else S ..... ↲)⊢ 이동

실습 6.4 아래 문법으로 산술 수식 입력 a + b * c을 이동-환원 알고리즘으로 파싱하는 스택 상태를 보이시오.  G:  1. E → E + E        2. E → E * E       3. E → ( E )       4. E → a       5. E → b       6. E → c

실습 6. 5 좀 더 복잡한 아래 문법에 대하여 산술 수식의 입력 스트링 a + b 실습 6.5 좀 더 복잡한 아래 문법에 대하여 산술 수식의 입력 스트링 a + b * c을 이동-환원 알고리즘으로 파싱하는 과정을 스택으로 보이시오.  G:  1. E → E + E        2. E → T        3. T → T * F       4. T → F       5. F → ( E )       6. F → a       7. F → b       8. F → c

제 6 장 끝