TOKEN
식별자와 예약어는 간단하게, TOKEN 명령을 사용하여 스캔할 수 있다.
TOKEN: { < 토큰명 1 : 정규 표현 1 > | < 토큰명 2 : 정규 표현 2 > | < 토큰명 3 : 정규 표현 3 > -------------------------- | < 토큰명 n : 정규 표현 n > } |
TOKEN { < VOID : “void” > | < CHAR : “char” > | < SHORT : “short” > | < INT : “int” > | < LONG : “long” > | < STRUCT : “struct” > | < UNION: “union” > | < ENUM : “enum” > | < STATIC : “static” > | < EXTERN : “extern” > | < CONST : “const” > | < SIGNED : “signed” > | < UNSIGNED : “unsigned” > | < IF : “if” > | < ELSE : “else” > -------------------------- | < SIZEOF : “sizeof” > }
TOKEN { < IDENTIFIER : [“a”-“z”, “A”-“Z”, “_”] ( [“a”-“z”, “A”-“Z”,“_”, “0”-“9”] )* > } |
고정 문자열 “void”를 발견하면 VOID 라는 토큰을 생성
마찬가지 “char”를 발견하면 CHAR 라는 토큰을 생성
IDENTIFIER의 경우,
첫 번째 문자가 알파벳,밑줄을 만족하고, 두 번째 문자가 알파벳,밑줄,숫자일 경우 토큰을 생성
* 토큰은 먼저 쓰여 있는 토큰의 규칙을 우선으로 한다.
* 따라서 예약어의 규칙은 IDENTIFIER 토큰 규칙보다 앞에 써야 한다.
'잡동사니 > 컴파일러' 카테고리의 다른 글
[컴파일러 구조와 원리] - SKIP (0) | 2015.12.31 |
---|---|
[컴파일러 구조와 원리] - 어휘 해석 (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 파서 제네레이터 (Parser Generator) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 구문 해석( lexical analyze ) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 컴파일의 4단계 (0) | 2015.12.31 |