일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파싱테이블
- 언어모델
- 벡터
- DB
- 웹소프트웨어
- C언어
- 데이터분석
- 스케줄러
- NLP
- 파싱
- 소프트웨어공학
- 오픈소스웹소프트웨어
- 프로세스
- 애자일
- 클래스
- 836
- Agile
- 정보검색
- 객체지향설계
- React
- 가상메모리
- css
- 컴파일러
- 컴파일
- 운영체제
- OS
- Linear Algebra
- 자연어처리
- 데이터베이스
- 랩실일기
- Today
- Total
observe_db
[컴파일러] 11. 정규언어 본문
type 3: regular Language
정규 문법과 정규 언어
정규 문법 이론: 컴파일러 어휘 분석 과정에서 모형을 만드는데 사용
Type 3 문법
RLG(Right Linear Grammar): A->tB, A->t
LLG(Left Linear Grammar):A->Bt, A->t
여기서 A, B ∈Vn이고, t∈VT*
우선형 형태의 규칙과 좌선형 형태의 규칙이 혼합되어 있으면 정규 문법이 아님.
정의
- 각 생성규칙이 다음과 같을 때 정규문법이라 한다.
- A->aB, A->a, 여기서 a∈VT, A,B ∈VN
- S->ε∈P 이면, S는 오른쪽에 나타나지 않아야 한다.
- 정규 문법에 의해 생성된 A언어는 정규 언어(rl)이다.
- L = {a^nb^m|n, M>=1}은 정규언어
- S->aS|aA
- A->bA|b
- 정규 문법의 생성 형태는 우선형 문법으로부터 유도할 수 있다.
동치관계(Equivalence)
다음 3가지는 모두 같으며 정규언어이다.
- 언어 L은 우선형 문법에 의해 생성
- 언어L은 좌선형 문법에 의해 생성
- 언어 L은 정규 문법에 의해 생성
토큰 구조 정의에 정규 언어를 사용하는 이유
1) 토큰의 구조는 간단하기 때문에 정규 문법으로 표현할 수 있다.
2) context-free 문법보다는 정규 문법으로부터 효율적인 인식기를 쉽게 구현 가능
3) 컴파일러의 전반부를 모듈러하게 나누어 구성할 수 있다.(스캐너+파서)
문법G(정규문법)에서 언어의 표현을 체계적으로 구하여 정규표현 L로 나타낼 수 있다.
정규 표현
: 정규 언어를 표현하기 위한 하나의 방법
: 정규 언어를 상세화하기 위한 방법
1)regular grammar
2)regular expression
3)finite (state) automata
위의 3개는 equivalence
정의
- 기본 소자: ∅, ε, a ∈T
- ∅: 공집합을 나타내는 정규표현
- ε: 집합 {ε}를 나타내는 정규표현
- a ∈T: 집합 {a}를 나타내는 정규 표현
- 순환식: +, ●, *. P와 Q가 정규언어 Lp와 Lq를 나타내는 정규표현이라면
- (P+Q)는 Lp∪Lq를 나타내는 정규표현(union)
- (P●Q)는 Lp●Lq를 나타내는 정규표현(concatenation)
- (P)*은 다음을 나타내는 정규표현(closure): {ε}∪Lp∪Lp2∪Lp3∪Lp4..∪Lpn
- 우선순위 +<●<*
- 이외의 어떤 것도 정규표현이 될 수 없다.
정의: α가 정규표현일 때, L(α)는 α가 나타내는 언어정의: 두개의 정규 표현이 같은 언어를 표현할 때 그 정규표현은 같다.공리<img>
정규표현식: 계수가 정규 표현인 식을 정규 표현이라 한다.X = αX+β(여기서 X는 우측 식이 그 비단말 기호를 생성하는 언어임을 나타냄)(해): 식의 양변에 X=α*β를 대입할 때 각 변이 같은 언어를 나타냄)모든 정규 표현이 유일해를 가지진 않음.
- ε이 α에 속하지 않을 때, X=α*β은 유일해
- ε이 α에 속할 때 X=α*(β+L)는 어떤 언어 L에 대해 유한한 해를 가진다.
주어진 정규 문법 G가 생성하는 언어 L(G)를 나타내는 정규 표현
- L(A)여기서 A ∈VN는 A에 의해 생성된 언어를 나타냄.
- 정의에 따라 S가 시작심벌이면 L(G)=L(S)
- 2STEP
- G로부터 연립방정식을 만들면
- 이식을 풀면 된다.
'학교 공부 > 컴파일러(3-1)' 카테고리의 다른 글
[컴파일러] 최종 프로젝트의 제작. (0) | 2023.05.31 |
---|---|
[컴파일러] 12. 오토마타 (0) | 2023.05.31 |
[컴파일러] 10. 형식언어 (0) | 2023.05.30 |
[컴파일러] Lex 실습 (0) | 2023.04.14 |
[컴파일러] 9. Yacc (0) | 2023.04.14 |