일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 836
- 언어모델
- 정보검색
- 클래스
- Agile
- 데이터분석
- 운영체제
- React
- NLP
- 스케줄러
- 랩실일기
- 가상메모리
- 벡터
- 컴파일
- 웹소프트웨어
- 데이터베이스
- 자연어처리
- Linear Algebra
- 프로세스
- C언어
- 소프트웨어공학
- OS
- 오픈소스웹소프트웨어
- 파싱테이블
- 파싱
- 객체지향설계
- css
- 컴파일러
- Today
- Total
목록학교 공부/컴파일러(3-1) (15)
observe_db
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 ..
알파벳과 스트링 잘 정의된 언어는 문장으로 구성 알파벳은 문장을 이루는 기본적인 심볼 알파벳: 심벌들의 유한집합 스트링(문장, 단어): 알파벳 T에 속하는 하나 이상의 심벌의 나열 길이: 스트링을 이루는 심벌의 갯수. |ω|로 표시 empty 스트링: 스트링 길이가 0인것. ε또는 λ로 표시 T*: 알파벳 T에 대해서 empty스트링까지 포함한 모든 스트링의 집합 접속(concatenation): 스트링을 연속으로 연결한 것. u●v를 보통 uv로 표기 u=a1a2a3a4...an, v=b1b2b3...bm, u●v=a1a2a3...anb1b2b3...bm uε = u = εu ∀u,v ∈T*, uv∈ T* |uv| = |u| + |v| a^n : n개의 a. 문자 ω의 반전은 문자 ω에 반전표시를 (ω..
4/14 일단 이친구가 예제이다. %{ #defineIF100 #defineID101 #defineRELOP102 #defineLE201 int yylval, tok; %} delim[ \t\n] ws{delim}+ letter[A-Za-z] digit[0-9] id{letter}({letter}|{digit})* %% {ws}(/*do nothing */} if{yylval = 0; return(IF); } {id}{yylval = install_id(); return(ID); } "
4/13 Yet Another Compiler-Compiler(YACC) : CFG(Context-Free Grammar)와 각 문법에 해당하는 명령(Action)을 받아 프로그램 생성 Lex와 Yacc의 모델 파서 액션 (LR Parser): shift reduce, accept, error shift: 파서는 어휘 분석기를 호출하여 토큰을 가져오고 이를 stack에 push reduce: rule에서 제공한 사용자 코드 실행. return한 후 reduction이 수행(stack의 handle이 축소되어 LHS의 비단말 기호로 변경) 스택이 현 상태를 유지하면서 value stack은 어휘 분석기와 규칙들과 관련된 동작들로부터 값을 가지며 평행하게 작동. 입력 명세 declarations//(선언) ..