langsmith:185
From: MORI Koichiro <kmori lsi-j.co.jp>
Date: Tue, 12 Apr 2005 18:34:36 +0900
Subject: [langsmith:185] Re: 自作言語とパーサー
森ともうします。 At Tue, 12 Apr 2005 17:45:54 +0900, machida,tatsuhiko <t.machida.unicom jcom.home.ne.jp> wrote: > > > 普通の文法であればジェネレータを使うほうがよいと思います。ハ > > ンドメイドのパーサーはメンテナンスが大変です。ただ、文法がS > > パーサージェネレーターって一般的なんですね。 > なんとなくアカデミックなツールというイメージがありました。 ツール自体はそんなにむずかしいものではありません。 私は、コンパイラ本体の実装の前にまずパーサージェネレータを作ったという 経験もあります(笑)。 ただし、正しい(曖昧でない)文法を書き下せるようになるには少し時間がかか ります。最初のころはshift/reduce, reduce/reduce conflictの山と格闘する、 という経験が必要でしょう。 > ただ、パーサジェネレーターは遅いというイメージがあります。 > ANTLRのC#パーサーを使ってみたのですが...ちょっと重かった覚えがあります。 > なんというか、 O(n^2)の臭いがしました。 少なくともyaccはそんなに遅いことはありません。 gccも、yacc族の中では遅いといわれているbisonを使っていますが、十分高速 ですね。 > ソースコードが長くなると、使い物にならなくなるのでは....? LRパーサにせよLLパーサにせよ、ソースコード全体の長さをnとすれば計算量 はおおむねO(n)といっていいでしょう。 というか、ソースコードの長さの自乗に比例するパーシングアルゴリズムって 思いつきませんが。文法定義のサイズの自乗というのならわかりますが。 -- 森 公一郎 (MORI Koichiro) -- ML: langsmith quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
174 2005-04-11 15:58 [t.machida.unicom jco] langsmithへの参加願います。 175 2005-04-11 22:50 ┗[matz ruby-lang.org ] 176 2005-04-12 10:28 ┗[t.machida.unicom jco] 自作言語とパーサー 177 2005-04-12 11:08 ┣[shiro lava.net ] 178 2005-04-12 11:54 ┃┗[t.machida.unicom jco] 180 2005-04-12 16:20 ┃ ┗[shiro lava.net ] 182 2005-04-12 18:07 ┃ ┗[t.machida.unicom jco] 186 2005-04-12 20:08 ┃ ┗[shiro lava.net ] 179 2005-04-12 14:03 ┗[matz ruby-lang.org ] 181 2005-04-12 17:45 ┗[t.machida.unicom jco] 183 2005-04-12 18:12 ┣[matz ruby-lang.org ] 188 2005-04-12 23:55 ┃┗[maeda-langsmith atus] -> 185 2005-04-12 18:34 ┗[kmori lsi-j.co.jp ] 187 2005-04-12 20:12 ┣[shiro lava.net ] 189 2005-04-13 10:02 ┗[t.machida.unicom jco] 191 2005-04-13 13:45 ┗[kmori lsi-j.co.jp ] 192 2005-04-13 14:19 ┗[t.machida.unicom jco]