언어, 문법, 기계, 파서, 고쳐쓰기, 현대수학의 한계, 그리고 미래의 전산학

Slides:



Advertisements
Similar presentations
연천 새둥지마을 체재형 주말농장 준공식 초청장 오시는 길 주제 일시 장소 21C 경기농촌희망심기 2005년 제1기 교육수료마을
Advertisements

SPARCS Wheel Seminar Mango X Sugoi
출석수업 자료 교과서 범위: 제1장-4장.
10월 충북노회 남선교회 순회 헌신예배 묵 도 기 도 성 경 봉 독 특 송 찬 양 설 교 찬양 / 봉헌 봉 헌 기 도
글에 나타난 시대적 사회적 배경을 파악할 수 있다. 배경 지식과 의미 해석의 관련성을 이해할 수 있다.
패널자료 분석
라오디게아 교회의 교훈 본문 계 3: ○라오디게아 교회의 사자에게 편지하라 아멘이시요 충성되고 참된 증인이시요 하나님의 창조의 근본이신 이가 이르시되 15. 내가 네 행위를 아노니 네가 차지도 아니하고 뜨겁지도 아니하도다 네가 차든지 뜨겁든지 하기를 원하노라.
한알Ⅱ「더불어 살기」전국대회 일정표 날짜 시간 7월 26일(목) 7월 27일(금) 7월 28일(토) 7월 29일(일)
2013학년도 전라북도고등학교신입생 입학전형 기본계획
선거관리위원회 위원 공개모집 4차 공고 제4기 선거관리위원회를 구성하는 위원 모집의
2015학년도 1학기 버디 프로그램 오리엔테이션 (목) 16:00.
열왕기하 1장을 읽고 묵상으로 예배를 준비합시다..
오늘의 학습 주제 Ⅱ. 근대 사회의 전개 4. 개항 이후의 경제와 사회 4-1. 열강의 경제 침탈 4-2. 경제적 구국 운동의 전개 4-3. 사회 구조와 의식의 변화 4-4. 생활 모습의 변화.
전도축제 계획서 *일시 : 2013년 4월 21, 28일 주일 (연속 2주)
2009학년도 가톨릭대학교 입학안내.
한국 상속세 및 증여세 과세제도 한국 국세공무원교육원 교 수 최 성 일.
중세시대의 의복 학번 & 이름.
다문화가정의 가정폭력의 문제점 연세대학교 행정대학원 정치행정리더십 2학기 학번 이름 홍 진옥.
이공계의 현실과 미래 제조업 立國 / 이공계 대학생의 미래 준비
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
◆ 지난주 반별 출석 보기 ◆ 제 56 권 26호 년 6월 26일 반 선생님 친구들 재적 출석 5세 화평 김성희 선생님
第1篇 자치입법 개론.
교직원 성희롱·성폭력·성매매 예방교육 벌교중앙초등학교 박명희
제5장 새로운 거버넌스와 사회복지정책 사회복지정책이 어떤 행위자에 의해 형성되고 집행되는지, 어떤 과정에서 그러한 일들이 이루어지는지, 효과적인 정책을 위해서는 어떤 일들이 필요한지 등을 본 장에서 알아본다 개인들이 생활을 개선하는 가장 효과적인고 궁극적인 방법은 개별적.
임상시험 규정 (최근 변경 사항 중심으로) -QCRC 보수 교육 과정 전달 교육
서울특별시 특별사법경찰 수사 송치서류 유의사항 서울특별시 특별사법경찰과 북부수사팀장 안   진.
특수학교용 아동학대! 제대로 알고 대처합시다..
사회복지현장의 이해 Generalist Social Worker 사회복지입문자기초과정 반포종합사회복지관 김한욱 관장
학교보건 운영의 실제 한천초등학교 이 채 금.
제 출 문 고용노동부 귀중 본 보고서를 ’ ~ ‘ 까지 실시한 “근로감독관 직무분석 및 교육프로그램 개발에 관한 연구”의 최종보고서로 제출합니다  연구기관 : 중앙경영연구소  프로젝트 총괄책임자 : 고병인 대표.
학습센터란? 기도에 관해 배울 수 있는 다양한 학습 코너를 통하여 어린이들이 보다 더 쉽게 기도를 알게 하고, 기도할 수 있게 하며, 기도의 사람으로 변화될 수 있도록 하는 체험학습 프로그램이다. 따라서 주입식이지 않으며 어린이들이 참여할 수 있는 역동적인 프로그램으로.
Digital BibleⅢ 폰속의 성경 디지털 바이블 2008년 12월 ㈜씨엔커뮤니케이션 ㈜씨엔엠브이엔오.
후에 70인역(LXX)을 좇아 영어 성경은 본서의 중심 주제인 “엑소도스”(출애굽기)라 하였다.
성 김대건 피츠버그 한인 성당 그리스도왕 대축일 공지사항
예배에 대하여.
말씀 듣는 시간입니다..
하나님은 영이시니 예배하는 자가 신령과 진정으로 예배할지니라.
지금 나에게 주신 레마인 말씀 히브리서 13장 8절.
예수의 제자들 담당교수 : 김동욱.
Lecture Part IV: Ecclesiology
KAINOS 날마다 더하여지는 Kainos News 이번 주 찬양 20 / 300 – 20개의 셀, 300명의 영혼
예배의 외부적인 틀II - 예배 음악 조광현.
영성기도회 렉시오 디비나와 묵상기도 2.
성인 1부 성경 공부 지도목사: 신정우 목사 부 장: 오중환 집사 2010년. 5월 9일
남북 탑승객 150명을 태운 디젤기관차가 2007년 5월 17일 오전 경의선 철길을 따라 남측 최북단 역인 도라산역 인근 통문을 통과하고 있다. /문산=사진공동취재단.
성경 암송 대회 한일교회 고등부 (일).
천주교 의정부교구 주엽동본당 사목협의회 사목활동 보고서
III. 노동조합과 경영자조직 노동조합의 이데올로기, 역할 및 기능 노동조합의 조직형태 노동조합의 설립과 운영
여수시 MICE 산업 활성화 전략 ( 중간보고 )
1. 단위사업 관리, 예산관리 사업설정 (교직원협의/의견수렴) 정책 사업 학교 정책 사업 등록 사업 기본정보 목표 설정
※과정 수료자에 한하여 수강료의 80~100% 차등 환급함
평생학습중심대학 프로그램 수강지원서 접수안내 오시는 길 관악구&구로구민을 위한 서울대학교 -- 접수 일정 및 방법 안내--
서비스산업의 선진화, 무엇이 필요한가? 김 주 훈 한 국 개 발 연 구 원.
기존에 없던 창업을 하고 싶은데, 누구의 도움을 받아야 할지 모르겠어요
전시회 개요 Ⅰ. 전시명칭 개최기간 개최장소 개최규모 주 최 참 관 객 현 지 파 트 너 General Information
Homeplus 일 家 양 득 프로그램 소개 2015년 12월.
Home Network 유동관.
통신이론 제 1 장 : 신호의 표현 2015 (1학기).
I. 기업과 혁신.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법

ESOCOM – IPIX 고정IP서비스 제안서 Proposer ㈜이소컴.
화장품 CGMP 한국콜마㈜.
초화류 종자 시장 규모 100억원 이상(추정, 생산액의 10%정도 차지)
COMPUTER ARCHITECTIRE
[ 한옥 실측 ] 1. 약실측 2. 정밀실측 조선건축사사무소.
14. 컴파일러 자동화 도구 스캐너 생성기 파서 생성기 코드 생성의 자동화
A제조용수/B환경관리/C시설관리 ㈜ 에이플러스 코리아
Introduction to Network Security
Presentation transcript:

언어, 문법, 기계, 파서, 고쳐쓰기, 현대수학의 한계, 그리고 미래의 전산학 SIGPL 겨울학교 2012. 2. 3. 최광무 한국과학기술원 전산학과

차례 언어이론의 기초 Regular 언어(language) Rewriting System 혹은 파서 한글 모아쓰기 기계(automata) Rewriting System 혹은 파서 Context-free 언어의 해석(parsing) 왼 파서(left parser) - 왼쪽 부터 유도하기(leftmost derivation) 위 아래(top-down) 파서 오른 파서(right parser) - 오른쪽부터 유도하기를 거꾸로(rightmost derivation in reversed order) 아래 위(bottom-up) 파서 Deterministic parsing of CFG 왼 파서 Strong LL(k) 파서 ⊆ LL(k) 파서. 오른 파서 LR(k) 파서 ⊇ LALR(k) 파서 ⊇ SLR(k) 파서. 현대수학에서 계산(computable)에 관한 Turing-Church의 주장(Thesis) TM Turing 1930. μ-recursive 부분함수 Church 1934. 현대수학의 비극 Cantor’s diagonalization argument 1874; 1891. uncountable, 실수(實數; real number) Russell's 모순(Paradox) 1901; 1911. Gödel의 incompleteness theorem 1931. Hilbert의 실패한 꿈 1929. Halting 문제(problem)과 같은 문제들 끝내기 이야기 유클리드 기하학 - 증명의 아름다움 피타고라스 – 무리수 미분이 이상하다? 미분을 완전히 그리고 적절히 정의하였는가? SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

언어(Languages) – 소통수단 인문사회과학 예술 자연과학, 공학, 전산학 철학, 역사, 사회학, 경제, 법률 모국어(자연언어) 애매(Ambiguous)하다 복잡하다 영어강의 ??? 예술 음악, 미술, 스포츠 연주, 형태, 행동 자연과학, 공학, 전산학 수학 엄밀 (Rigorous, Formal) 하다 간단하다 전산학 프로그래밍 언어 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

구문론(構文論; Syntax) 4개의 전문용어(terminology) 언어와 어휘, 문자열의 예 한글 모아쓰기 오토마타 어휘(vocabulary, alphabet), Σ 기본문자들의 집합 언어의 axiomS(atom) 문자(symbol) a ∈ Σ. 어휘의 원소 문자열(string) x ∈ Σ ∗ . 문자(symbol)들이 줄 선(sequence) 것 문자열(수열) 언어(language) L ⊆ Σ ∗ . 문장(문자열)들의 집합 언어와 어휘, 문자열의 예 이진수 Σ = {0, 1} 2자 십진수 Σ = {0, 1, 2, …, 9} 10자 한글 Σ = {ㄱ, ㄴ, …, ㅎ, ㅏ, ㅑ, …, ㅣ} 24자 ㄱ ㅕㅇㅜㄹㅎㅏㄱㄱㅛ 영어 Σ = {a, b, …, z} 26자 Winter School 컴퓨터 Unicode 겨울학교 한글 모아쓰기 오토마타 한글 모아쓰기 기계 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

전문용어 4개+ ε 빈 문자열(empty string) Σ 0 = {ε} Σ = Σ 1 = {0, 1} 산수에 +에서 0이나 ⅹ에서 1과 같은 항등원(identity) Σ 0 = {ε} Σ = Σ 1 = {0, 1} Σ 2 = {00, 01, 10, 11} … Σ 𝑛 = {x∈{0, 1}∗ | |x| = n} Σ ∗ = Σ 0 ∪ Σ 1 ∪ Σ 2 ∪ … 문자열의 universe(전 집합) Σ가 많이 있다. 4개의 전문용어 문자(symbol) a ∈ Σ 어휘(vocabulary) Σ 문자열(string) x ∈ Σ ∗ 언어(language) L ⊆ Σ ∗ 언어의 문장(statement)확인문제(membership problem) 문자열 x ∈ Σ ∗ 가 문장(x ∈ L)인가, 아닌가(x ¬∈ L). 기계(automata) Σ ∗ • y ∈ Σ ∗ ¬∈L L • x ∈ Σ ∗ ∈L Σ† = Σ 1 ∪ Σ 2 ∪ Σ 3 ∪ … Σ • a∈Σ Σ† = Σ ∗ / {ε}, Σ ∗ = Σ† ∪ {ε}. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

문법(Grammar) 예 “x = 5”라는 문장에 필요한 문법규칙 문법 G = (N, Σ, P, S)의 요소 4개 <문> → <좌> “=“ <우> <좌> → “x” | … <우> → “5” | … 문법 G = (N, Σ, P, S)의 요소 4개 N: 넌 터미널(Nonterminal symbolS), 단 V = N ∪ Σ. N = {<문>, <좌>, <우>} Σ: 터미널(Terminal symbolS) Σ = {“x”, “=“, “5”} S: 시작 문자(Start symbol) S ∈ N, S = <문> P: 규칙(Production ruleS) P ⊆ N x (N∪Σ)*. (A, α) ∈ P일 때, A → α ∈ P 또는 A → α로 쓴다. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

문법 G = (N, Σ, P, S)과 유도, 언어 <문> <좌> “=” <우> “x” “5” 유도(derivation), ⇒ A → α ∈ P 일 때, 임의의 β, γ ∈ V*에 대하여, 단 V* = (N∪Σ)*. βAγ ⇒A→α βαγ. ⇒ ⊆ V* ⅹ V*. → ⊆ ⇒. →는 유한, ⇒는 무한. 유도의 확장: ⇒n, ⇒*. ⇒0 = idV*. {α ⇒0 α| α ∈ V*} ⇒n = ⇒n-1 ∙ ⇒ n ≥ 1. ⇒* = ⇒0 ∪ ⇒ 1 ∪ ⇒ 2 ∪ … 언어, L(G): 문법 G가 정의한 언어 L(G) L(G) = {w ∈ T* | S ⇒* w}. 예: <문> ⇒ <좌> “=“ <우> ⇒ “x” “=“ <우> ⇒ “x” “=“ “5” <문> <좌> “=” <우> “x” “5” SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

문법의 계층(hierarchical)구조 Type 3: 정규(regular) 문법 A → xB, A → y. A, B ∈ N, x, y ∈ Σ*. 오른 줄(right linear) (정규)문법 A → aB, A → b. A, B ∈ N, a, b ∈ Σ. 오른 줄 (정규)문법의 normal form A → Bx, A → y. A, B ∈ N, x, y ∈ Σ*. 왼 줄(left linear) (정규)문법 오른 줄 (정규)문법 ⇔ 왼 줄 (정규)문법 x1x2…xnyn ↔ ynxnxn-1…x1. 줄(linear) 구조. 줄(linear list) Type 2: 문맥자유(context-free) 문법 A → α. A ∈ N, α ∈ V* = (N∪Σ)*. A → BC, A → a except S → ε. A, B, C ∈ N, a ∈ Σ. 문맥자유 문법의 normal form Chomsky’s normal form(CNF) 계층(hierarchical) 구조 나무(tree) Type 1: 문맥민감(context-sensitive; recursive) 문법 βAγ → βαγ, A →β:γ α. A ∈ N, α ∈ V†, β, γ ∈ V*. α → β. α ∈ V†, β ∈ V*, |α| ≤ |β|. Type 0: unrestricted 문법 α → β. α ∈ V†, β ∈ V*. S S A1 x1 β S B y γ z α x A1 x1 A2 x2 A2 x2 … … An-1 An-1 An xn An xn yn yn 문법의 계층구조 문법 CSG CFG RG SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

기계(Automata)의 계층구조 기계의 계층구조 Type 3: 유한상태기계(Finite state automata; FA) 상태(stateS), 입력 문자(S), state 변화(transitionS) 초기(initial) 상태, 끝나는(finalS) 상태 결정적(deterministic), 비결정적(non-deterministic) 정규(regular) 문법, 언어 Type 2: Stack을 가진 기계(Pushdown automata; PDA) FA + stack 문맥자유(context-free) 문법, 언어 Type 1, 0: Turing machine(메모리를 가진 기계) FA + memory(tape) 컴퓨터, 프로그램 Type 1: TM 항상 끝난다(terminate). 알고리즘 Type 0: TM 끝나지 않을 수도 있다(infinite loop). 프로그램 TM PDA FA 언어(문제)의 계층구조 프로그램 할 수 없다 프로그램 알고리즘 문맥자유 문제가 아니다. 정규 수학의 대상이 아니다. Cantor, Russell, Gödel, Hilbert, … SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

언어와 문법의 예(1) Type 3: 정규 언어 Type 2: 문맥자유 언어 a b ε A B a b b A B L3 = { anbm | n, m ≥ 0 }. 정규식(regular expression) a*b*. 합(union), 곱(concatenation), 반복곱의 합(closure; *). 더하기, 붙이기, 많이 유한상태기계(FA) Nondeterministic Deterministic 한글모아쓰기기계(automata) 정규문법: G3N: A → aA | B | ε, B → bB | ε. Type 2: 문맥자유 언어 L2n = { anbn | n ≥ 0 }. L2n ⊆ L3. G2n: S → aSb | ε. L2= = { x ∈ {a, b}* | |x|b = |x|a }. L2= ⊆ L2n. G2=: S → aSbS | bSaS | ε. L(G2=) ⊆ L2=, L2= ⊆? L(G2=). Lk,m = {x ∈ {a, b}* | |x|b = k∙|x|a + m}. Gk,m? a b ε A B a b b A B G3D: A → aA | bB | ε, B → bB | ε. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

언어와 문법의 예(2) Type 1: 문맥민감 언어 Type 1: recursive 언어 Type 0: 언어 L13 = { anbncn | n ≥ 0}. G13: S → aSBC | aBC | ε. CB → HB, HB → HC, HC → BC, aB → ab, bB → bb, bC → bc, cC → cc. S ⇒S→aSBCn-1 an-1S(BC)n-1 ⇒S→aBC an(BC)n = anB(CB)n-1C (⇒CB→HB∙HB→HC∙HC→BC)¹/₂n(n-1) anBnCn ⇒aB→ab anbBn-1Cn ⇒bB→bbn-1 anbnCn ⇒bC→bc anbncCn-1 ⇒cC→ccn-1 anbncn. Type 1: recursive 언어 L1xx = { xx| x ∈ {a, b}* }. G1xx: S → aAS | bBS | T Aa → aA, Ba → aB, Ab → bA, Bb → bB, BT → Tb, AT → Ta, T → ε. S ⇒S→aAS|bBSn (aA|bB)nS ⇒S→T (aA|bB)nT ⇒Aa→aA|Ba→aB|Ab→bA|Bb→bBn (a|b)n(A|B)nT ⇒BT→Tb|AT→Tan (a|b)nT(a|b)n ⇒T→ε (a|b)n(a|b)n. Type 0: 언어 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

고쳐쓰기(Rewriting system) 고쳐쓰기 R = (C, →, ι, Φ) C: 고쳐쓰기 상황(ConfigurationS) → ⊆ C ⅹ C. α → β, α, β ∈ C. ι: 처음 상황(initial configuration) ι ∈ C. Φ: 끝 상황(final configurationS) Φ ⊆ C. 유도(derivation), ⇒ α → β 일 때, 임의의 γ, δ ∈ C에 대하여 γAδ ⇒α→β γβδ. →, ⇒, ⇒* ⊆ C ⅹ C. 고쳐쓰기의 정상적인 마침. ι ⇒* φ ∈ Φ. 문법 고쳐쓰기 문장을 만들어가는 고쳐쓰기 생성문법(generative grammar) 문법 G = (N, Σ, P, S)의 고쳐쓰기 RG = ((N ∪ Σ)*, →G = P, S, Σ*). L(RG) = {w ∈ Σ* (= Φ)| ι = S ⇒ 𝐺 ∗ w ∈ Σ*(= Φ)} = L(G). 기계 고쳐쓰기 문장을 없애가며 확인하는 고쳐쓰기(문장확인기계) 기계 M 의 고쳐쓰기 RM = (C ⅹ Σ*, →M, (ci, w), {(cF, ε)}). C: 고쳐쓰기(기계) 상황 Σ*: 나머지 입력문자열 L(RM) = {w ∈ Σ* | ι = (ci, w) ⇒ 𝐴 ∗ (cF, ε) ∈ Φ}. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

정규문법, 문장확인 유한상태기계, 그리고 고쳐쓰기 정규 문법 G3 = (N, Σ, P, S). 유한상태기계 A = (Q, Σ, δ, qS, F). 기계 A의 고쳐쓰기 상황(configurationS) 기계의 상태(stateS) Q ⅹ 나머지 입력문자열 Σ*. 문법 G3를 위한 고쳐쓰기 RA = (Q ⅹ Σ*, →A, (qs, w), {(qf, ε)| qf ∈ F}). qB ∈ δ(qA, y) ⇔ (qA, y) →𝐴(qA, y)→(qB, ε) (qB, ε) ⇔ A → yB ∈ P. 유한상태기계 A ⇔ (정규)고쳐쓰기 RA. ⇔ 정규문법 G3. S S ⇒* xA ⇒A→yB xyB ⇒* xyz. A qF ∈ F. B δ *( , z) δ( , y) δ*( , x) qS = δ *( , z) δ( , y) qA = δ *( , z) qB = qF. x … y z … x y z qS qA qB qF (qS, xyz) (qA, yz) (qB, z) (qF, ε) (qS, xyz) ⇒ 𝐴 ∗ (qA, yz) ⇒𝐴(qA, y)→(qB, ε) (qB, z) (qF, ε) qF ∈ F. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

문맥자유문법 유도 파스(parse) 나무(tree) A → α, A ∈ N, α ∈ V* = (N∪Σ)*. 문맥자유문법의 문자의 구분 N: 터미널이 아닌(nonterminal) 문자 바꿀 문자. T: 터미널(terminal) 문자 바꾼 문자. 유도과정에서 바꿀 문자가 여럿 나온다. 파스(parse)나무(tree) 나무에는 가지(subtree)가 있다. 시작(subroot)이 바꿀 문자 끝(leaf)이 바꾼 문자 계층적(hierarchical) 구조(structure). 문맥자유문법 고치기(유도)의 일반 꼴 S ⇒∗ x0A1x1A2x2 … xn-1Anxn 0 ≤ ∀k ≤ n: xk ∈ Σ*, 1 ≤ ∀k ≤ n: Ak ∈ N, A1, Ak, …, An 중 어떤 문자를 먼저 바꾸어도 나무는 같다. 무엇이 파스나무를 다르게 하는가? 바꿀 문자가 가진 문법 규칙에서 우변 고르기 A → α | β. Nondeterministic S x0 xn Ak ⇒∗ yk ∈ Σ*. … xk-1 x1 A1 Ak … xk xn-1 An y1 yk yn ⇒∗ x0y1x1y2x2 … xn-1ynxn∈ Σ*. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

문맥자유문법의 두 가지 고치기 순서 (⇒𝑙𝑚 /⇒𝑟𝑚) S 문장 구하기의 두 가지 고치기 순서 왼쪽부터 고치기(Leftmost derivation) 오른쪽부터 고치기(Rightmost derivation) 왼쪽부터 고치기(⇒𝑙𝑚 ) S ⇒ 𝑙𝑚 ∗ xBγ x∈Σ*, γ∈V*, B∈N, 오른쪽부터 고치기(⇒𝑟𝑚) S ⇒ 𝑟𝑚 ∗ αBz α∈V*, z∈Σ*, B∈N, 고치기 순서에 따른 두 가지 기계 고치기 순서가 달라도 결과나무는 같다. 왼 파서(Left parser) 왼쪽부터 고치며, 위에서 아래로(top-down) 나무 만들기(parsing). 오른 파서(Right parser) 오른쪽부터 고치기를 거꾸로 하며, 아래서 위로(bottom-up) 나무 만들기. x B γ β y z ⇒ 𝑙𝑚 𝐵→β xβγ ⇒ 𝑙𝑚 ∗ xyγ ⇒ 𝑙𝑚 ∗ xyz ∈ Σ*. B → β, β ⇒ 𝑙𝑚 ∗ y ∈ Σ*, γ ⇒ 𝑙𝑚 ∗ z ∈ Σ*. S ⇒ 𝑟𝑚 𝐵→β αβz ⇒ 𝑟𝑚 ∗ αyz ⇒ 𝑟𝑚 ∗ xyz ∈ Σ*. α B z B → β, β ⇒ 𝑟𝑚 ∗ y ∈ Σ*, α ⇒ 𝑟𝑚 ∗ x ∈ Σ*. β x y SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 유도(⇒𝑙𝑚), 파스나무, Stack, 입력문자열, (Stack, 입력문자열) 시작 문 ⇒𝑙𝑚문→좌=우 좌 = 우 ⇒𝑙𝑚좌→x x = 우 ⇒𝑙𝑚우→5 x = 5 (문, x=5) ⇒문→좌=우 (좌=우, x=5) ⇒좌→x (x=우, x=5) ⇒↓x (=우, =5) ⇒↓= (우, 5) ⇒우→5 (5, 5) ⇒↓5 (ε, ε). 예상한다. 문 확인한다. 좌 x 좌 = 우 = 예상과 확인끝 문 우 5 x 5 위에서 아래로 왼쪽에서 오른쪽으로 나무가 자란다. x = 5 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 파서(→𝐿), 문장확인기계 예상과 확인(Guess and verify) Stack 상황: V* = (N ∪ Σ)*, 단 α ∈ V*, 일 때, stack top이 1:α. 나머지 입력 문자열: Σ*. (1) Stack top이 Y=B ∈ N일 때: S ⇒ 𝑙𝑚 ∗ xBγ ⇒𝑙𝑚 xβγ ⇒ 𝑙𝑚 ∗ xyγ ⇒ 𝑙𝑚 ∗ xyz •S ⇒ 𝐿𝑚 ∗ x•Bγ ⇒ 𝐿𝑚 𝐵→β x•βγ ⇒ 𝐿𝑚 ∗ xy•γ ⇒ 𝐿𝑚 ∗ xyz• (S, xyz) ⇒ 𝐿 ∗ (Bγ, yz) ⇒ 𝐿 (𝐵, ε)→(β, ε) (βγ, yz) ⇒ 𝐿 ∗ (γ, z) ⇒ 𝐿 ∗ (ε, ε) B → β를 선택(nondeterministic)하여 B를 β로 예상한다. Stack에서 B를 pop하고 β를 push. (B, ε) → 𝐿 𝐵→β (β, ε). B를 β로 예상 Guess(Produce) A as α. (2) Stack top이 Y=a=y ∈ Σ일 때: S ⇒ 𝑙𝑚 ∗ xaγ =(⇒ 𝑙𝑚 0 ) xyγ ⇒ 𝑙𝑚 ∗ xyz •S ⇒ 𝐿𝑚 ∗ x•aγ ⇒ 𝐿𝑚 𝑚𝑜𝑣𝑒 • xa•γ = xy•γ ⇒ 𝐿𝑚 ∗ xyz• (S, xyz) ⇒ 𝐿 ∗ (aγ, az) ⇒ 𝐿 (𝑎, 𝑎)→(ε, ε) (= ⇒ 𝐿 ↓𝑎 ) (γ, z) ⇒ 𝐿 ∗ (ε, ε) Stack top a가 현재입력문자 a와 같은가를 확인. Stack에서 a를 pop하고 입력문자열에서도 a를 제거. ↓ (a, a) → 𝐿 (𝑎, 𝑎)→(ε, ε) (= → 𝐿 ↓𝑎 (ε, ε)). a를 확인 Verify(shift) a. S B β γ y x z S a = γ y x z SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 파서 - 2 문법 G의 왼 파서 →𝐿 = (V*ⅹΣ*, →𝐿, (S, w), {(ε, ε)}). 첫 상황 ι = (S, w) ∈ V*ⅹΣ*. 끝 상황 Ф = {(ε, ε) ∈ V*ⅹΣ*}. →𝐿 = {(B, ε) →𝐿 (β, ε)| B → β} ∪ {(a, a) →𝐿 (ε, ε)| a ∈ Σ} 왼 파서는 stack이 입력문자열을 유도하는가 예상하고 확인한다. 첫 상황 ⇒ 𝐿 ∗ 끝 상황. (S, w) ⇒ 𝐿 ∗ (ε, ε). 일반 상황 (α, xyz) ⇒ 𝐿 ∗ (Y, z), α ∈ V*, x, y, z ∈ Σ*, Y ∈ N ∪ Σ. 증명 αz ⇒ 𝑙𝑚 ∗ xYz ⇔ (α, xyz) ⇒ 𝐿 ∗ (Y, yz). B → β1 | β2 (β1 ≠ β2)일 때, (B, ε) → 𝐿 𝐵→β1 (β1, ε). (B, ε) → 𝐿 𝐵→β2 (β2, ε). 비결정적(Nondeterministic)이다. 왼 파서는 문맥자유언어의 문장확인문제를 푸는 기계이다. 문맥자유언어의 문장확인문제는 NP이다. 그러나 CYK 알고리즘은 O(n3). 문맥자유언어의 문장확인문제는 P이다. (S, w) ⇒ 𝐿 |π|+|𝑥| (ε, ε) ↔ •S ⇒ 𝐿𝑚 |π|+|𝑥| w• → S ⇒ 𝑙𝑚 |π| . w ∈ Σ*, π ∈ P*. |π| ≤ |π| + |w|. 왼 유도(⇒𝑙𝑚)는 왼 파서(⇒𝐿)의 요약해석(abstract interpretation)이다. 왼 파서(⇒𝐿)와 ⇒𝐿𝑚 은 같다. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 파서의 예상을 예상한다. 결정적(deterministic) SLL(k) 파서 문맥자유문법 G = (N, Σ, P, S)의 왼 파서의 예상 →𝐿 = {(B, ε) →𝐿 (β, ε)| B → β} B → β1 | β2 (β1 ≠ β2). (S, xyz) ⇒ 𝐿 ∗ (Bγ, yz) ⇒𝐿 (β1γ, yz) ⇒ 𝐿 ∗ (γ, z) ⇒ 𝐿 ∗ (ε, ε) B ⇒ β1 ⇒ 𝑙𝑚 ∗ y1 ∈ Σ*, k:y1 ∈ Firstk(β1). (S, xyz) ⇒ 𝐿 ∗ (Bγ, yz) ⇒𝐿 (β2γ, yz) ⇒ 𝐿 ∗ (γ, z) ⇒ 𝐿 ∗ (ε, ε) B ⇒ β2 ⇒ 𝑙𝑚 ∗ y2 ∈ Σ*, k:y2 ∈ Firstk(β2). γ ⇒* z ∈ Σ*, k:z ∈ Followk(B). k:Firstk(β1)∙Followk(B) ∩ k:Firstk(β2)∙Followk(B) = ø이면 결정적. u1 ∈ k:Firstk(β1)∙Followk(B): (B, u1) →SLL(k) (β1, u1) u2 ∈ k:Firstk(β2)∙Followk(B): (B, u2) →SLL(k) (β2, u2) 문법 G의 Strong LL(k) 파서 →SLL(k) = (V*ⅹΣ*, →SLL(k), (S, w), {(ε, ε)}), →SLL(k) = {(B, y) →SLL(k) (β, y)| B → β, y ∈ k:Firstk(β)∙Followk(B)} ∪ {(a, a) →SLL(k) (ε, ε)| a ∈ Σ} 문법 G의 Strong LL(k) 파서가 결정적(deterministic)이면, 문법 G는 SLL(k) 문법이다. Left to right scan with Leftmost derivation using k-lookahead symbols. SLL(1) 문법 ⊆ SLL(k) 문법 ⊆ LL(k) 문법(u1 = k:y1z, u2 = k:y2z). 하지만 k=1인 경우, SLL(1) 문법 = LL(1) 문법. S x B γ β2 β β1 z y1 y2 y 왼파서 (B, ε) →𝐿 (β1, ε) (B, ε) →𝐿 (β2, ε) SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

오른 파서는 오른 유도(⇒𝑟𝑚)를 거꾸로(←𝑟𝑚)한다. 시작 x = 5 ←𝑟𝑚x←좌 좌 = 5 ←𝑟𝑚5←우 좌 = 우 ←𝑟𝑚좌=우←문 문. (ε, x=5) ⇒↑x (x, =5) ⇒ x←좌 (좌, =5) ⇒↑= (=좌, 5) ⇒↑5 (5=좌, ε) ⇒ 5←우 (우=좌, ε) ⇒우=좌←문(문, ε). 저장한다. 문 확인한다. 우 5 좌 = 우 = 저장과 확인끝 문 좌 x x 5 오른쪽에서 왼쪽으로 아래에서 위로 나무가 자란다. (좌=우)R x = 5 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

오른 파서(→𝑅 ) 저장과 확인(Shift and reduce) 오른 파서가 하는 두 가지 행동 Stack에 입력문자 a ∈ Σ를 저장(shift)한다. Stack에서 a를 저장하고 입력문자열에서 a를 제거. (ε, a) → 𝑅 ↑𝑎 (a, ε). a ∈ Σ를 stack에 저장 shift a ∈ Σ. Stack에 A → α의 우변 αR이 있을 때: αR을 A로 확인(reduce)한다. Stack에서 αR을 pop하고 A를 push한다. (αR, ε) → 𝑅 α←𝐴 (A, ε). Stack에 α 를 A 로 확인 reduce α to A. 오른 파서는 입력문자열을 stack에 저장한 후 확인한다. 첫 상황 ⇒ 𝐿 ∗ 끝 상황. (ε, w) ⇒ 𝑅 ∗ (S, ε). 일반 상황 (ε, xyz) ⇒ 𝑅 ∗ (YαR, z), α ∈ V*, x, y, z ∈ Σ*, Y ∈ N ∪ Σ. 증명 αYz ⇒ 𝑟𝑚 ∗ xyz ⇔ (ε, xyz) ⇒ 𝑅 ∗ (YαR, z). 오른 파서의 비결정성(Nondeterminism) Stack에 규칙 A → α의 우변 αR이 있을 때 입력문자열에서 a를 저장(shift)할까, αR을 A로 확인(reduce)할 까? shift-reduce conflict 또 다른 규칙 A’ → α’의 우변 α’R이 있을 때, reduce-reduce conflict S Y α z x y β SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

오른 파서와 LR(1) itemS x = 5 ←𝑟𝑚x←좌 좌 = 5 ←𝑟𝑚5←우 좌 = 우 ←𝑟𝑚좌=우←문 문. [문 → •좌=우, ε] [좌 → •x, =] 시작 x = 5 ←𝑟𝑚x←좌 좌 = 5 ←𝑟𝑚5←우 좌 = 우 ←𝑟𝑚좌=우←문 문. (ε, x=5) ⇒↑x (x, =5) ⇒ x←좌(좌, =5) ⇒↑= (=좌, 5) ⇒↑5 (5=좌, ε) ⇒ 5←우(우=좌, ε) ⇒우=좌←문(문, ε). [좌 → x•, =] [문 → 좌•=우, ε] [문 → 좌=•우, ε] [우 → •5, ε] [우 → 5•, ε] 저장한다. 문 확인한다. [문 → 좌=우•, ε] 우 5 좌 = 우 = [S’ → 문•, ε] 저장과 확인끝 좌 문 x x 5 오른쪽에서 왼쪽으로 아래에서 위로 나무가 자란다. x = 5 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

오른 파서의 비결정성 줄이기 오른 파서 → LR(k) 파서 문자(오른 파서) 대신에 LR(k) state(LR(k) 파서)를 stack에 넣는다. X ∈ N ∪ Σ → [XαR]LR(k) ↔ 〈XαR〉LR(k). Rk = {[B → β1•β2, x]| B→β1β2, x ∈ Σ≤k }: LR(k) itemS. LR(k) itemsS: 〈∙〉k: V* → 2Rk. 〈αβ1〉k = {[B → β1•β2, k:z] | S ⇒ 𝑟𝑚 ∗ αBz ⇒𝑟𝑚 αβ1β2z, B → β1β2} δ1R LR(k)(ρk) δ2R, if 〈δ1〉k = 〈δ2〉k. 오른쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집어져(δR) 있다. LR(k)는 집합 V*에 정의된 같은관계이다. 같은부류 [δ]LR(k)를(stack 문자열의 집합) LR(k) state라 한다. [δR]LR(k) ↔ [δR]ρk ↔ [δR]k ↔ 〈[δR]LR(k)〉k ↔ 〈δ〉LR(k) ↔ 〈δ〉ρk ↔ 〈δ〉k. ParLR(k)(V*)를 [V*]LR(k)라고 쓰고 LR(k) state의 집합이다. LR(k) state ↔ LR(k) item의 집합 ↔ stack 문자열의 집합 Stack에 있는 βR←B로 확인할 때, •S ⇒ 𝑅𝑚 ∗ αB•z ⇒𝑹𝒎 αβ•z ⇒ 𝑅𝑚 ∗ αy•z ⇒ 𝑅𝑚 ∗ •xyz. •xyz ←𝑅𝑚 ∗ αy•z ←𝑅𝑚 ∗ αβ•z ←𝑹𝒎 αB•z ←𝑅𝑚 ∗ S•. (ε, xyz) ⇒ 𝑅 ∗ (αR, yz) ⇒ 𝑅 ∗ (βRαR, y2z) ⇒𝑹 (BαR, z) ⇒ 𝑅 ∗ (S, ε). (βR, ε) →𝑅 (B, ε)를 (βRαR, x) →LR(k) (BαR, x), x = k:z로 제한하여 확인한다. [B → β1•β2, x] ∈ 〈αβ1〉LR(k) ↔ [β1RαR]LR(k) 일 때, β2 = ε이면 x를 보고 β1←B로 확인(reduce)한다. 1:β2 ∈ Σ 이면 저장(shift)한다. 1:β2 ∈ N이면 확인을 미리 준비(《∙》)한다. S B α z x y β SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

LR(k) 파서 만들기 《∙》ρk: Rk → 2Rk. 《[B→β1•Aβ2, x]》ρk = {[A→•ξ, y]| A → ξ, y ∈ Firstk(β2x)} [A→ξ•, y] ∈ 〈αβ1ξ〉ρk일 때, y를 보고 ξ←A로 확인할 준비한다. 〈ε〉ρk = 《[S’→•S, ε]》ρk* ∈ [ V ∗ ]LR(k)로 시작(basis). [B→β1•Xβ2, x] ∈ 〈αβ1〉ρk ∈ [ V ∗ ]LR(k)이면(recursion), [B→β1X•β2, x] ∈ 《〈αβ1X〉ρk 》ρk* ∈ [ V ∗ ]LR(k). 〈αβ1X〉ρk = 《[B→β1X•β2, y]》ρk* = {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk†. 단 {[B→β1X•β2, y]} ∪ 《[B→β1X•β2, y]》ρk† = ø. 문법 G = (N, Σ, P, S)의 LR(k) 파서, LRk(G) = (([ V ∗ ]LR(k) ⅹΣ*, →LR(k), (〈ε〉k, w), {(〈ε〉k∙〈S〉k, ε)}). →LR(k) = {(〈αβ1〉k, a) →LR(k) (〈αβ1∙a〉k∙〈αβ1〉k, ε) | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈αβ1〉k} ∪ {(〈αβ1∙ξ〉k∙〈αβ1∙ξ:|ξ|-1〉k∙ … ∙〈αβ1∙ξ:1〉k∙〈αβ1〉k, x) →LR(k) (〈αβ1∙A〉k∙〈αβ1〉k, x) | [B → β1•Aβ2, y] ∈ 〈αβ1〉k, [A → •ξ, x] ∈ 《〈αβ1〉k》k†, [A → ξ•, x] ∈ 〈αβ1ξ〉k, [B → β1A•β2, y] ∈ 〈αβ1A〉k}. S [S’→•S, ε] ∈ 〈ε〉k [S’→S•, ε] ∈ 〈S〉k αβ1 A [B→β1•Aβ2, x] ∈ 〈αβ1〉k [B→β1A•β2, x] ∈ 〈αβ1A〉k [A→•ξ, y] ∈ 《〈αβ1〉k》k† ξ [A→ξ•, y] ∈ 〈αβ1ξ〉k SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 파서의 비결정성 더 줄이기 SLL(k) 파서 → LL(k) 파서 문자(SLL(k) 파서) 대신에 LL(k) state(LL(k) 파서)를 stack에 넣는다. X ∈ N ∪ Σ → [XαR]LR(k) ↔ 〈XαR〉LR(k). Lk = {[B → β1•β2, x]| B→β1β2, x ∈ Σ≤k}: LL(k) itemS. 예상할 때, 올 수 있는 입력 문자열을 SLL(k) 보다 더 자세히 계산한다. LL(k) itemS: 〈∙〉k: V* → 2Lk. 〈β2γ〉k = {[B → β1•β2, x] | S ⇒ 𝑙𝑚 ∗ Bγ ⇒lm xβ1β2γ, B → β1β2, x ∈ Firstk(β2γ)} δ1 LL(k)(λk) δ2, if 〈δ1〉k = 〈δ2〉k. 왼쪽에 있는 문자를 stack top에 넣으므로 stack 문자열이 뒤집히지 않는다. LL(k)는 집합 V*에 정의된 같은관계이다. 같은부류 [δ]LL(k)(stack 문자열들의 집합)를 LL(k) state라 한다. [δ]LL(k) ↔ [δ]λk ↔ [δ]k ↔ 〈[δ]LL(k)〉k ↔ 〈δ〉LL(k) ↔ 〈δ〉λk ↔ 〈δ〉k. ParLL(k)(V*)를 [V*]LL(k) 라고 쓰고 LL(k) state의 집합이다. Stack에 있는 B→β로 예상할 때, •S ⇒ 𝐿𝑚 ∗ x•Bγ ⇒𝑳𝒎 x•βγ ⇒ 𝐿𝑚 ∗ xy•γ ⇒ 𝐿𝑚 ∗ xyz•. (S, xyz) ⇒ 𝐿 ∗ (Bγ, yz) ⇒𝑳 (βγ, yz) ⇒ 𝐿 ∗ (γ, z) ⇒ 𝐿 ∗ (ε, ε). (B, u) →SLL(k) (β, u)에서 u ∈ k:Firstk(β)∙Followk(A)로 예상하나, (B, x) →LL(k) (β, x)에서 x = k:yz로 제한하여 예상한다. {k:yz} ⊆ k:Firstk(β)∙Followk(A). [B → β1•β2, x] ∈ 〈β2γ〉LL(k) ↔ [β2γ]LL(k) 일 때, β1 = ε이면 x를 보고 B→β2로 예상한다. β1:1 ∈ Σ 이면 Σ 이면 확인(verify)한다. β1:1 ∈ N이면 예상을 미리 준비(《∙》)한다. S B β γ y x z SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

LL(k) 파서 만들기 《∙》λk: Lk → 2Lk. 《[B→β1A•β2, x]》λk = {[A→ξ•, x]| A → ξ} [A→•ξ, x] ∈ 〈β2γ〉λk일 때, A→ξ로 예상할 준비한다. 〈ε〉λk = 《[S’→S•, ε]》λk* ∈ [ V ∗ ]LL(k) 로 시작(basis). [B→β1X•β2, x] ∈ 〈β2γ〉λk ∈ [ V ∗ ]LL(k)이면(recursion), [B→β1•Xβ2, y] ∈ 《〈Xβ2γ〉λk》λk* ∈ [ V ∗ ]LL(k), y ∈ Firstk(Xx). 〈Xβ2γ〉λk = 《[B→β1•Xβ2, y]》λk* = {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk†. 단 {[B→β1•Xβ2, y]} ∪ 《[B→β1•Xβ2, y]》λk† = ø. 문법 G = (N, Σ, P, S)의 LL(k) 파서, LLk(G) = (([ V ∗ ]LL(k) ⅹΣ*, →LL(k), ([ε]k∙[S]k, w), {([ε]k, ε)}). →LL(k) = {([A∙β2γ]k∙[γ]k, x) →LL(k) {([ξ∙β2γ]k∙[ξ:|β|-1∙β2γ]k∙ … ∙[ξ:1∙β2γ]k∙[β2γ]k, x) | [B → β1A•β2, y] ∈ 〈β2γ〉k, [A →ξ•, y] ∈ 《〈β2γ〉k》k†, [A → •ξ, x] ∈ 〈β2γ〉k, [B → β1•Aβ2, X] ∈ 〈A∙β2γ〉k}. x ⊆ X. ∪ {([aβ2γ]k∙[γ]k, a) →LL(k) ([β2γ]k, ε) | a ∈ Σ, [A → β1•aβ2, x] ∈ 〈aβ2γ〉k} S [S’→S•, ε] ∈ [ε]k [S’→•S, s] ∈ [S]k β2γ A [B→β1A•β2, x] ∈ [β2γ]k [B→β1•Aβ2, X] ∈ [Aβ2γ]k [A→ξ•, x] ∈ 《[β2γ]k》k† ξ [A→•ξ, y] ∈ [ξβ2γ ]k SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

왼 파서의 종류 유한상태기계 왼 파서 SLL(k) 왼 파서 LL(k) 왼 파서 SLL(k)문법 ⊆ LL(k)문법. A = (Q × Σ ∗ , →A, ( 𝑞 𝑠 , w), {(f, ε)| f∈F}) (q, x) →A (p, ε). 왼 파서 L = (( V ∗ × Σ ∗ ), →L, (S, w), {(ε, ε)}) B를 β로(B → β) 예상(guess B as β) a ∈ Σ를 확인(verify a) (B, ε) →L (β, ε), (a, a) →L (ε, ε). SLL(k) 왼 파서 SLL(k) = (( V ∗ × Σ ∗ ), →SLL(k), (S, w), {(ε, ε)}) (B, x) →SLL(k) (β, x), (a, a) →SLL(k) (ε, ε). x ∈ Firstk(β∙Follwk(B)), LL(k) 왼 파서 LL(k) = (([ V ∗ ]LL(k) × Σ ∗ ), →LL(k), ([ε]k[S]k, w), {([ε]k}, (ε, ε)}) ([B∙γ]k∙[γ]k, x) →LL(k) ([β∙γ]k…[γ]k, x), ([a∙γ]k∙[γ]k, a) →LL(k) [γ]k, ε). [B → •β, x] ∈ 〈β∙γ〉LL(k), [~ → ~•a~, a~] ∈ 〈a∙γ〉LL(k). SLL(k)문법 ⊆ LL(k)문법. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

오른 파서의 종류 오른 파서 LR(k) 오른 파서 LR(k, k) SLR(k) 오른 파서 LR(0, K) K ⊇ k. R = (( V ∗ × Σ ∗ ), →R, (ε, w), {(S, ε)}) a ∈ Σ를 저장(shift a) β를 B로(B → β) 확인(reduce β to B) (ε, a) →R (a, ε); ( β 𝑅 , ε) →R (B, ε) LR(k) 오른 파서 LR(k, k) LR(k) = (([ V ∗ ]LR(k) × Σ ∗ ), →LR(k), ([ε]k, w), {([ε]k∙[S]k}, (ε, ε)}) LR(k) 상태, LR(k) 확인(reduce) ([ α 𝑅 ]k, a) →LR(k) ([ a∙α 𝑅 ]k∙ [α 𝑅 ]k, ε), ([ β 𝑅 ∙ α 𝑅 ]k…[ α 𝑅 ]k, x) →LR(k) ([ Bα 𝑅 ]k∙[ α 𝑅 ]k, x) [~ → ~•a~, a~] ∈ 〈α〉LR(k), [B → β•, x] ∈ 〈αβ〉LR(k). SLR(k) 오른 파서 LR(0, K) K ⊇ k. SLR(k) = (([ V ∗ ]LR(0) × Σ ∗ ), →SLR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)}) LR(0) 상태, Followk(B) 확인(reduce) ([ α 𝑅 ]0, a) →SLR(k) ([ a∙α 𝑅 ]0∙[ α 𝑅 ]0, ε), ([ β 𝑅 ∙ α 𝑅 ]0…[ α 𝑅 ]0, y) →SLR(k) ([ B∙α 𝑅 ]0∙[ α 𝑅 ]0, y) [~ → ~•a~] ∈ 〈α〉LR(0), [B → β•] ∈ 〈αβ〉LR(0), y ∈ Followk(B). LALR(k) 오른 파서 LR(0, k) LALR(k) = (([ V ∗ ]LR(0) × Σ ∗ ), →LALR(k), ([ε]0, w), {([ε]0∙[S]0}, (ε, ε)}) LR(0) 상태, LR(k) 확인(reduce) ([ α 𝑅 ]0, a) →LALR(k) ([ a∙α 𝑅 ]0∙[ α 𝑅 ]0, ε), ([ β 𝑅 ∙ α 𝑅 ]0…[ α 𝑅 ]0, x) →LALR(k) ([ B∙α 𝑅 ]0∙[ α 𝑅 ]0, x) [~ → ~•a~] ∈ 〈α〉LR(0), [B → β•, x] ∈ 〈αβ〉LR(k). SLR(k)문법 ⊆ LALR(k)문법 ⊆ LR(k)문법. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

LL, RR/LR, RL 파서 LL RR LR RL S S α B B γ β β β S B y γ z α x x y z x y SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

결정적 왼/오른 파서 왼 파서의 결정적 파서 오른 파서의 결정적 파서 왼 파서는 (성실한) 미래학자이고, Stack이 유도할 문자열을 미리 계산하여 예상하고 후에 확인한다. SLL(k)문법 ⊆ LL(k)문법이지만 SLL(1)문법 = LL(1)문법 좌 반복(left recursive) 문법은 LL(k)가 아니다. A → Aα | β이면 Firstk(Aα) ⊇ Firstk(A) ⊇ Firstk(β). 오른 파서의 결정적 파서 Stack에 미리 기억하고 후에 확인한다. 왼 파서는 (성실한) 미래학자이고, Stack에 있는 미래(우문맥(right context))를 미리 예측하고 확인한다. 오른 파서는 (성실한) 역사학자이다. Stack에 과거(좌문맥(left context))를 기억하여 정리하고 확인한다. … ⊆ LL(k)문법 ⊆ SLR(k)문법 ⊆ … SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

Turing 기계(machine)는 컴퓨터다. Turing 기계(machine; TM) Turing 1930. M = (Q, Σ, Γ, →TM, qs, qf) Q: StateS Σ: 입력문자 Γ: Tape 문자(Σ ⊆ Γ, B ∈ Γ, B ¬∈ Σ) qs ∈ Q: 시작 상태 qf ∈ Q: 마지막 상태. TM의 상태: QⅹΓ*ⅹΓ*: StateⅹTape 왼쪽내용ⅹTape 오른쪽내용. (q, αZ, Xβ) →TM(p/Y/L) (p, αZY, β) (q, αZ, Xβ) →TM(p/Y/R) (p, α, ZYβ) L(TM) = {w ∈ Σ*| (q0, ε, w) ⇒TM* (qf, α, β)}. TM은 메모리에 읽고 쓰고, head를 움직일 수 있다. TM은 컴퓨터다. 1 cell을 32bit로 확장(word)한다. 단일 head를 다중 head로 바꿀 수 있다. Register, memory 산수와 논리(ALU)를 흉내 낼 수 있다. Program 메모리와 data 메모리를 구분한다. Von Neumann 구조 Stored(Programmable) control logic Hardware vs. Software TM은 프로그램이다. 문제(프로그램)의 계층구조 프로그램 할 수 없다 프로그램 알고리즘 NP-complete SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

TM은 프로그램이다 프로그램의 꽃 반복구조(loop)의 문제 항상 끝나는 프로그램(알고리즘) 끝나지 않은 수 도 있는 프로그램 변하지 않는 (loop invariance) 성질 변하는 (loop termination) 성질 반복구조(loop)의 문제 끝나지 않을 수(infinite loop)도 있다 항상 끝나는 프로그램(알고리즘) Type 1 Recursive 전체(total) 함수 끝나지 않은 수 도 있는 프로그램 Type 0 Recursively enumerable 부분(partial) 함수 Recursively enumerable 밖에는 무엇이 있나? 프로그램 할 수 없는 문제들 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

함수와 컴퓨터(프로그램, TM) 문제를 푸는 두 가지 방법 함수 f: Nn → Nm. 부분함수 g: N → N. 해결 방법(operational) 어떻게 하는가(how)? (ε, qs, w) ⇒ 𝑇𝑀 ∗ (α, qf, β). w ∈ Σ*, αβ ∈ Γ*. 함수 문제(functional) 무엇을 하는가(what)? fTM(w) = αβ. 함수 f: Nn → Nm. Nn ↔ N ↔ Nm. f: Nn → Nm. ↔ f’: N → N. 부분함수 g: N → N. ∃x∈ N: [g(x) = X ¬∈N(undefined). 기본재귀함수(primitive recursive) 함수 상수 함수 영(zero) 함수: ζ: N → N({0}). ζ(x) = 0. 다음수(successor) 함수: σ: N → N. σ(n) = n+1. 인수 찾기(projection): πkn: Nn → N. πkn(x) = ak 단 1≤k≤n ∧ x = (a1, …, ak,, … ,an). 기본재귀 f: N ⅹ N → N를 g: N → N와 h: N ⅹ N ⅹ N → N로 정의한다. f(x, ζ(n)) = g(x). f(x, 0) = g(x). f(x, σ(n)) = h(x, n, f(x, n)). f(x, n+1) = h(x, n, f(x, n)). SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

TM, 최소화 재귀함수, Turing-Church의 주장 Ackermann함수는 기초재귀로는 안 된다. A(0, y) = y+1 A(x+1, 0) = A(x, 1) A(x+1, y+1) = A(x, A(x+1), y)) μ-(최소화)재귀함수 – Church 1934; lecture at Princeton f(x) = μ n [g(x, n) = 0] Min n: [g(x, n) = 0 ∧ (1 ≤ ∀k ≤ n: ∃g(x, k)] Turing의 주장 TM(프로그램)은 계산가능(computable, programmable)이다. TM ⇒ 계산가능. 계산가능은 TM(프로그램)이다(?)라고 주장(Thesis) TM ⇔ 계산가능. Church의 주장 μ-재귀함수는 TM으로 프로그램할 수 있다. TM도 μ-재귀함수로 표현할 수 있다.(증명) TM ⇔ μ-재귀함수. 계산가능은 μ-재귀함수이기도 하다. Turing-Church의 주장 계산가능은 프로그램(TM)이나 μ-재귀함수이다. 프로그램 ⇔ μ-재귀함수 ⇔ 계산가능(?) 계산가능은 λ-calculus(Church 1934, Kleene 1935, Rosser 1935)다. 계산가능은 combinatory logic(Schönfinkel 1924, Curry 1929)이다. 계산가능은 type 0 grammar(Chomsky 1959)이다. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

Cantor의 대각선화 주장(1874; 1891) 비극의 시작 무한이진수 ↔ 자연수(셀 수 있게 무한)이라고 하자. a1 = 00000… a2 = 11111… a3 = 01101… … a = 011 … 대각선화(diagonalization) ¬a = 100 … 대각선화의 부정 a, ¬a ∈ 무한이진문자열, 그러나, a ↔ 자연수, ¬a ¬↔ 자연수. 무한이진수 ¬↔ 자연수. |자연수의 부분집합| > |자연수| 자연수 셀 수 있게(countable) 무한(많다) 자연수의 부분집합 셀 수 없이(uncountable) 무한(많다) 증명의 핵심 대각선화(diagonalization) 후에 부정한다. Russell에 영향을 준 것으로 예상. Self-recursion에 대한 부정. 내 개인 생각 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

Russell의 모순(paradox, 1901; 1911) Cantor의 naive set theory에 대한 부정 Let R = {x| x ¬∈ R} 매우 아름다운 집합에 대한 정의 집합도 집합의 원소가 될 수 있다. {{}, {{}}, {{{}}}, …} 집합이 그 집합 자신을 원소로 갖는 것은 이상하다. 사각형의 집합이 사각형의 집합을 원소로 가지지 않는다. 그러나, in x = R then (R ∈ R) ⇔ (R ¬∈ R). 자기자신으로 재귀(self-recursion)에 대한 부정. 자신을 부정하는 사람은 존재하지 않는다. x ¬∈ x . SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

Hilbert의 실패한 꿈(1929) Gödel의 불완전성 정리(1931) Hilbert의 꿈(program), 1929. 공리(axiom)로 시작한 완전하고(complete) 일관된(consistent) 수학(정리, theorem; 식, formula)의 모든 정리(theorem)는 일관된 증명(proof; 프로그램)이 있다. Gödel의 불완전성 정리(Incompleteness Theorem), 1931. 증명(proof)도 정리(theorem)다. 완전하고 일관된 공리를 가진 수학은 없다. 자신의 일관됨을 주장하는 정리는 일관되지 않다. Gödel의 불완전성 정리의 증명 G(T): 정리 → Gödel수: 정리 T의 Gödel수 prov: Gödel수 → 수; prov(G(T)) = G(p) if ∃p: 정리 T의 증명; = Gödel수가 아닌 수, otherwise. p ⇔ F(G(p)) Consider Beweisbar(y: Gödel수) = ∃x: ((y = G(T): T: x의 정리) ∧ (x = G(p): (p: y의 증명)) Beweisbar(Gödel의 모국어인 독일어로 provable)는 너무 길다. Beweisbar(y) = G(p): (p: y의 증명) Gödel수(증명 ↔ 정리 ↔ 자연수)도 필요 없다. Bew(T: 정리) = if prov(T) → true | ¬prov(T) → false fi. Bew(T) = F(T). 대각선화(diagonalization)하고 부정한다. ¬Bew(T: 정리) = if prov(T) → false | ¬prov(T) → true fi. ¬Bew(T) = ¬F(T). Self recursion ¬Bew(Bew) = ¬prov(prov) ⇔ prov(prov) = Bew(Bew). SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

Halting problem과 같은 문제들 Let H(p, d) = if p(d) stops → ¬stop | p(d) ¬stop → stops fi. in p = d = H then H(H, H) stops ⇔ H(H) ¬stop ⇔ H(H, H) ¬stop. 거짓말쟁이 개똥이가, “이 글은 내가 썼다” 그 글을 개똥이가 썼나, 안 썼다? 이발 못하는 사람만 이발해주는 이발사. 자신이 자신을 이발 할 까, 안 할 까? 이종형용사(Heterological)는 이종형용사인가 아닌가? 형용사가 표현하는 성질을 가지지 않은 형용사 예 (단음절)monosyllabic heterological (다음절)polysyllabic ¬ heterological 그러나 Heterological ??? p ⇔ ¬ p. Gödel의 불완전성 두 번째 정리(첫 번째 정리의 corollary). 큰일 났다! 그런데, 이거 모두 말장난(논리장난) 아닌가? 맞다() SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

서양 과학과 동양 인문학 서양 과학 동양 인문학 미래의 전산학 수학 또는 과학 F = ma. E = mc2. 19c말 – 20c초, 쉬운 과학과 공학을 이용한 무력으로 세계제패. 경제적 우월성 과학 또는 수학은 쉽다. 공학은 어렵다. 자연과 사람의 문제. Cantor, Russell, Gödel, Hilbert, ... 형식주의, 논리주의의 붕괴 과학(수학) 만능에 대한 수학자들의 경고. 동양 인문학 사람에 대한 이해와 존경 사람이 제일 어렵다. 미래의 전산학 사람의 문제를 다룬다. 기존의 공학과는 전혀 다른 새로운 학문이다. 프로그램학 SIGPL SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

전산학과 사람 미래학자들 좋은 프로그래밍언어 사람을 위한 프로그램학 전화기 망한다. 컴퓨터 망한다. 전 세계 인구의 1/3이 교환수 기계식 교환기, 컴퓨터 교환기 기술적 비약(Technical take-off) 컴퓨터 망한다. 전 세계 인구의 반이 프로그래머 ??? 새로운 파라다임. 좋은 프로그래밍언어 E. W. Dijkstra(1970년대) 사람을 위한 프로그래밍언어 vs. 기계를 위한 프로그래밍 언어 최광무(1990년대) 사람을 위한 프로그래밍언어 vs. 수학을 위한 프로그래밍 언어 사람을 위한 프로그램학 수학과의 만남 인문사회학과의 만남 사람과의 만남 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

미래에 지도자 수신제가(修身齊家) 치국평천하(治國平天下) 격물치지(格物致知) 성의정심(誠意正心) 미래에 지도자 공자, 대학 제 2장 격물치지(格物致知) 성의정심(誠意正心) 격물치지 이공학 공부 세상 무서운 줄 안다. 성의정심 인문사회학 공부 사람 귀한 줄 안다. 미래에 지도자 세상 무서운 줄 알고, 사람 귀한 줄 아는 사람 SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무

감사합니다 전산학과 인문사회학 공부 모두 열심히 하신 후에, 미래에 훌륭한 지도자가 되시기 바랍니다. SIGPL 겨울학교, 2012-02-03 한국과학기술원 전산학과 최광무