ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터프리터...15
    일지 2020. 11. 13. 02:07

    토큰 처리 실행 예제

     

    test.txt

    if dt <= 100
        dt = (a + 200) * b
    else
        dt = 300
    end
    
    print "dt=", dt

     

    Tokenizer.cpp

    #include "Tokenizer.h"
    
    int main(int argc, char *argv[])
    {
    	if (argc < 2)
    	{
    		exit(1);
    	}
    
    	ifs.open(argv[1]);
    	if (!ifs.is_open())
    	{
    		exit(1);
    	}
    
    	InitializeCharTypeTable();
    
    	std::cout << std::setw(5) << "text" << std::setw(17) << "kind" << std::setw(7) << "intVal" << '\n';
    
    	Token token = NextToken();
    	while (token.tokenKind != TokenKind::EndOfToken)
    	{
    		std::cout << std::setw(5) << token.text <<
    			std::setw(17) << TokenKindToString(token.tokenKind) <<
    			std::setw(7) << token.intValue << '\n';
    
    		token = NextToken();
    	}
    }

     

    실행 결과

     text             kind intVal
       if               If      0
       dt       Identifier      0
       <=        LessEqual      0
                       Int    100
       dt       Identifier      0
        =           Assign      0
        (  LeftParenthesis      0
        a       Identifier      0
        +             Plus      0
                       Int    200
        ) RightParenthesis      0
        *         Multiply      0
        b       Identifier      0
     else             Else      0
       dt       Identifier      0
        =           Assign      0
                       Int    300
      end              End      0
    print            Print      0
      dt=           String      0
        ,            Comma      0
       dt       Identifier      0

     

    댓글

Designed by Tistory.