일지
인터프리터...15
niamdank
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
더보기