ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터프리터...9
    일지 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('+');

     

    댓글

Designed by Tistory.