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

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

TokenWriter.vb


'*******************************************************************************************************
' トークンごとに 種類に応じた色指定タグで挟んで出力する
'*******************************************************************************************************
Public Class TokenWriter
'出力用クラス
Private _writer As Writer
'----------------------------------------------------------------------------------------------------
' 初期化
'----------------------------------------------------------------------------------------------------
Public Sub New(ByVal aWriter As Writer)
'出力用クラス
_writer = aWriter
End Sub
'----------------------------------------------------------------------------------------------------
' 終了
'----------------------------------------------------------------------------------------------------
Protected Overrides Sub Finalize()
_writer = Nothing
End Sub
'----------------------------------------------------------------------------------------------------
' Tokenごとに 種類に応じた色指定タグで挟んで出力する
'----------------------------------------------------------------------------------------------------
Public Sub putToken(ByVal aToken As Token)
Select Case aToken.tokenKind
Case "予約語"
_writer.putString("<SPAN CLASS=""KEY"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "コメント"
_writer.putString("<SPAN CLASS=""COM"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "文字列"
_writer.putString("<SPAN CLASS=""STR"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "文字"
_writer.putString("<SPAN CLASS=""CHA"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "数字"
_writer.putString("<SPAN CLASS=""NUM"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "識別子"
_writer.putString("<SPAN CLASS=""IDW"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "演算子"
_writer.putString("<SPAN CLASS=""OPE"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "区切り記号"
_writer.putString("<SPAN CLASS=""DLM"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case "ディレクティブ"
_writer.putString("<SPAN CLASS=""DIR"">")
_writer.putString(aToken.tokenHtml)
_writer.putString("</SPAN>")

Case Else
_writer.putString(aToken.tokenHtml)
End Select
End Sub
End Class