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

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

TokenReaderPsql.h


#pragma once

#include ".\TokenReaderNoCase.h"

namespace SourceToHtml
{
using namespace System;
//*******************************************************************************************************
// トークンごとに 文字列と その種類を返す ( PL/SQL用 )
//*******************************************************************************************************
public __gc class TokenReaderPlsql : public TokenReaderNoCase
{
protected:
// 単一行コメントか?
bool IsComSingle();
// エスケープされた識別子か?
bool IsEscape();
// 16進表記か?
bool IsNotHex();
// 状態を更新 (エスケープされた識別子)
void getNextStateIdwEsc();

public:
// 初期化
TokenReaderPlsql(Reader* reader, String* langType);
// 終了
~TokenReaderPlsql();
};
}

TokenReaderPsql.cpp


#include "StdAfx.h"
#include ".\TokenReaderPlsql.h"

namespace SourceToHtml
{
//*******************************************************************************************************
// トークンごとに 文字列と その種類を返す ( PL/SQL用 )
//*******************************************************************************************************
//-------------------------------------------------------------------------------------------------------
// 初期化
//-------------------------------------------------------------------------------------------------------
TokenReaderPlsql::TokenReaderPlsql(Reader* reader, String* langType):TokenReaderNoCase(reader, langType)
{
}
//-------------------------------------------------------------------------------------------------------
// 終了
//-------------------------------------------------------------------------------------------------------
TokenReaderPlsql::~TokenReaderPlsql()
{
}
//-------------------------------------------------------------------------------------------------------
// 単一行コメントか?
//-------------------------------------------------------------------------------------------------------
bool TokenReaderPlsql::IsComSingle()
{
return ((_context->currChar == '-') && (_context->nextChar == '-'));
}
//-------------------------------------------------------------------------------------------------------
// エスケープされた識別子か?
//-------------------------------------------------------------------------------------------------------
bool TokenReaderPlsql::IsEscape()
{
return (_context->currChar == '\"');
}
//-------------------------------------------------------------------------------------------------------
// 16進表記か?
//-------------------------------------------------------------------------------------------------------
bool TokenReaderPlsql::IsNotHex()
{
return true;
}
//-------------------------------------------------------------------------------------------------------
// 状態を更新 (エスケープされた識別子)
//-------------------------------------------------------------------------------------------------------
void TokenReaderPlsql::getNextStateIdwEsc()
{
TokenReaderNoCase::getNextStateIdwEsc();

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