어휘 해석
JavaCC는 [정규표현(regular expression)] ( 1 ) 기법으로 스캐너를 표현한다.
정규표현식
* JavaCC 는 ‘문자’ .을 ~[] 로 표현한다.
* JavaCC 는 ‘부정’을 ^로 쓰지 않고 ~로 표현한다.
1. 고정문자열
- 문자열 그대로 매칭을 위하여 큰따옴표(“”)로 묶어서 표현.
- ex. “int” 또는 “char”
2. [시퀀스] ( 2 )
- 고정 문자열의 조합. 고정문자열이 단어라면, 시퀀스는 ‘어절’
- “ABC” “XYZ”처럼, 고정 문자열이 연속되는 것. 이 경우 “ABCXYZ”라고 써도 된다.
3. 문자클래스
- 특정 숫자나, 문자를 명확히 표현할 때, [ ]를 이용하여 사용한다.
- [“X”, “Y”, “Z”] 로 표현할 경우, X 또는 Y 또는 Z의 세 개 문자중 하나와 매칭.
- ‘-’을 이용해서 범위 지정 가능하다. [“0”-“9”]의 경우 “0” ~ “9” 까지의 모든 숫자와 매칭.
- 식별자(변수?)는 다음과 같이 표현할 수 있다. [“a”-“z”, “A”-“Z”, “0”-“9”, “_”]
4. 부정 문자클래스
- ‘숫자 이외의 문자 전부’의 경우 ~[] 로 나타낼 수 있다. (경우가 없는 것의 부정 = 모든 문자.)
- ~[“X”, “Y”, “Z”] 는 “X”,“Y”,“Z” 이외의 문자를 나타낸다.
( 1 ) 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용
( 2 ) 단어 : 나/는/밥/을/먹었/다 어절 : 나는/밥을/먹었다
'잡동사니 > 컴파일러' 카테고리의 다른 글
[컴파일러 구조와 원리] - SKIP (0) | 2015.12.31 |
---|---|
[컴파일러 구조와 원리] - TOKEN (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 파서 제네레이터 (Parser Generator) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 구문 해석( lexical analyze ) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 컴파일의 4단계 (0) | 2015.12.31 |