Token の種類を判定する (コメント)

Token の種類を判定する (コメント)

前回は仮に、英字を「予約語」、数字を「その他」、それ以外を「コメント」として
あつかったが、
今回は実際に、「/*」 から 「*/」 までと、「//」から「\n」までを「コメント」として扱う。
それ以外は、「その他」として扱う。


string _state = "その他";
private Token getCurrToken(char cPrev, char cCurr, char cNext)
{
Token currToken = new Token(cCurr.ToString(), "その他");

if (_state == "その他")
{
if (cCurr == '/')
{
if (cNext == '/')
_state = "単一行コメント";
else if (cNext == '*')
_state = "複数行コメント";
else
_state = "その他";
}
else
_state = "その他";

if ((_state == "単一行コメント") || (_state == "複数行コメント"))
currToken.tokenKind = "コメント";

else
currToken.tokenKind = _state;
}

else if (_state == "単一行コメント")
{
currToken.tokenKind = "コメント";

if (cCurr == '\n')
{
currToken.tokenKind = "その他";
_state = "その他";
}
}

else if (_state == "複数行コメント")
{
currToken.tokenKind = "コメント";

if ((cCurr == '/') && (cPrev == '*'))
_state = "その他";
}

return currToken;
}