본문 바로가기
잡동사니/컴파일러

[컴파일러 구조와 원리] - 어휘 해석

by 2KB 2015. 12. 31.

어휘 해석

JavaCC는 [정규표현(regular expression)] ( 1 ) 기법으로 스캐너를 표현한다.

 

정규표현식

 

위키피디아 - 정규표현식

 

* JavaCC 는 문자’ .을 ~[] 로 표현한다.

* JavaCC 는 부정을 ^로 쓰지 않고 ~로 표현한다.

 

1. 고정문자열

문자열 그대로 매칭을 위하여 큰따옴표(“”)로 묶어서 표현.

- ex. “int” 또는 “char”

 

2. [시퀀스] ( 2 ) 

고정 문자열의 조합고정문자열이 단어라면시퀀스는 어절

- “ABC” “XYZ”처럼고정 문자열이 연속되는 것이 경우 “ABCXYZ”라고 써도 된다.

 

3. 문자클래스

특정 숫자나문자를 명확히 표현할 때, [ ]를 이용하여 사용한다.

- [“X”, “Y”, “Z”] 로 표현할 경우, X 또는 또는 Z의 세 개 문자중 하나와 매칭.

- ‘-’을 이용해서 범위 지정 가능하다. [“0”-“9”]의 경우 “0” ~ “9” 까지의 모든 숫자와 매칭.

식별자(변수?)는 다음과 같이 표현할 수 있다. [“a”-“z”, “A”-“Z”, “0”-“9”, “_”]

 

4. 부정 문자클래스

- ‘숫자 이외의 문자 전부의 경우 ~[] 로 나타낼 수 있다. (경우가 없는 것의 부정 모든 문자.)

 

- ~[“X”, “Y”, “Z”] 는 “X”,“Y”,“Z” 이외의 문자를 나타낸다.

 

( 1 ) 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용

( 2 )  단어 ////먹었/다 어절 나는/밥을/먹었다