일지

인터프리터...9

niamdank 2020. 10. 31. 11:51

문자 종류 표 설정

식별자에서 사용 가능한 문자를 확인하는 방식 중 하나로 배열에 허용되는 문자를 저장해두는 방식으로 이를 통해 문자가 허용되는 문자인지 여부와 어떤 종류의 문자인지 파악할 수 있다.

 


예를 들어 문자 a~z A~Z가 허용되고 _를 영문자의 일부로 본다면 다음과 같이 설정할 수 있다.

enum TokenKind
{
	Letter,
};

TokenKind charType[256];
void Initialize()
{
	for (int i = 'a'; i <= 'z'; i++)
	{
		charType[i] = TokenKind::Letter;
	}
	for (int i = 'A'; i <= 'Z'; i++)
	{
		charType[i] = TokenKind::Letter;
	}

	charType['_'] = TokenKind::Letter;
}

 

※ 추가로 더 많은 종류의 문자를 지원하려면 TokenKind에 종류를 추가하고 해당하는 문자를 문자 종류 표에 추가하면 된다.


 

또한, 어떤 토큰이 단독으로 사용될 수 있는 경우엔 TokenKind에 종류를 추가할 때 해당하는 문자로 값을 설정해주면 표현력을 향상할 수 있다.

 


+와 -가 추가되는 경우 다음과 같이 문자 종류 표를 설정한다.

enum TokenKind
{
	Plus = '+',
	Minus = '-',
};

TokenKind charType[256];
void Initialize()
{
	charType['+'] = Plus;
	charType['-'] = Minus;
}

 

이후 토큰을 사용할 때 다음과 같이 사용할 수 있게 된다.

UseToken(Plus); 
UseToken('+');