字句解析器半分完成
なでしこの文法に従って、トークンに切り分けるところは出来ました。
まだ予約語を識別子と分けるとか、例外クラスとか色々書けてませんが。
で、一応動くので試しに動かしてみたんですが……遅いです。それはもう遅いです。
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(); } } }