トークン書き込み用クラス

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

TokenWriter.h


//*******************************************************************************************************
// トークンごとに 種類に応じた色指定タグで挟んで出力する
//*******************************************************************************************************
#ifndef TokenWriterH
#define TokenWriterH
//---------------------------------------------------------------------------
#include "TextWriter.h"
#include "Token.h"
//---------------------------------------------------------------------------
class TTokenWriter
{
private:
//出力用クラス
TTextWriter* _writer;

public:
// 初期化
__fastcall TTokenWriter(TTextWriter* writer);
// 終了
__fastcall ~TTokenWriter();
// トークンごとに 種類に応じた色指定タグで挟んで出力する
void __fastcall putToken(TToken* token);
};
#endif

TokenWriter.cpp


//*******************************************************************************************************
// トークンごとに 種類に応じた色指定タグで挟んで出力する
//*******************************************************************************************************
#pragma hdrstop
#include "TokenWriter.h"
//-------------------------------------------------------------------------------------------------------
#pragma package(smart_init)
//-------------------------------------------------------------------------------------------------------
// 初期化
//-------------------------------------------------------------------------------------------------------
__fastcall TTokenWriter::TTokenWriter(TTextWriter* writer)
{
//出力用クラス
_writer = writer;
}
//-------------------------------------------------------------------------------------------------------
// 終了
//-------------------------------------------------------------------------------------------------------
__fastcall TTokenWriter::~TTokenWriter()
{
_writer = NULL;
}
//---------------------------------------------------------------------------------------------------
// Tokenごとに 種類に応じた色指定タグで挟んで出力する
//---------------------------------------------------------------------------------------------------
void __fastcall TTokenWriter::putToken(TToken* token)
{
if (WideSameStr(token->tokenKind, "予約語"))
{
_writer->putString("<SPAN CLASS=\"KEY\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "コメント"))
{
_writer->putString("<SPAN CLASS=\"COM\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "文字列"))
{
_writer->putString("<SPAN CLASS=\"STR\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "文字"))
{
_writer->putString("<SPAN CLASS=\"CHA\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "数字"))
{
_writer->putString("<SPAN CLASS=\"NUM\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "識別子"))
{
_writer->putString("<SPAN CLASS=\"IDW\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "演算子"))
{
_writer->putString("<SPAN CLASS=\"OPE\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "区切り記号"))
{
_writer->putString("<SPAN CLASS=\"DLM\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else if (WideSameStr(token->tokenKind, "ディレクティブ"))
{
_writer->putString("<SPAN CLASS=\"DIR\">");
_writer->putString(token->tokenHtml);
_writer->putString("</SPAN>");
}
else
{
_writer->putString(token->tokenHtml);
}
}