トークン読み込み用クラス (PL/SQL用)

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

TokenReaderPlsql.h


//*******************************************************************************************************
// トークンごとに 文字列と その種類を返す ( PL/SQL用 )
//*******************************************************************************************************
#ifndef TokenReaderPlsqlH
#define TokenReaderPlsqlH
//---------------------------------------------------------------------------
#include "TokenReaderNoCase.h"
//---------------------------------------------------------------------------
class TTokenReaderPlsql : public TTokenReaderNoCase
{
protected:
// 単一行コメントか?
bool __fastcall IsComSingle();
// エスケープされた識別子か?
bool __fastcall IsEscape();
// 16進表記か?
bool __fastcall IsNotHex();
// 状態を更新 (エスケープされた識別子)
void __fastcall getNextStateIdwEsc();

public:
// 初期化
__fastcall TTokenReaderPlsql(TTextReader* reader, AnsiString langType);
};
#endif

TokenReaderPlsql.cpp


//*******************************************************************************************************
// トークンごとに 文字列と その種類を返す ( PL/SQL用 )
//*******************************************************************************************************
#pragma hdrstop
#include <vcl.h>
#include "TokenReaderPlsql.h"
//-------------------------------------------------------------------------------------------------------
#pragma package(smart_init)
//-------------------------------------------------------------------------------------------------------
// 初期化
//-------------------------------------------------------------------------------------------------------
__fastcall TTokenReaderPlsql::TTokenReaderPlsql(TTextReader* reader, AnsiString langType):TTokenReaderNoCase(reader, langType)
{
}
//-------------------------------------------------------------------------------------------------------
// 単一行コメントか?
//-------------------------------------------------------------------------------------------------------
bool __fastcall TTokenReaderPlsql::IsComSingle()
{
return ((_context->currChar == '-') && (_context->nextChar == '-'));
}
//-------------------------------------------------------------------------------------------------------
// エスケープされた識別子か?
//-------------------------------------------------------------------------------------------------------
bool __fastcall TTokenReaderPlsql::IsEscape()
{
return (_context->currChar == '\"');
}
//-------------------------------------------------------------------------------------------------------
// 16進表記か?
//-------------------------------------------------------------------------------------------------------
bool __fastcall TTokenReaderPlsql::IsNotHex()
{
return true;
}
//-------------------------------------------------------------------------------------------------------
// 状態を更新 (エスケープされた識別子)
//-------------------------------------------------------------------------------------------------------
void __fastcall TTokenReaderPlsql::getNextStateIdwEsc()
{
TTokenReaderNoCase::getNextStateIdwEsc();

if (wcslen(_context->currToken->tokenString) > 1)
{
if ((_context->currToken->tokenString[1] == '\"') && (_context->currChar == '\"'))
_context->State = "その他";
}
}