色をCSSで指定する

色をCSSで指定する

これまで、色の指定を

<FONT COLOR="xxx">AAA</FONT>

という形で行ってきたが、CSSで以下のように定義しておき

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="ja">
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html;charset=shift_jis">
        <style type="text/css">
        <!--
            PRE SPAN.KEY{color:BLUE;}  /* 予約語         */
            PRE SPAN.IDW{color:BLACK;} /* 識別子         */
            PRE SPAN.STR{color:RED;}   /* 文字列         */
            PRE SPAN.CHA{color:BLACK;} /* 文字           */
            PRE SPAN.NUM{color:BLACK;} /* 数字           */
            PRE SPAN.COM{color:GREEN;} /* コメント       */
            PRE SPAN.OPE{color:BLACK;} /* 演算子         */
            PRE SPAN.DLM{color:BLACK;} /* 区切り記号     */
            PRE SPAN.DIR{color:BLUE;}  /* ディレクティブ */
        -->
        </style>
    </HEAD>

    <BODY>
<PRE>

ソース部分では以下のように指定する。

<SPAN CLASS="xxx">AAA</SPAN>


public void tohtml(Reader reader, Writer writer)
{
//ファイルの終わりまで、1区切りずつ読んで
Token token;
while((token = getToken(reader)) != null)
{
//文字列の種類に応じた色指定タグで挟んで出力する
if (token.tokenKind == "予約語")
{
writer.putString("<SPAN CLASS=\"KEY\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "コメント")
{
writer.putString("<SPAN CLASS=\"COM\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "文字列")
{
writer.putString("<SPAN CLASS=\"STR\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "文字")
{
writer.putString("<SPAN CLASS=\"CHA\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "数字")
{
writer.putString("<SPAN CLASS=\"NUM\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "識別子")
{
writer.putString("<SPAN CLASS=\"IDW\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "演算子")
{
writer.putString("<SPAN CLASS=\"OPE\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "区切り記号")
{
writer.putString("<SPAN CLASS=\"DLM\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else if (token.tokenKind == "ディレクティブ")
{
writer.putString("<SPAN CLASS=\"DIR\">");
writer.putString(token.tokenString);
writer.putString("</SPAN>");
}
else
{
writer.putString(token.tokenString);
}
}
}