일지
인터프리터...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('+');
더보기