トークン クラス

これまでC# で作成してきた「SourceToHTML」を、VC++.NET に焼きなおしてみます。

Token.h


#pragma once

namespace SourceToHtml
{
using namespace System;
//*******************************************************************************************************
// トークン情報クラス
//*******************************************************************************************************
public __gc class Token
{
public:
String* tokenString;// トークンの文字列
String* tokenKind; // トークンの種類
bool IsFixed; // 確定済みか

// 初期化
Token(String* argString, String* argKind);
// 終了
~Token();
// "<", ">", "&", "(", "), "|" を変換
__property String* get_tokenHtml();
};
}

Token.cpp


#include "StdAfx.h"
#include ".\Token.h"

namespace SourceToHtml
{
//*******************************************************************************************************
// トークン情報クラス
//*******************************************************************************************************
//-------------------------------------------------------------------------------------------------------
// 初期化
//-------------------------------------------------------------------------------------------------------
Token::Token(String* argString, String* argKind)
{
tokenString = argString;
tokenKind = argKind;
IsFixed = false;
}
//-------------------------------------------------------------------------------------------------------
// 終了
//-------------------------------------------------------------------------------------------------------
Token::~Token()
{
}
//-------------------------------------------------------------------------------------------------------
// "<", ">", "&", "(", "), "|" を変換
//-------------------------------------------------------------------------------------------------------
String* Token::get_tokenHtml()
{
String* htmlString = "";
for (int i=0;i<tokenString->Length;i++)
{
Char c = tokenString->Chars[i];

if (c == '<') htmlString = String::Concat(htmlString, S"&#x3C;");
else if (c == '>') htmlString = String::Concat(htmlString, S"&#x3E;");
else if (c == '&') htmlString = String::Concat(htmlString, S"&#x26;");
else if (c == '(') htmlString = String::Concat(htmlString, S"&#x28;"); //はてな
else if (c == ')') htmlString = String::Concat(htmlString, S"&#x29;"); //はてな
else if (c == '|') htmlString = String::Concat(htmlString, S"&#x7C;"); //はてな
else htmlString = String::Concat(htmlString, Char::ToString(c));
}

return htmlString;
}
}