-
인터프리터...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
더보기참고문헌