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

[컴파일러 구조와 원리] - TOKEN

by 2KB 2015. 12. 31.

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 토큰 규칙보다 앞에 써야 한다.