본문 바로가기

_스타디

컴파일러_스캐너

반응형

1. 스캐닝 과정 ( 어휘 분석 )

원시프로그램을 문자파일로 읽어들여서 의미를 갖는 최소의 논리단위로 구분한다.

이러한 논리적 단위는 컴파일러의 파서 단계에서 사용되고 이들을 토큰이라고 한다.

토큰에 의해서 표현되는 문자열을 lexeme라고 한다.

 

토큰 식별

파서 요청에 의해 인식한 토큰을 하나씩 넘겨주는게 일반적.

 

a [ index ] = 4 + 2


정규 표현식 ( Regular Expression )

문자열의 패턴을 표현한다. 

정규표현식(r)은 r의 패턴과 매칭하는 문자열들의 집합으로 정의되며 , 이 집합은 r이 생성하는 언어라 부르며 이를 L(r)이라고 표현한다.

알파벳에 속한 단일문자 a

L(a) = {a}, where a  

앞에 a는 패턴

뒤에 a 는 문자

입실론(e) : 빈 문자열 - 문자를 포함하지 않음.

∮ - 문자열을 포함하지 않음, 어떤 문자열과도 매칭X

|  - 선택

없으면 접합문자

* - 반복(closure)

L(r | s) = L(r) ∪ L(s) : 정규표현식 r과 s 중 선택하기

L(r s) = L(r) L(s) : 정규표현식 r과 s의 연결 ( concatenation )

r* : r 은 정규식 , r과 매칭되는 문자열의 임의 유한번 접합과 매칭.

 

정규표현식 연산 우선순위
반복 > 연결 > 선택

우선순위를 바꾸고 싶을 때 --> 괄호 사용.

 

니가 ? 하면 어쩌라고 모르겠는데요

완벽히 이해한 DFA(유한 오토마타)

s0는 DFA가 동작을 시작할 start state를 뜻함. F는 DFA가 동작을 종료할 마지막 state.

final state는 원 안에 원이 하나 더 있다.

이렇게 결과를 표로 정리할 수 도 있다.

DFA는 한 상태에서 특정 input을 보고 전이될 수 있는 상태가 하나뿐이다.

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moonsoo5522&logNo=220697122343

반응형