티스토리 뷰
< 나오는 용어 >
- Lex
- Yacc
- What is Lex & Yacc
- Write Lex
- Operator character
What is Lex & Yacc
- Lex
Lex 는 Lexical Analyzer ( Scanner ) 생성기이다. input 으로 RE로 구성된 source specification 과 Program fragements 를 받아서 Output 으로 Program 이 나온다.
쉽게 말해서 어떤 형식에 따라 RE를 기술해주면, 그것에 맞는 C코드 파일이 Output 으로 나온다. RE 에 대한 것이 Output으로 나오므로, 스캐너를 만들어준다고 생각하면 편하다.
- Yacc
Lex 가 Scanner 를 만들어준다면 Yacc 은 parser 를 만들어준다. Scanner 에 의해서 만들어진 token 들이 Yacc으로 만든 parser 에 들어간다.
Write Lex
- Lex format
Lex format 은 위 사진처럼 구성되어있다. 3개의 section ( def / rules / user.. ) 으로 구성되어 있고 각 section 을 %% 로 구분한다. def 과 user 는 생략가능하지만, rules 는 반드시 기술되어 있어야한다. 따라서 첫번째 %% 는 반드시 존재해야 한다.
Definition
- 매크로 정의
ex. DIGIT [0-9] : [0-9] 를 rules 에서 DIGIT 로 쓰겠다.
- Import header files
Rules
- 왼쪽에는 RE 가 오른쪽에는 action 이 적힌다.
User subroutines
- 그대로 복사되는 부분이다.
Operator character
- Operator character
- [] : character 클래스 ex. [abc] : a ,b or c
- - : 범위 ex. [a-z] : a,b,c,....z
- ^ : not
- \ : ASCII 코드로 표현한 것을 의미 ex. [\40-\176] : 아스키코드 40번~176번
- ? : optional (선택) ex. [ab?c] : ab or abc
- ( ) : 그룹화
- ^ : 문장 시작 ※ ^ 가 class ( = [ ] ) 안에 있으면 not 의 의미를 가지고, 밖에있으면 문장 시작의 의미를 갖는다.
- $ : 문장 종료
- { } : { } 안에 기술된 것을 def 에서 찾으라는 뜻이다
'전공 > 컴파일러' 카테고리의 다른 글
8. Context Free Grammar (0) | 2023.04.30 |
---|---|
6. Lexical analysis (어휘 분석) (0) | 2023.04.03 |
5. Pumping Lemma (0) | 2023.03.27 |
4. Finite Automata (1) | 2023.03.21 |
3. Regular expression (0) | 2023.03.21 |
- Total
- Today
- Yesterday
- 전송계층프로토콜
- 컴파일러
- Instnat-ngp
- CUDA VISUAL STUDIO 2022 지원
- 셀룰러네트워크
- 비동기전송모드
- 인터넷프로토콜
- 설계 원리
- 아키텍처 설계
- NGP-ERROR
- ATM
- Instant-NGP
- Regular Expression
- 소프트웨어 공학
- 컴퓨터네트워크
- 디자인 패턴
- Proper CFL
- 혼잡제어
- Transition Function
- Extension to Regular Expression
- lan
- Compiler
- 클래스 모델링
- 소프트웨어공학
- 회선교환
- ngp 오류
- 인터네트워크
- 백준 2437
- Ambiguity
- ngp 실행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |