字句解析器半分完成

なでしこの文法に従って、トークンに切り分けるところは出来ました。
まだ予約語を識別子と分けるとか、例外クラスとか色々書けてませんが。
で、一応動くので試しに動かしてみたんですが……遅いです。それはもう遅いです。
gnako.nakoを読み込むのに10秒ぐらいかかりました。
出来れば1秒以内にしたいですねぇ。
とりあえず現状のソースを置いときますね。
nako_lexer.cs 67kbyte
 
実行コードはこちら。

using System;
using System.IO;
using System.Text;
using Nadesiko.Lexer;

namespace LexerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            TLexer lexer = new TLexer();
            string fname = @"C:\Program Files\programming\nadesiko\lib\gnako.nako";
            FileStream fs =new FileStream(fname, FileMode.Open);
            lexer.Start(fs, TTextEncodes.SJIS);
            foreach (TToken tok in lexer)
                Console.WriteLine("{0} {1} {2}", tok.line, tok.pos, tok.ToString());
            fs.Close();
        }
    }
}