For regex_compile function in grep.c

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
Advertisements

명륜종합사회복 지관. * 강사 : 소 찾는 아이 작가 이상희, 김매화 팀장 외 * 북아트란 : 논술교육의 중요성, 자유로운 사고, 창 의력, 논리력 * 준비물 : 색연필, 사인펜, 연필, 지우개, 딱풀, 가위.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Chapter 7 ARP and RARP.
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
주요추진업무 1. 청년학교 등 청년정책 프로그램 운영 청년학교 운영, 커뮤니티 디자이너 양성 등의 프로그램 운영을 통해
기본 컴퓨터 프로그래밍 Lecture #6.
4장 구문(Syntax).
제 2 장 배열과 스트링.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Delphi 2009의 언어 개선 박지훈.임프 2018년 11월 16일 금요일
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
125. WAPPLES Policy Setting Guideline
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
프로그래밍언어론 2nd edition Tucker and Noonan
Power Java 제10장 배열.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
직 무 기 술 서 직무code 직무명 직군 사업부명 AB 10 인사팀장 관리직 경영지원본부 소속 직무담당자 인원 작성년월일
제 5장. Context-Free Languages
Step Motor Device Driver
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
재귀 혹은 귀납 Recursive or Inductive Definition 집합을 정의하는 방법
Perl File Handling FileHandle : Name for I/O connection
제 3 장 신경회로망 (Neural Networks)
제 2 장 변수와 상수.
제 3 장 상수와 변수
계수와 응용 (Counting and Its Applications)
Chapter 4 The Von Neumann Model.
제8장 특허침해소송(2).
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
adopted from KNK C Programming : A Modern Approach
Chapter 2 Lexical Elements, Operators, and the C System
바코드에 대하여…… 바코드에 대하여 알아보도록 하자 6-1 홍지효.
Introduction to Programming Language
과거사 청산, 밝은 미래를 위하여 역사 청산 비교 분석-독일과 우리나라.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
프로그래밍언어론 2nd edition Tucker and Noonan
Stepper Motor 디바이스 드라이버
-느라고 어제 왜 학교에 안 왔어요? 아파서 병원에 가느라고 못 왔어요 Sogang Korean 3B UNIT 6 “-느라고”
문자열 처리하기 working with Strings
4. 어휘 분석(Lexical analysis)
C-언어와 기반구조 정보보호학과 이정수 교수.
Signature, Strong Typing
Signature, Strong Typing
Signature, Strong Typing
점화와 응용 (Recurrence and Its Applications)
수학8가 대한 113~114 쪽 Ⅴ. 부등식 2. 일차부등식 §2.연립부등식(7/10) 연립부등식의 풀이.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
Basic Function 김윤성 박로빈 이지호 천영재
제5장 디버깅과 추적 문봉근.
하나샵에서 ALL KILL 기획서 하나샵 E-커머스팀 양희연.
엔화 대환/대출 자금용도 대상 이자 차액 효과 (A,B,C) 환율 리스크 헷징 (A,B) 엔화의 평균환율 (A,B,C)
토론의 기술 3 쟁점분석과 입론.
C.
printf("Global Korea\n");
품사 분류의 기준과 실제.
Spring, 2019 School of CSE Pusan National University
배열, 포인터, 함수 Review & 과제 1, 2.
Python 기본.
Presentation transcript:

For regex_compile function in grep.c Code Review For regex_compile function in grep.c 2019-05-30

regex_compile() static reg_errcode_t regex_compile(const char *pattern, int size, reg_syntax_t syntax, struct re_pattern_buffer *bufp) Description : Compiles pattern of length size according to syntax. Input pattern : A pattern (with the form of regular expression) to find from t he input file/string size : the length of pattern syntax : A 18-bit integer, where each bit represents the rule to apply w hen compiling pattern. e.g) Which one between \( \) and ( ) represents the syntactic parenthesis and the literal parenthesis? Output Returns an error code, which is one of the values in enum reg_errcode_t . If pattern is compiled successfully, 0 is returned. Compiled pattern is assigned to bufp->buffer. The size of compiled pattern is assigned to bufp->used. 2019-05-30

컴파일 된 패턴의 구성 컴파일 된 패턴은 grep의 input 파일 내부에서 매치되는 문자열을 찾기 위해 사용된다. 컴파일 된 패턴은 문자열 매치를 확인하기 위해 수행할 operation과 operation 실행에 필요한 argument의 연속으로 구성된다. Pattern “abc” Compiled pattern exactn 3 a b c operation operation의 arguments (exactn n c1 c2 ... cn : 문자열 상에서 n개의 character c1~cn이 순서대로 매칭되는지 확인) 2019-05-30

컴파일 된 패턴을 이용한 매칭 방법 – ( 1 / 2 ) 라인 단위로 매칭을 수행한다 파일 내 문자열 라인의 앞 부분부터 op를 순서대로 수행하여, 모두 수행에 성공하면 매치된 것으로 간주. Op 수행에 실패하면 다음 location으로 이동한 뒤, op 를 처음부터 다시 순서대로 수행. 파일 내 문자열 t a b c Op exactn을 수행하였으나, 문자열의 ‘t’와 pattern의 ‘a’가 매칭되지 않으므로 다음 location으로 이동 매칭 시작 지점 Compiled pattern exactn 3 a b c operation operation의 arguments 2019-05-30

컴파일 된 패턴을 이용한 매칭 방법 – ( 2 / 2 ) 라인 단위로 매칭을 수행한다 파일 내 문자열 라인의 앞 부분부터 op를 순서대로 수행하여, 모두 수행에 성공하면 매치된 것으로 간주. Op 수행에 실패하면 다음 location으로 이동한 뒤, op 를 처음부터 다시 순서대로 수행. 파일 내 문자열 t a b c 문자열과 pattern의 문자 3개가 순서대로 매칭되므로 Op exactn 수행에 성공 매칭 시작 지점 Compiled pattern exactn 3 a b c operation operation의 arguments 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 1 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 2 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline charset 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 3 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline charset a 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 4 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline charset a, b 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 5 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline charset a, b, c 2019-05-30

컴파일 된 패턴을 만드는 예제1 - for pattern “^[abc]” ( 6 / 6 ) begline : 매칭을 시작한 location이 라인의 가장 앞부분인지 확인 charset c1, c2, ..., cn : 문자열의 문자가 c1, c2, ..., cn 중 하나와 매칭되는지 확인 Pattern ^ [ a b c ] Compiled pattern begline charset a, b, c 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 1 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 2 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 1 a 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 3 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 4 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 5 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 start_memory 2 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 6 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 start_memory 2 exactn 1 c 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 7 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 start_memory 2 exactn 1 c stop_memory 2 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 8 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 start_memory 2 exactn 1 c stop_memory 2 2019-05-30

컴파일 된 패턴을 만드는 예제2 - for pattern “(ab)(c)\1” ( 9 / 9 ) start_memory n : 읽은 문자를 n번 레지스터에 저장하기 시작 stop_memory n : n번 레지스터에 저장하던 동작을 중단 duplicate n : n번 레지스터에 저장된 문자열과 매칭 Pattern ( a b ) ( c ) \ 1 Compiled pattern start_memory 1 exactn 2 a b stop_memory 1 start_memory 2 exactn 1 c stop_memory 2 duplicate 1 2019-05-30

패턴의 컴파일에 실패하는 예제 - for pattern “(ab” (1 / 3) 괄호를 연 뒤 닫지 않아 컴파일 오류가 발생, error 코 드를 리턴 Pattern ( a b Compiled pattern start_memory 1 2019-05-30

패턴의 컴파일에 실패하는 예제 - for pattern “(ab” (2 / 3) 괄호를 연 뒤 닫지 않아 컴파일 오류가 발생, error 코 드를 리턴 Pattern ( a b Compiled pattern start_memory 1 exactn 1 a 2019-05-30

패턴의 컴파일에 실패하는 예제 - for pattern “(ab” (3 / 3) 괄호를 연 뒤 닫지 않아 컴파일 오류가 발생, error 코 드를 리턴 Error : Unmatched ( Pattern ( a b Compiled pattern start_memory 1 exactn 2 a b 2019-05-30