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

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

TokenReaderPlsql.pas


//*******************************************************************************************************
// トークンごとに 文字列と その種類を返す (PL/SQL 用)
//*******************************************************************************************************
unit TokenReaderPlsql;

interface
uses
TokenReaderNoCase, TextReader;

type
TTokenReaderPlsql = class(TTokenReaderNoCase)

protected
function IsComSingle():Boolean;override;
function IsEscape():Boolean;override;
function IsNotHex():Boolean;override;

procedure getNextStateIdwEsc();override;

public
constructor Create(reader:TTextReader; langType:string);override;
end;

implementation
//---------------------------------------------------------------------------------------------------
// 初期化
//---------------------------------------------------------------------------------------------------
constructor TTokenReaderPlsql.Create(reader:TTextReader; langType:string);
begin
inherited Create(reader, langType);
end;
//---------------------------------------------------------------------------------------------------
// 単一行コメントか?
//---------------------------------------------------------------------------------------------------
function TTokenReaderPlsql.IsComSingle():Boolean;
begin
result := ((_context.currChar = '-') and (_context.nextChar = '-'));
end;
//---------------------------------------------------------------------------------------------------
// エスケープされた識別子か?
//---------------------------------------------------------------------------------------------------
function TTokenReaderPlsql.IsEscape():Boolean;
begin
result := (_context.currChar = '"');
end;
//---------------------------------------------------------------------------------------------------
// 16進表記か?
//---------------------------------------------------------------------------------------------------
function TTokenReaderPlsql.IsNotHex():Boolean;
begin
result := true;
end;
//---------------------------------------------------------------------------------------------------
// 状態を更新 (エスケープされた識別子)
//---------------------------------------------------------------------------------------------------
procedure TTokenReaderPlsql.getNextStateIdwEsc();
begin
inherited getNextStateIdwEsc();

if (Length(_context.currToken.tokenString) > 1) then
begin
if ((_context.currToken.tokenString[1] = '"') and (_context.currChar = '"')) then
_context.State := 'その他';
end;
end;

end.