Parsing

Park Jae Hong·2022년 7월 25일
0

정규표현식

: 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단

정규표현식 사용법

  • ^ : 문자열의 시작을 표현한다. [ ... ] 내부에서 쓰이는 경우라면 뒤의 패턴에 일치하지 않는 것을 선택한다.

  • ^http : 문자열이 http로 시작하는 경우에만 매치하며, 중간에 나타난 http에는 매치하지 않는다.
    ab[^0-9]: “ab” 뒤에 숫자가 아닌 것이 오는 것에만 매치한다. (“abc” – O, “ab1” – X)

  • $ : 문자열의 끝을 표현한다.

  • them$ : 문자열이 “them”으로 끝난 경우에만 해당 “them”에 매치한다.

  • \b : 단어의 경계. 문자열 시작과 끝, 공백, 개행, 탭, 콤마, 구두점, 대시문자 등이 올 수 있다.

  • \bplay\b : 는 단어 경계로 구분되는 “play”에는 매치한다. 하지만 “playground”의 “play”에는 매치하지 않는다.

  • \B : \b가 아닌것. 정규식 메타문자에서는 흔히 대문자로 표현한 것은 소문자로 표현한 문자의 반대를 의미한다.

  • \bplay\B : “play”뒤에 단어의 경계가 아닌 것이 올 때에만 매치한다. “playground”, “playball”의 “play”에 매치한다. 뒤에 오는 “g”, “b” 등의 문자는 포함하지 않는다.

  • \s : 공백 문자 및 탭 문자에 매치한다.

  • \S : 공백 문자가 아닌 한 글자에 매치한다.

  • \d : 숫자에 매치한다. [0-9]와 같다.

  • \D : 숫자가 아닌 문자에 매치한다. [^0-9]와 같다.

  • \w : 단어를 만들 수 있는 글자. 알파벳 대소문자, 숫자, 언더스코어를 포함한다. [A-Za-z0-9_] 와 같다.

  • \W : \w에 포함되지 않는 문자들

  • \n : 개행문자. \r은 캐리지 리턴이다.

  • \ : 이스케이프용 문자. 정규식 상의 특별한 의미가 있는 문자들을 문자 그대로 쓸 때 앞에 붙인다. \^ 라고 쓰면 “^” 문자 그대로를 가리킨다.

  • . : 아무 문자 1개에 대응된다. 공백 역시 문자 1개로 취급된다.

❗대문자 소문자는 반대의 의미를 가진다 !


Tokenizer

: 토크나이저란 어떤 구문에서 의미있는 요소들을 토큰으로 쪼개는 역할을 하고 렉서는 토큰의 의미를 분석하는 역할을 한다.

자신만의 토큰 기준을 정해서 구현한다 !


Lexer

: Tokenizer, Lexer 의 역할을 합하여 Lexical anlyze라고 한다. Lexical Analyze란 의미 있는 조각을 검출하여 토큰을 생성하는 것을 말한다.

lexer 설계


Parser

: Parser는 Lexical analyze 되어 토큰화된 데이터를 가지고 그것을 구조적으로 나타낼 수 있게 해준다. 또한 데이터를 구조적으로 바꾸는 과정에서 데이터가 올바른지 검증을 수행한다. 대부분의 인터프리터와 컴파일러에서 소스코드를 구조적으로 나타내는 자료구조로 AST를 사용한다.
Lexer 를 통해 생성만 배열을 json 형식으로 바꾸어서 파싱한다.


참조 : https://opentutorials.org/course/909/5142 ,
https://velog.io/@mu1616/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-%EC%9D%B4%EB%A1%A0%EC%97%90%EC%84%9C-%ED%86%A0%ED%81%AC%EB%82%98%EC%9D%B4%EC%A0%80Tokenizer-%EB%A0%89%EC%84%9CLexer-%ED%8C%8C%EC%84%9CParse-%EC%9D%98-%EC%97%AD%ED%95%A0

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글